| |
|
| |
Diese Seite ist optimiert für eine Auflösung von min. 1280x1024.
|
|
|

Da ich oft MP3s im random-Mode auf einem MP3-Player höre und auch oft z.B. Live-Alben habe bei denen die Titel einzeln gespeichert sind (ich diese aber auch bei random nacheinander hören will), habe ich mir dafür ein kleines Linux-Shellscript gebaut. Dieses führt MP3s zusammen, komprimiert sie und schreibt das id3-Tag nachträglich rein, so wie der Ordner heisst. Man braucht dazu die Programme mp3wrap (zusammenführen), mid3v2 (id3-Tags auslesen und schreiben) und lame (Kompression ändern).

- Das Script liest aus dem Ordner alle Dateien mit der Endung "mp3" aus.
- Dann wird ein Ordner angelegt und alle gefundenen Dateien werden dorthin kopiert.
- Danach werden alle Dateien zu einer zusammengeführt mittels mp3wrap.
- Anschliessend wird die erzeugte Datei neu komprimiert.
- Zum Schluss wird dann noch das id3-Tag geschrieben.

Das Script an sich sieht so hier aus:
#!/bin/bash
# Dieses Script fuert mehrere MP3s zusammen zu einem und
# aendert die Qualitaet auf die gewuenschte ab.
#Ordnernamen fuers temporaere umkopieren und resampeln
NEW='new';
#Pruefen, ob Ordner fuer tmp existiert
if [ -e "./$NEW" ]; then
echo "";
echo "";
echo "Verzeichnis $NEW existiert bereits mit folgendem Inhalt:"
ls -1 ./$NEW;
echo "";
echo "Ordner mit Inhalt loeschen und neu anlegen? (y/N)";
read YN
echo "";
echo "";
if [ "$YN" = "y" ]; then
rm -r ./$NEW;
mkdir ./$NEW;
else
echo "Script abgebrochen!";
exit
fi;
else
mkdir ./$NEW;
fi;
echo "Lese Datei(en) ein...";
ls -1 *mp3 | while read OLDFILE ;
do
NEWFILE=`echo $OLDFILE | tr -d ' '`;
echo "mv ${OLDFILE} ${NEWFILE}"
cp "$OLDFILE" "./$NEW/$NEWFILE"
done;
echo "";
echo "";
#In temporaeren Ordner wechseln
cd ./$NEW;
echo "Die Dateien werden nun in der folgenden Reihenfolge zusammengefuehrt:";
ls -1 *mp3;
echo "Passt das so? (Y/n)";
read YN;
echo "";
echo "";
if [ "$YN" = "n" ]; then
while [ "$YN" = "n" ];
do
echo "Wir machen nun ein 'ls *mp3 | sort -t -k (-n)'";
echo "Mit welchem Zeichen werden die Felder getrennt?";
read T;
echo "In welcher Spalte soll sortiert werden?";
read K;
echo "Numerisch (-n) sortieren? (Y/n)";
read NUMERISCH;
if [ "$NUMERISCH" != "Y" ]; then
N="";
else
N="-n";
fi;
echo "Die Dateien werden nun in der folgenden Reihenfolge zusammengefuehrt:";
ls *mp3 | sort -t $T -k $K $N;
echo "Passt das so? (Y/n)";
read YN;
done;
mp3wrap ./album.mp3 `ls *mp3 | sort -t $T -k $K $N`;
else
mp3wrap ./album.mp3 `ls *mp3`;
fi;
cd ..;
#Neuen Namen ermitteln
DEEP=`pwd | grep -o / | wc -l`
NEUERNAME=`pwd | cut -d/ -f $(echo $DEEP +1 | bc) | tr -d " "`;
echo $NEUERNAME;
#Neuen Titel umverschieben
mv ./$NEW/album_MP3WRAP.mp3 ./$NEUERNAME.mp3;
#Temporaere Dateien loeschen
echo "Loesche temporaere Dateien:";
rm -rf ./$NEW
echo "Mit wieviel Bit soll das MP3 resampelt werden?";
echo "";
echo "1 - 8";
echo "2 - 11.025";
echo "3 - 12";
echo "4 - 16";
echo "5 - 22.05";
echo "6 - 24";
echo "7 - 32";
echo "8 - 44.1";
echo "9 - 48";
echo "";
read RESAMPLE;
case $RESAMPLE in
1) R="8";;
2) R="11.025";;
3) R="12";;
4) R="16";;
5) R="22.05";;
6) R="24";;
7) R="32";;
8) R="44.1";;
9) R="48";;
esac;
#MP3 umrechnen
lame -V5 --vbr-new --resample $R "$NEUERNAME.mp3" "NEW_$NEUERNAME.mp3";
echo "Der Dateiname schaut so hier aus (ohne Endung):";
echo "";
echo "$NEUERNAME";
echo "";
echo "Durch welche Zeichen soll der Name zerlegt werden um im id3-Tag";
echo "das Album, den Artist und den Titel des Liedes zu erhalten?";
read TRENNER;
echo "Welche Spalte ist das Album?";
read TMPALBUM;
echo "Welche Spalte ist der Artist?";
read TMPARTIST;
echo "Welche Spalte ist der Titel?";
read TMPTITEL;
echo "Zusammenfassung:";
ALBUM=`echo $NEUERNAME | cut -d\$TRENNER -f $TMPALBUM`;
ARTIST=`echo $NEUERNAME | cut -d\$TRENNER -f $TMPARTIST`;
TITEL=`echo $NEUERNAME | cut -d\$TRENNER -f $TMPTITEL`;
echo "ALBUM: $ALBUM";
echo "ARTIST: $ARTIST";
echo "TITEL: $TITEL";
echo "Schreibe das in 5 Sekunden nun in das id3-Tag...";
sleep 5;
#id3-Tag schreiben
mid3v2 -A "$ALBUM" -a "$ARTIST" -t "$TITEL" -T "" -g "" "NEW_$NEUERNAME.mp3";
#Neuen Titel umverschieben
mv NEW_$NEUERNAME.mp3 $NEUERNAME.mp3;
|
|