Skript zum Umbenennen nach UTF-8-Zeichen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 19:09:30

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.

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von tobo » 01.04.2023 19:28:28

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:

Code: Alles auswählen

i=0; for f in *; do i=$((i+1)); mv "$f" $i; done
Das benennt alle Dateien in einem Verzeichnis zu einer fortlaufenden Nummer um. Mit Dateiendung kann das dann so aussehen:

Code: Alles auswählen

i=0; for f in *.mp3; do i=$((i+1)); mv "$f" $i.mp3; done
Für mehr Informationen fehlen mehr Informationen.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 19:36:25

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.

schwedenmann
Beiträge: 5613
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von schwedenmann » 01.04.2023 19:40:14

Hallo


Konkret geht es darum, dass Musiktitel mit kyrillischen Zeichen nicht angezeigt werden.
Sollen weiterhin kyrillische Zeichen erscheinen ?

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

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 20:09:36

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.

schwedenmann
Beiträge: 5613
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von schwedenmann » 01.04.2023 20:37:15

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

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 20:47:37

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

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 21:40:16

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.

chrbr
Beiträge: 623
Registriert: 29.10.2022 15:53:26

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von chrbr » 01.04.2023 22:15:00

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.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 01.04.2023 22:47:59

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.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 02.04.2023 10:00:15

Hm, ganz so einfach ist es wohl dich nicht.

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=
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.

schwedenmann
Beiträge: 5613
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von schwedenmann » 02.04.2023 10:12:00

Hallo

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.
Das Problem ist

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

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 02.04.2023 10:19:13

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.

schwedenmann
Beiträge: 5613
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von schwedenmann » 02.04.2023 10:22:24

Hallo
Dafür ist z.B. id3iconv zuständig - sehe ich mir an.
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.

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

chrbr
Beiträge: 623
Registriert: 29.10.2022 15:53:26

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von chrbr » 02.04.2023 10:32:00

Wahrscheinlich kommt man mit luit aus Debianx11-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.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 02.04.2023 11:42:07

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.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 02.04.2023 18:41:35

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.

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von Huo » 03.04.2023 08:55:43

rohodeb hat geschrieben: ↑ zum Beitrag ↑
02.04.2023 18:41:35
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.
Mit dem Python-Modul Unidecode bekomme ich es testweise hin.

Code: Alles auswählen

for file in $(ls -1); do mv $file $(unidecode -c $file); done
nennt die Dateien

Code: Alles auswählen

AB_Рахманинов_123.txt
Мусоргский_345_XY.txt
in

Code: Alles auswählen

AB_Rakhmaninov_123.txt
Musorgskii_345_XY.txt
um (vorher alle Dateien im Verzeichnis sicherheitshalber sichern).

Ich habe unidecode allerdings via pip installiert:

Code: Alles auswählen

python3 -m pip install --user unidecode
Ob das Debian-Paket Debianpython3-unidecode den entsprechenden Kommandozeilen-Befehl mitbringt, weiß ich nicht.
Zuletzt geändert von Huo am 03.04.2023 11:42:35, insgesamt 1-mal geändert.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 03.04.2023 09:23:59

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.

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von tobo » 03.04.2023 09:38:33

Huo hat geschrieben: ↑ zum Beitrag ↑
03.04.2023 08:55:43

Code: Alles auswählen

for file in $(ls -1); do mv $file $(unidecode -c $file); done
Warum diese Form des Iterierens keine gute Idee ist (gerade auch wegen dem gezeigten Beispiel) und wie es besser geht:
https://mywiki.wooledge.org/BashPitfall ... .2A.mp3.29

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 03.04.2023 10:28:15

Aha, Du meinst also die Formen der Schleifenbildungen!

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von JTH » 03.04.2023 10:54:01

Huo hat geschrieben: ↑ zum Beitrag ↑
03.04.2023 08:55:43
Ob das Debian-Paket Debianpython3-unidecode den entsprechenden Kommandozeilen-Befehl mitbringt, weiß ich nicht.
In der Liste der enthaltenen Dateien ist es nicht. Man sollte es aber als Modul ausführen können:

Code: Alles auswählen

python3 -m unidecode -c FILE
Das geht meist, wenn es zu einem Python-Modul ein gleichnamiges Kommandozeilenwerkzeug gibt.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von MSfree » 03.04.2023 11:17:07

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.

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von Huo » 03.04.2023 11:26:20

tobo hat geschrieben: ↑ zum Beitrag ↑
03.04.2023 09:38:33
Huo hat geschrieben: ↑ zum Beitrag ↑
03.04.2023 08:55:43

Code: Alles auswählen

for file in $(ls -1); do mv $file $(unidecode -c $file); done
Warum diese Form des Iterierens keine gute Idee ist (gerade auch wegen dem gezeigten Beispiel) und wie es besser geht:
https://mywiki.wooledge.org/BashPitfall ... .2A.mp3.29
Besten Dank für den Hinweis und den instruktiven Link! :THX: Ich lerne gerne aus meinen Fehlern.

Mit find würde ich es so lösen:

Code: Alles auswählen

find . -type f -name "*" -exec sh -c 'mv "{}" "$(unidecode -c "{}")"'  \;
Da ich bislang mit find relativ selten Erfahrungen sammeln konnte, bin ich natürlich auch hier für eventuelle Korrekturen dankbar.

rohodeb
Beiträge: 144
Registriert: 27.11.2020 09:33:45

Re: Skript zum Umbenennen nach UTF-8-Zeichen

Beitrag von rohodeb » 03.04.2023 12:10:32

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.

Antworten