• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]ID3 Tags lesen und schreiben

Hallo,
Ich würde gerne wissen ob jemand ein Konsole-Programm kennt mit dem man die ID3 Tags lesen und schreiben kann?

Hintergrund ist folgender:
Im laufe der Jahre haben sich tausende von MP3 Dateien auf meinen diversen Medien gesammelt und ich war zu lange zu faul die Tags zu bearbeiten bzw. überhaupt anzulegen.
Nun möchte ich damit beginnen und möglichst viele, am besten ganze Verzeichnisse, zu bearbeiten ohne jedoch jede Einzelne Datei öffnen zu müssen um nachzusehen ob überhaupt ein Tag vorhanden ist oder nicht.

Folgendes wäre nötig:
  • Durchforsten aller im Verzeichnis befindlichen MP3-Files auf vorhandene oder nicht vorhandene Tag-Einträge
    Auflisten aller Dateien in denen kein solcher Vorhanden ist.
    Anzeigen des (leeren) Tag-Inhalts in einem Dialog den man dann befüllen kann.
    weiter wäre eine Automatisierung über ein bash-Script schön wo ich beispielsweise sagen kann das alle Dateien in Ordner X die Jahreszahl 19xx erhalten sollen.
    Gleiches mit anderen Feldern.

Sozusagen suchen & ersetzen
  • find $Künstler; write $Name des Interpreten
    find $Erstellungsdatum; write $Datum
    find $Albumname; write $Albumname
    usw.

lieben Gruß aus Hessen
 
id3v2

id3v2 --help
Usage: id3v2 [OPTION]... [FILE]...
Adds/Modifies/Removes/Views id3v2 tags, modifies/converts/lists id3v1 tags
 
Hallo drcux,

drcux schrieb:
id3v2
Usage: id3v2 [OPTION]... [FILE]...
hmm gibt es da ein Beispiel irgendwo wie das da sein soll. So in der Art:
Code:
id3v2 -a Trio -A Großenkneten -t Da Da Da -c kein Kommentar -y 1983 -T 10 Trio - Da Da Da.mp3
Dann kann ich das auch gleich mit einem grafischen Programm einzeln bearbeiten.
Gefunden habe ich diese beiden hier: eyed3, kid3 wobei ich gar nicht verstehe wie ich eyed3d starten muss.
kid3 sieht schon mal sehr viel versprechend aus, aber ob ich damit per batch arbeiten kann muss ich noch sehen.

lieben Gruß aus Hessen
 
Darauf achten, das zwischen der Option und dem Wert kein Leerzeichen kommt:

id3v2 -a"kuenstler" -t"titel" "blah.mp3"
 
Bei mp3blaster war immer ein ganz gutes Tool "mp3tag" dabei.

Wenn Du 'eh ein Skript schreiben willst, würde sich eins in Perl anbieten. Dafür gibt es auch ein paar Module (wenn Du kein externes Tool aufrufen willst).
 
Hallo,

K4m1K4tz3 schrieb:
Wenn es grafisch sein soll: easyTag
grafisch gibt es ja schon eine ganze Menge, aber ich möchte ja eine Batch-Bearbeitung automatisieren, weil es ca. 12.000 Dateien sind.
Ein Programm/Script das im angegebenen Verzeichnis nach MP3-Dateien sucht und nacheinander jeden ID3-Tag in einer Dialogbox öffnet und mich den gegebenenfalls editieren lässt.
Dann ein weiter-Button um zum nächsten Titel zu kommen.
Für bestimmte Dateigruppen möchte ich pauschal 70,80 oder 90 als Jahreszahl angeben ohne aber jeden ID3-Tag erst öffnen zu müssen.
Die Jahreszahl ist ja leider oft die in welcher der Titel gerippt wurde und nicht der wann er tatsächlich erschienen ist.
Bei gerippten Schallplatten ist meist gar kein ID3-Tag vorhanden.
Bestimmte Inhalte in den ID3-Tag sollen auch in einem Rutsch gelöscht/überschrieben werden.
Ich denke nur das man dies mit einem Konsolen-Programm und passendem Script schneller bewältigen kann als grafisch.
Auch Coverbilder einbinden wäre auch schön aber nicht oberste Priorität weil es sicher bedeutend mehr Mühe ist.
BTW: sind die Coverbilder nun in der Datei gespeichert oder nur ein Link wo es zu finden ist?
Auf meinem Handy habe ich bei manchen Liedern Coverbilder obwohl ich natürlich nicht online gehe mit dem Gerät.

lieben Gruß aus Hessen
 
Hallo,
drcux schrieb:
Darauf achten, das zwischen der Option und dem Wert kein Leerzeichen kommt:

id3v2 -a"kuenstler" -t"titel" "blah.mp3"
aber prinzipiell wäre mein Beispielaufbau der richtige Weg das Programm zu füttern?!

lieben Gruß aus Hessen
 
Hallo,
abgdf schrieb:
Bei mp3blaster war immer ein ganz gutes Tool "mp3tag" dabei.
Sieht nicht gut aus:
Code:
#### YaST2 conflicts list - generated 2010-09-18 02:21:22 ####
mp3blaster-3.2.5-1.pm.2.1.i586 benötigt libsidplay.so.1, was aber nicht angeboten werden kann
Nicht installierbare Anbieter: libsidplay1-1.36.59-140.1.i586[repo-oss]
    [ ] mp3blaster-3.2.5-1.pm.2.1.i586 nicht installieren
    [ ] libsidplay1-1.36.59-140.1.i586 trotz der nachrangigen Architektur installieren
    [ ] mp3blaster auflösen durch das Ignorieren einiger Abhängigkeiten
#### YaST2 conflicts list END ###
abgdf schrieb:
Wenn Du 'eh ein Skript schreiben willst, würde sich eins in Perl anbieten. Dafür gibt es auch ein paar Module (wenn Du kein externes Tool aufrufen willst).
Ich kann gar nicht programmieren, aber dachte das es mit einem bash-Script irgendwie schon klappt.

lieben Gruß aus Hessen
 
Versuche mal kid3 ruhig aus. Script ist damit zwar nicht möglich (soweit ich das sehe), Du kannst aber auch über mehrere Dateien ID3-Tacks verändern, also ganze Ordner etc. Wenn Deine Dateien regelmäßig benannt sind, kannst Du auch über die Dateinamenerkennung alles in einem Rutsch benennen. Das Ganze jeweils für ID3v1 und ID3v2 und natürlich dann auch in Unicode.

Micha :-D
 
Herz-von-Hessen schrieb:
BTW: sind die Coverbilder nun in der Datei gespeichert oder nur ein Link wo es zu finden ist?

Die Bilder werden in der Datei gespeichert.

harley schrieb:
Du kannst aber auch über mehrere Dateien ID3-Tacks verändern, also ganze Ordner etc. Wenn Deine Dateien regelmäßig benannt sind, kannst Du auch über die Dateinamenerkennung alles in einem Rutsch benennen. Das Ganze jeweils für ID3v1 und ID3v2 und natürlich dann auch in Unicode.

Kann easyTag auch ;-)
 
Ich will nun doch versuchen ein Script zu machen um mit dem Programm id3v2 in Verbindung mit Dialog zu arbeiten.
Meine Kenntnisse sind da eher dürftig, so sieht mein Script dann auch bisher nur so aus:
Code:
#!/bin/bash
#######################################################################
# Titel               : id3v3 - id3v2 mit Dialogen
# Author              : Herz-von-Hessen {herz-von-hessen@yahoo.de}
# Datum               : 2010-11-01
# Benoetigt folgendes : Dialog, id3v2, cat, grep, sed, awk
# Kategorie           : Shell-Menue-Tools
#######################################################################
# Beschreibung:
#   Dieses Script soll die Bearbeitung von id3-Tags in einer reinen
#   Konsolen-Umgebung vereinfachen.
#   Dabei baut das Script auf id3v2 und Dialog auf.
#   http://id3v2.sourceforge.net
#   http://hightek.org/dialog
#
#   Hinweis:
#   - Dieses Script ist noch im Aufbau und noch nicht einsatzfähig -
#######################################################################

# Das Hauptmenü
# Hier sollte nun eine Dateiauswahl erscheinen und die TAGs aller MP3-Files
# im aktuellen Verzeichnis nacheinander in einem Dialog anzeigen

dialog --backtitle "id3v2r1 - MP3-Tags mit Dialog in der Konsole bearbeiten" 17 60 10
        Home_Menue "oeffnet Dateien in \$HOME zur Auswahl"\
        Quit "Pprogramm beenden" 2>$_temp
        
    opt=${?}
    if [ $opt != 0 ]; then rm $_temp; exit; fi

     menuitem=`cat $_temp`
    echo "menu=$menuitem"
    case $menuitem in
        Home_Menu) file_menu;;
        Quit) rm $_temp; exit;;
    esac
}

while true; do
  main_menu
done

"Dateiname" "vollständiger Name der Datei"\
"Kennung" "ID3-Kennung" \
"Titel"  "Titel des Stueckes" \
"Interpret" "Interpret(en) des Stueckes \
"Album" "Album von dem der Titel stammt"
"Jahr" "Das Jahr in dem der Titel erschienen ist"
"Kommentar" "beliebiger Kommentar"
"Genre" "Welchen Stil gehoert der Titel an"
"Cancel" "abbrechen"
"" "Menue abbrechen" 2> /tmp/menu.tmp.$$

       retval=$?

       choice=`cat /tmp/menu.tmp.$$`
       rm -f /tmp/menu.tmp.$$
       setterm -clear

       case $retval in
         1)
           echo "Cancel pressed.";;
         255)
           echo "ESC pressed.";;
       esac

if      [ "$choice" = "Titel" ];  then id3v2 -l $Dateiname|grep "Title  :"|cut -d ":" -f2|cut -d " " -f2 > /tmp/titel.dialog
# hier sollte nun eine Dialog-Edit-Box mit der Ausgabe erscheinen und mich den Titel editieren lassen, anschliessend muss dieser Text
# auch in der Datei gespeichert werden
dialog --inputbox "Titel des Stueckes" 0 0 2> /tmp/titel.dialog
# aber das klappt irgendwie nicht
exit 1
elif    [ "$choice" = "Interpret" ]; then id3v2 -l $Dateiname|grep "Artist: "|cut -d ":" -f3 > /tmp/interpret.dialog
# hier sollte dann eine Dialog-Edit-Box mit der Ausgabe erscheinen und mich den Interpreten editieren lassen, anschliessend muss dieser Text
# auch in der Datei gespeichert werden
dialog --inputbox "Interpret eingeben" 0 0 2> /tmp/interpret.dialog
exit 1
elif    [ "$choice" = "Album" ]; then id3v2 -l $Dateiname|grep "Album  :"|cut -d ":" -f2 > /tmp/album.dialog
# hier sollte dann eine Dialog-Edit-Box mit der Ausgabe erscheinen und mich den Album-Namen editieren lassen, anschliessend muss dieser Text
# auch in der Datei gespeichert werden
dialog --inputbox "Interpret eingeben" 0 0 2> /tmp/album.dialog
exit 1
elif    [ "$choice" = "Jahr" ]; then id3v2 -l $Dateiname|grep "Year: "|cut -d ":" -f3|cut -d "," -f1 > /tmp/jahr.dialog
# hier eine Dialog-Edit-Box mit der Jahreszahl, falls vorhanden (wenn nicht dann leer).......
dialog --inputbox "Interpret eingeben" 0 0 2> /tmp/jahr.dialog
exit 1
elif    [ "$choice" = "Kommentar" ]; then id3v2 -l $Dateiname|grep "Comment: "|tr -s " "|awk -F"Track:" '{ print $1 }'|cut -d ":" -f2 > /tmp/kommentar.dialog
# hier eine Dialog-Edit-Box mit dem Koommentar, falls vorhanden (wenn nicht dann ein leerer Eingabe-Dialog) speichern usw.
dialog --inputbox "Interpret eingeben" 0 0 2> /tmp/kommentar.dialog
exit 1
elif    [ "$choice" = "Genre" ]; then id3v2 -l $Dateiname|grep grep "Genre: "|cut -d ":" -f4|cut -d "," -f2|cut -d "(" -f1 > /tmp/genre.dialog
# hier eine Dialog-Edit-Box mit dem Genre, falls vorhanden (wenn nicht dann natürlich wieder ein leerer Eingabe-Dialog) mit speichern usw.
dialog --inputbox "Interpret eingeben" 0 0 2> /tmp/genre.dialog
exit 1
elif    [ "$choice" = "Cancel" ]; then echo "Vorgang abgebrochen."
exit 1
fi
exit 0
done
echo "Fertig."

Kann Dialog denn nicht mit Eingaben aus der Pipe bzw. über die Temp-Files umgehen oder habe ich da was wichtiges vergessen??
lieben Gruß aus Hessen
 
Oben