Skript zum Umbenennen nach UTF-8-Zeichen
Skript zum Umbenennen nach UTF-8-Zeichen
Hallo allerseits,
ich habe ein kleines Problemchen bzw. Fragestellung - vielleicht könnt Ihr mir helfen.
Auf meinem Musik-Player befinden sich Audio-Dateien, die im Player nicht angezeigt werden. Laut Handbuch könnte es daran liegen, dass die Zeichen nicht UTF-8-kodiert sind.
Konkret geht es darum, dass Musiktitel mit kyrillischen Zeichen nicht angezeigt werden.
Kann man ein Skript erstellen, das eine mehrere Dateien in einem Rutsch umbenennt? Ich möchte natürlich nicht jeden Titel einzeln umbenennen. Am liebsten wäre mit ein BASH-Skript.
Oder gibt es bereits ein fertiges Tool?
Vielen Dank für Eure Unterstützung.
ich habe ein kleines Problemchen bzw. Fragestellung - vielleicht könnt Ihr mir helfen.
Auf meinem Musik-Player befinden sich Audio-Dateien, die im Player nicht angezeigt werden. Laut Handbuch könnte es daran liegen, dass die Zeichen nicht UTF-8-kodiert sind.
Konkret geht es darum, dass Musiktitel mit kyrillischen Zeichen nicht angezeigt werden.
Kann man ein Skript erstellen, das eine mehrere Dateien in einem Rutsch umbenennt? Ich möchte natürlich nicht jeden Titel einzeln umbenennen. Am liebsten wäre mit ein BASH-Skript.
Oder gibt es bereits ein fertiges Tool?
Vielen Dank für Eure Unterstützung.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
rename würde man zum kontrollierten umbenennen verwenden. Da du aber wohl nur stumpf den Namen loswerden willst, kannst du in einer Schleife hochzählen und mit mv umbenennen:
Das benennt alle Dateien in einem Verzeichnis zu einer fortlaufenden Nummer um. Mit Dateiendung kann das dann so aussehen:
Für mehr Informationen fehlen mehr Informationen.
Code: Alles auswählen
i=0; for f in *; do i=$((i+1)); mv "$f" $i; done
Code: Alles auswählen
i=0; for f in *.mp3; do i=$((i+1)); mv "$f" $i.mp3; done
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Danke für die Antwort.
Ja, das reine Umbenennen ist ja nicht das Problem.
Problem ist, dass der Player den vorhandenen Dateinamen nicht anzeigen kann. Ich würde schon gern die Titelnamen sehen. Die Kodierung ist wohl der Knackpunkt.
Ja, das reine Umbenennen ist ja nicht das Problem.
Problem ist, dass der Player den vorhandenen Dateinamen nicht anzeigen kann. Ich würde schon gern die Titelnamen sehen. Die Kodierung ist wohl der Knackpunkt.
-
- Beiträge: 5619
- Registriert: 30.12.2004 15:31:07
- Wohnort: Wegberg
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo
Wenn ja,was soll dann das einfache umbennen bringen ?
Wie zeigt der playxer den/die) titela an ?
Aus dem dateinamen, oder dem titel aus den id3 tags ?
Wenn letzeres derFall ist, einige id3 Versioenn können kein utf8
Ev. würde dann ein Konvertierung der tags nach utf16 helfen.
mfg
schwedenmann
Sollen weiterhin kyrillische Zeichen erscheinen ?Konkret geht es darum, dass Musiktitel mit kyrillischen Zeichen nicht angezeigt werden.
Wenn ja,was soll dann das einfache umbennen bringen ?
Wie zeigt der playxer den/die) titela an ?
Aus dem dateinamen, oder dem titel aus den id3 tags ?
Wenn letzeres derFall ist, einige id3 Versioenn können kein utf8
Ev. würde dann ein Konvertierung der tags nach utf16 helfen.
mfg
schwedenmann
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Nein, reines Umbenennen ist nicht gewollt. Die kyrillischen Zeichen sollen natürlich bleiben.
Die Titel haben jetzt ein Format wie "01 - xxx.mp3". Angezeigt werden " 01 - .mp3". Die kyrillischen Zeichen "xxx" werden ignoriert. Genauso ist es bei Ordner- bzw. Künstlernamen.
Die Titel haben jetzt ein Format wie "01 - xxx.mp3". Angezeigt werden " 01 - .mp3". Die kyrillischen Zeichen "xxx" werden ignoriert. Genauso ist es bei Ordner- bzw. Künstlernamen.
-
- Beiträge: 5619
- Registriert: 30.12.2004 15:31:07
- Wohnort: Wegberg
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo
Um welchen player handelt es sich ?
Ich würde dann erst mal rausfinden,welche id3-tags -version vom player genutt wird.
Das Problem das dürfte dann an der Kodierung der id3-tags liegen.
mfg
schwedenmann
Um welchen player handelt es sich ?
Ich würde dann erst mal rausfinden,welche id3-tags -version vom player genutt wird.
Das Problem das dürfte dann an der Kodierung der id3-tags liegen.
mfg
schwedenmann
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo schwedenmann,
es handelt sich um den Dodosoul M800 Bluetooth 5.2.
Wie könnte man die id3-tag-Version herausfinden? Und dann natürlich, wie ändern bzw. umkodieren?
Gruß,
rohodeb
es handelt sich um den Dodosoul M800 Bluetooth 5.2.
Wie könnte man die id3-tag-Version herausfinden? Und dann natürlich, wie ändern bzw. umkodieren?
Gruß,
rohodeb
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Das Problem scheint es öfter zu geben.
Hier https://wiki.ubuntuusers.de/Zeichensatz-Konverter/ wurde ich fündig. Mit confmv könnte es funktionieren - werde ich mir morgen mal ansehen.
Hier https://wiki.ubuntuusers.de/Zeichensatz-Konverter/ wurde ich fündig. Mit confmv könnte es funktionieren - werde ich mir morgen mal ansehen.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Mit bekannter Eingangskodierung könnte auch iconv hilfreich sein. Es ist kein eigenes Paket. Das ist auch nur ein Vorschlag falls dein aktueller Pfad eine Sackgasse sein sollte.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Ja, chrbr, hier scheinen "wir" auf dem richtigen Weg zu sein.
Wie geschrieben - teste ich morgen. Convmv hat ja als Standardbefehl die Testfunktion inne.
Danke allen für die bisherige Hilfe.
Wie geschrieben - teste ich morgen. Convmv hat ja als Standardbefehl die Testfunktion inne.
Danke allen für die bisherige Hilfe.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hm, ganz so einfach ist es wohl dich nicht.
Mein locale gibt mir folgendes aus:
Das heißt, auf meinem System ist UTF-8 bereits eingestellt - die Dateinamen sind bereits richtig kodiert. Und convmv hat nichts zu tun.
Wie könnte es nun weitergehen? Wichtig ist mir, dass die Ordner- und Dateinamen richtig angezeigt werden.
Mein locale gibt mir folgendes aus:
Code: Alles auswählen
$ locale
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
Wie könnte es nun weitergehen? Wichtig ist mir, dass die Ordner- und Dateinamen richtig angezeigt werden.
-
- Beiträge: 5619
- Registriert: 30.12.2004 15:31:07
- Wohnort: Wegberg
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo
a. der Dateiname, also meinlied.mp3
b. die tags von meinlied.mp3 sind nicht utf8
wobei ich im Moment nicht weiß,wie man das festellen kann ob im Dateinamen utf-8 verwendet wird, file jedenfalls ist bei *.mp3 nicht hilfreich
mfg
schwedenmann
Das Problem istDas heißt, auf meinem System ist UTF-8 bereits eingestellt - die Dateinamen sind bereits richtig kodiert. Und convmv hat nichts zu tun.
Wie könnte es nun weitergehen? Wichtig ist mir, dass die Ordner- und Dateinamen richtig angezeigt werden.
a. der Dateiname, also meinlied.mp3
b. die tags von meinlied.mp3 sind nicht utf8
wobei ich im Moment nicht weiß,wie man das festellen kann ob im Dateinamen utf-8 verwendet wird, file jedenfalls ist bei *.mp3 nicht hilfreich
mfg
schwedenmann
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo schwedenmann,
danke für die Antwort.
aha, dann geht es in diese Richtung. Dafür ist z.B. id3iconv zuständig - sehe ich mir an.
Das dauert leider etwas, da ich nicht nicht den ganzen Tag am Rechner verbringen kann. Aber ich kümmere mich.
danke für die Antwort.
aha, dann geht es in diese Richtung. Dafür ist z.B. id3iconv zuständig - sehe ich mir an.
Das dauert leider etwas, da ich nicht nicht den ganzen Tag am Rechner verbringen kann. Aber ich kümmere mich.
-
- Beiträge: 5619
- Registriert: 30.12.2004 15:31:07
- Wohnort: Wegberg
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo
Ich hab ein meinen Recherchen nur das tools id3edit gefunden
https://github.com/rstemmer/id3edit
Wede das heute mal insatlieren und dann mal sehen,was das alles anzeigt.
mfg
schwedenmann
damit kannst du aber afaik nicht erkennen,ob die id3tags utf8 kodiert sind,oder in welcher kodierung die id3tags sind! Es zeigt dir höchtens die verwendete id3-version an.Dafür ist z.B. id3iconv zuständig - sehe ich mir an.
Ich hab ein meinen Recherchen nur das tools id3edit gefunden
https://github.com/rstemmer/id3edit
Wede das heute mal insatlieren und dann mal sehen,was das alles anzeigt.
mfg
schwedenmann
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Wahrscheinlich kommt man mit luit aus x11-utils weiter. Mit l uit kann man einer Applikation eine anderes Endcoding als die auf dem Host unterjubeln. Ich hatte das mal einige Zeit in Verwendung, um mutt auf einem ISO-8859 System eine UTF-8 Umgebung vorzutäuschen.
Mit richtig geratener Codierung von den tags sollte man dann in dem Anzeigetool plötzlich lesbare Texte bekommen. Convmv wäre möglicherweise ein geeignetes Anzeigetool. Beispiele für Aufrufe sind in der man page von luit beschrieben.
Mit richtig geratener Codierung von den tags sollte man dann in dem Anzeigetool plötzlich lesbare Texte bekommen. Convmv wäre möglicherweise ein geeignetes Anzeigetool. Beispiele für Aufrufe sind in der man page von luit beschrieben.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Wieder ein neuer Ansatz, danke für die Antwort.
Ich habe sowohl unter meinem Debian, als auch unter Windows neue Ordner erstellt, deren Namen lateinische und kyrillische Zeichen enthalten. In diese Ordner habe ich dann die entsprechenden Titel der Alben kopiert.
Aber: Angezeigt werden nur die lateinischen Zeichen - die kyrillischen werden ignoriert.
Ich fragte mich sowieso, warum nicht einmal die Ordnernamen richtig angezeigt werden. Die Ordnernamen haben ja nichts mit den ID3-Tags der Musiktitel zu tun. Vielleicht kann der Player das einfach nicht.
Dann stellt sich natürlich die Frage, ob andere Player das können.
Ich habe sowohl unter meinem Debian, als auch unter Windows neue Ordner erstellt, deren Namen lateinische und kyrillische Zeichen enthalten. In diese Ordner habe ich dann die entsprechenden Titel der Alben kopiert.
Aber: Angezeigt werden nur die lateinischen Zeichen - die kyrillischen werden ignoriert.
Ich fragte mich sowieso, warum nicht einmal die Ordnernamen richtig angezeigt werden. Die Ordnernamen haben ja nichts mit den ID3-Tags der Musiktitel zu tun. Vielleicht kann der Player das einfach nicht.
Dann stellt sich natürlich die Frage, ob andere Player das können.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
So, nun habe ich wieder etwas recherchiert.
Anscheinend ist das wirklich ein allgemeines Problem oder einfach ein Zustand. Diese Geräte können diese Zeichen einfach nicht darstellen.
Das, was man machen kann, ist, sowohl Dateinamen und Tags zu transkribieren - also umzuschreiben. Dafür gibt es wohl geeignete Software oder Skripte. Noch konnte ich aber kein passendes finden. Muss ich wohl noch etwas suchen.
Anscheinend ist das wirklich ein allgemeines Problem oder einfach ein Zustand. Diese Geräte können diese Zeichen einfach nicht darstellen.
Das, was man machen kann, ist, sowohl Dateinamen und Tags zu transkribieren - also umzuschreiben. Dafür gibt es wohl geeignete Software oder Skripte. Noch konnte ich aber kein passendes finden. Muss ich wohl noch etwas suchen.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Mit dem Python-Modul Unidecode bekomme ich es testweise hin.rohodeb hat geschrieben:02.04.2023 18:41:35Das, was man machen kann, ist, sowohl Dateinamen und Tags zu transkribieren - also umzuschreiben. Dafür gibt es wohl geeignete Software oder Skripte. Noch konnte ich aber kein passendes finden. Muss ich wohl noch etwas suchen.
Code: Alles auswählen
for file in $(ls -1); do mv $file $(unidecode -c $file); done
Code: Alles auswählen
AB_Рахманинов_123.txt
Мусоргский_345_XY.txt
Code: Alles auswählen
AB_Rakhmaninov_123.txt
Musorgskii_345_XY.txt
Ich habe unidecode allerdings via pip installiert:
Code: Alles auswählen
python3 -m pip install --user unidecode
Zuletzt geändert von Huo am 03.04.2023 11:42:35, insgesamt 1-mal geändert.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Hallo Huo,
danke für die Mühe.
Das sieht schon mal gut und auch elegant aus, weil im Script nicht erst irgendwelche Transkriptregeln erstellt werden. Das erledigt wohl Unidecode.
Ansonsten habe ich herausgefunden, dass es wohl MP3-Tag-Editoren gibt, die auch helfen könnten - aber unter Windows. Eine Bearbeitung des Dateinamens ist wohl auch möglich. Ich würde das aber natürlich gern unter Linux erledigen. Und da nutze ich bisher nur EasyTag.
danke für die Mühe.
Das sieht schon mal gut und auch elegant aus, weil im Script nicht erst irgendwelche Transkriptregeln erstellt werden. Das erledigt wohl Unidecode.
Ansonsten habe ich herausgefunden, dass es wohl MP3-Tag-Editoren gibt, die auch helfen könnten - aber unter Windows. Eine Bearbeitung des Dateinamens ist wohl auch möglich. Ich würde das aber natürlich gern unter Linux erledigen. Und da nutze ich bisher nur EasyTag.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Warum diese Form des Iterierens keine gute Idee ist (gerade auch wegen dem gezeigten Beispiel) und wie es besser geht:Huo hat geschrieben:03.04.2023 08:55:43Code: Alles auswählen
for file in $(ls -1); do mv $file $(unidecode -c $file); done
https://mywiki.wooledge.org/BashPitfall ... .2A.mp3.29
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Aha, Du meinst also die Formen der Schleifenbildungen!
Re: Skript zum Umbenennen nach UTF-8-Zeichen
In der Liste der enthaltenen Dateien ist es nicht. Man sollte es aber als Modul ausführen können:Huo hat geschrieben:03.04.2023 08:55:43Ob das Debian-Paket python3-unidecode den entsprechenden Kommandozeilen-Befehl mitbringt, weiß ich nicht.
Code: Alles auswählen
python3 -m unidecode -c FILE
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Ich werfe einfach mal AnyAscii in die Runde, das zum Transliterieren von Schriftzeichen gedacht ist.
https://github.com/anyascii/anyascii
Ob das jetzt irgendwie hilft, weiß ich natürlich nicht.
https://github.com/anyascii/anyascii
Ob das jetzt irgendwie hilft, weiß ich natürlich nicht.
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Besten Dank für den Hinweis und den instruktiven Link! Ich lerne gerne aus meinen Fehlern.tobo hat geschrieben:03.04.2023 09:38:33Warum diese Form des Iterierens keine gute Idee ist (gerade auch wegen dem gezeigten Beispiel) und wie es besser geht:Huo hat geschrieben:03.04.2023 08:55:43Code: Alles auswählen
for file in $(ls -1); do mv $file $(unidecode -c $file); done
https://mywiki.wooledge.org/BashPitfall ... .2A.mp3.29
Mit find würde ich es so lösen:
Code: Alles auswählen
find . -type f -name "*" -exec sh -c 'mv "{}" "$(unidecode -c "{}")"' \;
Re: Skript zum Umbenennen nach UTF-8-Zeichen
Ja, danke für den Tipp.
Ich bin auch nicht sehr fit in diesen Dingen, kann mich auch nicht sehr oft damit beschäftigen - meistens nur dann, wenn es einen konkreten Fall gibt. So wie jetzt.
Ich bin auch nicht sehr fit in diesen Dingen, kann mich auch nicht sehr oft damit beschäftigen - meistens nur dann, wenn es einen konkreten Fall gibt. So wie jetzt.