MP3s mittels Skript ordnen

freak96

Ensign
Registriert
Aug. 2010
Beiträge
194
Hallo zusammen,
gibt es Tools (oder gerne auch Bordmittel von Ubuntu) mit denen man die ID3Tags einer MP3datei auslesen (und in Variablen zur Weiterverarbeitung speichern) kann?
Hintergrund: Ich suche nach einer halbwegs einfachen Möglichkeit meine Mp3-Sammlung auf einem Fileserver zu organisieren. Sie sollen dort im Format %Interpret% - %Album%/%Interpret% - %Titel%.mp3 abgelegt werden.
 
Hallo,

bei Linux Distributionen muss ich leider passen. Solltest du allerdings mit einem beliebigen Windows System ebenso Zugriff (für diesen Zweck) auf die MP3 Files haben, so kann ich dir den MP3Tag Editor nur ans Herz legen.

Er liest / editiert (auch Abgleich mittels FreeDB) / schreibt Tags und ist in der Lage die Dateinamen über die vorhandenen Tags in jeder Weise zu generieren (du selbst legst das Format fest).

http://www.mp3tag.de/index.html

Die Aufgaben lassen sich auch programmintern als "Batch" etc defnieren und beliebig oft starten / wiederholen.
 
Ich wuerde ganz einfach auf shell-Ebene mit id3v2 die Tags auslesen, mit grep, und sed (awk) die entsprechenden Eintraege rausfiltern im Skript als Variable speichern und dann das ganze umbenennen.

so z.B.

Code:
 TITLE = $(id3v2 --list blabla.mp3 |grep Title |sed ...)  
...
mv blabla.mp3 $TITLE-$ARTIST.mp3

usw.
 
@SonyXP: Ich habe sämtliche Dateien bereits mit MP3Tag bearbeitet. Es wäre mir aber neu, wenn man damit auch besagte Ordnerstruktur erzeugen könnte.
@xone92: Werd ich mal ausprobieren, danke :)
 
"aptitude search mp3" ergab bei der Suche folgendes Tool:
p mp3rename - Umbenennung von mp3-Dateien aufgrund der id3-Tags

Das könnte genau das sein, was du suchst...
 
Wenn ich mal an Vektors Vorschlag anknüpfe hab ich ersteinmal noch zwei generelle Linux fragen:
Wenn ich meinetwegen alle *.Mp3 aus den Verzeichnis /Input einlesen will, wie prüfe ich, ob es überhaut *.Mp3s gibt?
while [-d /input/*.mp3]; funktioniert nicht.
Gibt es bei mkdir ein Paramter, dass ein Verzeichnis nur anlegt, wenn es nicht existiert?
 
if (test [ -d $verzeichnis ]); then
echo Verzeichnis existiert
else
mkdir $verzeichnis
echo Verzeichnis erstellt
fi


So in etwa. Ich habe das jetzt nicht überprüft.
 
freak96 schrieb:
Wenn ich meinetwegen alle *.Mp3 aus den Verzeichnis /Input einlesen will, wie prüfe ich, ob es überhaut *.Mp3s gibt?

mach doch einfach

Code:
for i in $(find /input -name '*.mp3' ); do ...

Dann klappert das Skript saemtliche mp3s ab. Und sind keine da, so macht er auch nichts ;)
 
freak96 schrieb:
@SonyXP: Ich habe sämtliche Dateien bereits mit MP3Tag bearbeitet. Es wäre mir aber neu, wenn man damit auch besagte Ordnerstruktur erzeugen könnte.

Doch, das funktioniert, wenn mich mein altes Hirn nicht enttäuscht ;) - über den Menüpunkt "Tag - Dateiname". Anschließend definierst du per Strings (etwa %artist% - %album%\%_filename%), die Ordner-/Dateistruktur (ordner und dateiname mit "\" trennen)
 
Code:
cd /Input
FILE=$(find  -name '*.mp3' )
TITLE=$(id3v2 --list  $FILE|grep Title |cut -d ":" -f1 )
ARTIST=$(id3v2 --list  $FILE|grep Artist |cut -d ":" -f1 )
Eine klitzekleine Frage hät ich noch :)
Und zwar bekomme ich ohne das |cut auch sämtliche Infos angezeigt, egal was ich bei |grep suche.
Mit Cut wiederum sind die Strings immer leer
 
Zurück
Oben