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

Playlist auf CD brennen

OP
K

K4m1K4tz3

Advanced Hacker
trommelpeter schrieb:
Variablen (habe ich so gelernt) schreibe ich immer klein, weil man sie (laut Autor eines tollen Buches) so besser von den Systemvariablen unterscheiden kann. Großschreibung sollte angeblich den Systemvariabeln vorbehalten bleiben.

Ok, habe mir noch nie sowas durchgelsen. Ich habe mir mal ein paar Grundsachen in C beigebracht, aber mit der Shell hatte ich noch nie viel zu tun. Habe das irgendwo mal abgeschaut, da hatte der Programmierer das auch so gemacht, also dachte ich: Kann dann ja nicht falsch sein. ;-)

trommelpeter schrieb:
Anstelle des Befehls test benutze ich []

Da steht bei mir einfach nur ein Kästchen :?
Ich weiß, dass man test nicht hinschreiben muss, aber zum besseren lesen habe ich das da rein geschrieben.


trommelpeter schrieb:
Ich lasse eine Zeile nie mit ; enden.

Ist eine Angewohnheit aus C.


trommelpeter schrieb:
statt id3info benutze ich mp3info. [...] Ich finde dieses id3info voll umständlich, weil es absolut keine Optionen zur Verfügung stellt.

Ich gebe dir da vollkommen recht! Aber sobald die Tags in der Version 2.4 vorliegen, dann schmeißt mir mp3info einen Kauderwelsch um die Ohren, den ich nicht filtern wollte.

trommelpeter schrieb:
Man kann viel lernen wenn man mal schaut wie andere an eine Problemstellung rangehen.

Jup, so habe ich mir so einiges beigebracht ;-)
 
Hallo

Na gut :) Jetzt verstehe ich die Zusammenhänge besser warum du dein Script so gestaltest.

Ich gebe dir da vollkommen recht! Aber sobald die Tags in der Version 2.4 vorliegen, dann schmeißt mir mp3info einen Kauderwelsch um die Ohren, den ich nicht filtern wollte.

Die Fehlermeldungen sind kein Problem. Die landen auch nicht in der Variable, da sie auf stderr und nicht auf stdout ausgegeben werden.
Ich nutze stderr sogar.
Ich leite stderr durch 2> in eine Datei um. stdout wird dadurch nicht berührt. Und anhand von stderr weis ich, aha da hat was nicht funktioniert. Für mich ist es dann kein Problem meine MP3s durch easytag zu jagen:
http://www.easylinux.de/Artikel/ausgabe/2005/05/048-easytag/index.html
Inzwischen sieht easytag schöner aus :)


Gruß Peter
 
OP
K

K4m1K4tz3

Advanced Hacker
trommelpeter schrieb:
Ich leite stderr durch 2> in eine Datei um. stdout wird dadurch nicht berührt. Und anhand von stderr weis ich, aha da hat was nicht funktioniert.

Funktioniert leider nicht.

Beim Befehl (ja der Name der Datei ist merkwürdig, ich weiß :p )
Code:
mp3info2 -p %a The\ Other\ -\ We\ Are\ Who\ We\ Eat\ -\ 01\ -\ Passion\ For\ The\ Kill.mp3 1> stdout 2> stderr

steht folgendes in stdout
Code:
| 4 > 4 || 1 == 0
| 0,0,1,1,1n0: 0
1: 0
2: 1
3: 1
4: 1
5: 
The Other

und folgendes in stderr:
Code:
Unknown ID3v2-Tag version: v2.4.0
Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/MP3/Tag/ID3v2.pm line 1699.

Vielleicht würde es funktionieren, wenn ich alle Dateien neu mit easytag taggen würde, aber dazu habe ich ehrlich gesagt keine Lust. Klar, es währe schön mp3info(2) zu benutzen, aber darum gleich alle meine mp3 Dateien bearbeiten?
 
easytag funktioniert so wie es klingt. Einfach easy :)

Wenn ich mit easytag einen Ordner öffne scannt er sämtliche mp3s zusammen die sich in diesem Ordner befinden.
Meistens werden dann die meisten mp3 rot angezeigt.
rot bedeutet soviel wie "noch nicht bearbeitet".
dann klicke ich auf "alles auswählen" und anschließend auf Speichern.
Jetzt fragt easytag ob er das Speichern für alle anderen mp3 auch wiederholen soll. Einfach bestätigen und easytag schreibt sämtliche vorhanden Taggs nochmal, aber diesmal sowohl als id3v1 als auch als id3v2. So ist easytag default eingestellt.

Was dein Beispiel angeht. Schau mal was ich in meinem Script gemacht habe. Also seltsamerweise komme ich bzw mein Script hervorragend mit meiner Konstruktion zurecht.

Aber wie auch immer. Viele Wege führen nach Rom, und solange dein Script funktioniert wird kein Anwender danach krähen warum es funktioniert ;-)

Da hätte ich übrigens noch ein Anliegen. Ich habe in deinem Script eine Stelle entdeckt die ich prinzipiell und zukünftig sehr interessant finde.
Auf die Art und Weise ein Problem zu lösen wäre ich überhaupt nicht gekommen:

Zeile 103



Code:
DESTINATION=$(printf "%s/%03d-%s-%s.mp3 " $2 $STARTNUMBER "$ARTIST" "$TITLE")

Kannst du mir im Detail erklären was da passiert?

Ich mit meinem komplizierten Denken hätte da wahrscheinlich auch eine Lösung gefunden, aber die hätte wesentlich umständlicher ausgesehen :)

Mensch , jetzt gehen mir erst die Augen auf:

http://www.ibiblio.org/mp3info/
Ich rede von dem hier.

mp3info2 gibt es tatsächlich auch. Aber von dem habe ich noch nie geredet. Kein wunder wenn wir aneinander vorbeireden

Gruß Peter
 
OP
K

K4m1K4tz3

Advanced Hacker
trommelpeter schrieb:
Code:
DESTINATION=$(printf "%s/%03d-%s-%s.mp3 " $2 $STARTNUMBER "$ARTIST" "$TITLE")

Kannst du mir im Detail erklären was da passiert?

Ich will ja, dass die Dateien umbenannt werden. Ich habe mir gedacht: das geht doch am Einfachsten, wenn ich das gleich beim Kopieren mache. Also bastel ich mir den Zielpfad und den Dateinamen zusammen. Ich habe dazu printf benutzt, da es sehr flexibel ist.

Als erstes wird der Pfad mit der Variable $2 angegeben, welche man ja beim Aufruf des Scriptes angegeben hat. Daraufhin folgt ein / welches zeigt, dass danach der Dateiname kommt.

$STARTNUMMER wird bei jedem Durchgang hoch gezählt, und somit bekomme ich sauber durchnummerierte Dateinamen hin. %03d sorgt dafür, dass ich dreistellige Zahlen erhalte, egal welche Nummer gerade in der Variable $STARTNUMMER steht. Da auf eine Daten-CD sowieso nur ca. 200 Lieder passen benötige ich keine 4 oder mehr Stellen.

Mit "$ARTIST" und "$TITLE" schreibe ich, wie die Namen schon sagen, den Künstler und Titel des Liedes in den Namen.

Als nächstes muss ich die Variable $DESTINATION nur beim Befehl cp angeben und ich habe das Ergebnis was ich wollte.

trommelpeter schrieb:
Mensch , jetzt gehen mir erst die Augen auf:

http://www.ibiblio.org/mp3info/
Ich rede von dem hier.

mp3info2 gibt es tatsächlich auch. Aber von dem habe ich noch nie geredet. Kein wunder wenn wir aneinander vorbeireden

Ich dachte mp3info2 währe einfach nur der Nachfolger, da ich in den Suse Repos kein mp3info gefunden habe. Es hat ja immerhin auf die selbe Syntax reagiert ;-)

Ich werde das Script jetzt so lassen. Mir würde es besser gefallen, wenn ich irgendwie id3v2.4 benutzen würde, aber da ich kein passendes Programm gefunden habe, was dies tut, wird das wohl erstmal nix. Das Script macht das, was es soll und so reicht mir das erstmal. Wenn jemand ein Programm kennt, mit dem ich id3v2.4 einfach auslesen kann, dann kann man sich ja mal bei mir melden. Ich würde mich freuen. :D

EDIT: Kleinere Fehler beseitigt, unter anderem war ein Lehrzeichen im Namen zu viel: http://phpfi.com/286098
 
Hallo

Also wenn id3info alle Taggs lesen kann, erfüllt es offensichtlich bestens seinen Zweck.

Für die geduldige Beschreibung bedanke ich mich und ich habe das Script schon fest in meine Sammlung aufgenommen. Ich weis nur nicht wie das Script eigentlich heißt :)

Und noch ein Tipp:
Als erstes wird der Pfad mit der Variable $2 angegeben, welche man ja beim Aufruf des Scriptes angegeben hat. Daraufhin folgt ein / welches zeigt, dass danach der Dateiname kommt.

Ich glaube es ist besser wenn du mit getopts arbeitest.
Also ich weis jetzt das $1 die Playlist sein muss und $2 der Zielpfad.
Aber was ist mit jemand der das Script so unbefangen in die Hand bekommt?
Zu getopts habe ich bisschen was gefunden:

http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/bash.html#bgetopts
(Das ist direkt der Link zum Abschnitt)

Folgendes Ist auch noch sehr interessant:
http://de.linwiki.org/wiki/Linuxfibel_-_Shells_-_Bash
http://www.galileocomputing.de/download/dateien/579/galileocomputing_einst_linux.pdf


Gruß Peter
 
OP
K

K4m1K4tz3

Advanced Hacker
trommelpeter schrieb:
Ich weis nur nicht wie das Script eigentlich heißt :)

Also ich habe es hier playlistcopy.sh genannt. Da ich da aber nie sehr einfallsreich bin, bin ich für jeden Vorschlag zu haben ;-)

trommelpeter schrieb:
Ich glaube es ist besser wenn du mit getopts arbeitest.

Daran habe ich auch schon gedacht, jedoch sind $1 und $2 ja in dem Sinne keine Optionen, sondern Pfadangaben.

trommelpeter schrieb:
Aber was ist mit jemand der das Script so unbefangen in die Hand bekommt?

Dafür habe ich am Anfang ein paar Überprüfungen eingebaut:

Code:
if [ $# != 2 ] ; then
	echo "Usage: playlistcopy EXTENDED.M3U DIRECTORY" >&2;
	echo;
	exit 1;
fi;

if ! test -e $1 ; then
	echo "Playlist $1 doesn't exist." >&2;
	exit 1;
fi

if ! test -d $2 ; then
	echo "Directory $2 doesn't exist. Creating it.";
	mkdir $2;
fi

Aber vielleicht hast du Recht und ich sollte das nochmal überarbeiten. Perfekt ist das ganze noch nicht.


trommelpeter schrieb:
http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/bash.html#bgetopts
(Das ist direkt der Link zum Abschnitt)

Folgendes Ist auch noch sehr interessant:
http://de.linwiki.org/wiki/Linuxfibel_-_Shells_-_Bash
http://www.galileocomputing.de/download/dateien/579/galileocomputing_einst_linux.pdf

Danke, werde mir das anschauen.
 
Hallo

Kannst du mir evtl das OriginalScript zusenden?

Ich habe das von dieser php-Seite. Ich habe keine Ahnung was da nicht stimmt und habe es vermutlich auch noch zerbastelt jetzt.

Hier mal die wichtigsten Fehlermeldungen:


bei den ersten Versuchen hatte das Script noch den Namen von der php-Seite; eine Zahl :)
Code:
trommel@linux-jiac:~/Desktop> bash -n 286098.sh
286098.sh: line 34: syntax error near unexpected token `fi'
'86098.sh: line 34: `fi;

Code:
trommel@linux-jiac:~/Desktop> ./playlistBrennen.sh ~/MUSIK/Alphabet_m3u/fertig/a.m3u ~/Testus
bash: ./playlistBrennen.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden

Hier mal ein lauf mit set -x
Den cp-Befehl habe ich zu Testzwecken jetzt einfach mal durch ein
echo ersetzt.
Äh , leider startet das Script garnicht. es bricht sofort mit einer Fehlermeldung ab.

Code:
trommel@linux-jiac:~/Desktop> ./playlistBrennen.sh ~/MUSIK/Alphabet_m3u/fertig/a.m3u ~/Testus
bash: ./playlistBrennen.sh: /bin/bash^M: bad interpreter: Datei oder Verzeichnis nicht gefunden

Das kann natürlich ein Fehler beim kopieren sein.
Besser Originalscript zusenden.

Gruß Peter
 
Hallo :)

Bedanke mich herzlich für das Originalscript.
Es funktioniert einwandfrei. Ich denke ich habe dafür Verwendung.
Es füllt eine Lücke wo ich selber schon nach einer Lösung gesucht habe.

Was ich für mich noch anpassen werde , ist, das die Leerzeichen durch Unterstriche ersetzt werden. Das ist ganz einfach:

DESTINATION=${DESTINATION//\ /_}

Am besten wäre natürlich wenn das Leerzeichenfüllen gleich in einem Abwasch mit printf gehen würde.

Wenn die nächste Version deines Scriptes raus ist bekomme ich das hoffentlich mit.

Und wenn du nichts dagegen Hast würde ich es gerne auf meiner kleinen bescheidenen Website veröffentlichen.
Meine Website ist nichts besonderes. Nur so eine kleine Minifundrube, wo ich bisschen sammle was für andere auch interessant sein könnte.


Gruß Peter
 
OP
K

K4m1K4tz3

Advanced Hacker
Ich denke, ich werde dieses Script hier ins Wiki einbringen, so hat jeder etwas davon.

Zudem kannst du das Script auch auf deiner Homepage veröffentlichen. Nicht umsonst steht das Script unter der GPL ;-)

P.S: wie lautet denn deine HP?
 
Hallo

http://www.dummixland.de/
Das ist meine kleine bescheidene Page :)
Ohne professionelle Ansprüche. Nur eine kleine Fundgrube.

Ich habe (hoffentlich in deinem Sinne) noch folgende Ergänzung eingefügt:
unter der Zeile 106
Code:
	DESTINATION=${DESTINATION//\ /_}
Damit werden die Leerzeichen jetzt durch Unterstriche ersetzt.

Nur ein Problem macht mir noch Kopfzerbrechen.
Das Script beendet sich nicht von selbst. Es spukt zum Schluss solange Fehlermeldungen aus bis man es mit STRG+C beendet.

Leider wage ich mich nicht an weitere Korrekturen, weil dein Script so ganz anders ist als mein Programmierstil.

Ich hätte als Schleife glaube ich eher verwendet:
Code:
for mpdrei in `cat ${1} | grep -v "#" | grep ".mp3"`
do
   
...
...
...

done

Das nur als Anregung. Ich müsste wenn dann eine eigene Version des Scriptes wagen, weil ich glaube das ich das Pferd vermutlich von einer ganz anderen Richtung aufzäumen würde.

Hier noch die Fehlermeldungen die dein Script ausspukt:
trommel@linux-jiac:~/Desktop> ./playlistcopy.sh ~/MUSIK/Alphabet_m3u/fertig/a.m3u ~/Desktop/Testus/
„/local/trommel/Musik/lastfm.de/Alexisonfire-Accidents.mp3“ -> „/home/trommel/Desktop/Testus//001-Alexisonfire-Accidents.mp3“
„/local/trommel/Musik/lastfm.de/Alexisonfire-44_caliber_love_letter.mp3“ -> „/home/trommel/Desktop/Testus//002-Alexisonfire-44_caliber_love_letter.mp3“
„/local/trommel/Musik/lastfm.de/Alexisonfire-Polaroids_Of_Polar_Bears.mp3“ -> „/home/trommel/Desktop/Testus//003-Alexisonfire-Polaroid's_Of_Polar_Bears.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/ATTIC_CELL-Suplica.mp3“ -> „/home/trommel/Desktop/Testus//004-ATTIC_CELL-Suplica.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/Adas-Runatal.mp3“ -> „/home/trommel/Desktop/Testus//005-Adas-Runatal.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Liebestanz.mp3“ -> „/home/trommel/Desktop/Testus//006-6_After_Dark-Liebestanz.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/Adas-Lullaby.mp3“ -> „/home/trommel/Desktop/Testus//007-Adas-Lullaby.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/antz_of_glory-Care_for_me.mp3“ -> „/home/trommel/Desktop/Testus//008-Antz_of_glory-Care_for_me.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Du_bist_so_kalt.mp3“ -> „/home/trommel/Desktop/Testus//009-After_Dark-Du_bist_so_kalt.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Sentimental_Suicide.mp3“ -> „/home/trommel/Desktop/Testus//010-After_Dark-Sentimental_Suicide.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Attax/Sunset_Forrest/Attax-Air.mp3“ -> „/home/trommel/Desktop/Testus//011-AttaX-Air.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Animalic/Soundgarage/Animalic-Rockn_Roll_Will_Never_Die.mp3“ -> „/home/trommel/Desktop/Testus//012-Animalic-Rockn_Roll_Will_Never_Die.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Animalic/Soundgarage/Animalic-Some_Respect.mp3“ -> „/home/trommel/Desktop/Testus//013-Animalic-Some_Respect.mp3“
„/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Auxitt/Rebuilding_The_Architect/Auxitt-Chapter_Iii.mp3“ -> „/home/trommel/Desktop/Testus//014-Auxitt-Chapter_III.mp3“
„/local/trommel/Musik/mp3/Various/Sonic_Seducer-Cold_Hands_Seduction_Vol.II/Agathodaimon-12-Tongue_of_Thorns.mp3“ -> „/home/trommel/Desktop/Testus//015-Agathodaimon-Tongue_of_Thorns.mp3“
„/local/trommel/Musik/mp3/Various/Sonic_Seducer-Cold_Hands_Seduction_Vol.II/Astrea_Redux-03-Ice_Age.mp3“ -> „/home/trommel/Desktop/Testus//016-Astrea_Redux-Ice_Age.mp3“
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.
Error: File /home/trommel/MUSIK/Alphabet_m3u/fertig/ is no mp3 file. Trying next one.

Gruß Peter
 
Interessante Diskussion hier - ich hoffe, es ist dennoch okay, wenn ich mal eine Fertiglösung in den Raum werfe: » kid3 «, das ist der einzige tagger, mit dem ich wirklich noch nie Probleme hatte (und ich habe ziemlich viele ausprobiert).
 
Kannst du mir mal die m3u Datei zeigen?

Prinzipiell muss ich erstmal sagen, das nicht alle mein m3u exporte von Playern sind.

man kann m3u's auch mit find erstellen

zB
Code:
find AMAROK/D/Danny_Jean/ -name "*.mp3" > Desktop/Demo.m3u

Diese m3u können die meisten Player anstandslos abspielen.
Dein Script setzt natürlich vorraus das man es mit einem m3u nach vollem Standard zu tun hat.
Das merkt man schon daran das dein Script Abfragt ob die erste Zeile stimmt.
diese erste Zeile ist aber von Haus aus schon mal nicht vorhanden wenn man das m3u mit find erstellt.

USW...

Hier noch der Inhalt von dem m3u um das es sich bei mir handelt.
Die erste Zeile habe ich manuell hinzugefügt damit dein Script überhaupt erst mal greift:
#EXTM3U
/local/trommel/Musik/lastfm.de/Alexisonfire-Accidents.mp3
/local/trommel/Musik/lastfm.de/Alexisonfire-44_caliber_love_letter.mp3
/local/trommel/Musik/lastfm.de/Alexisonfire-Polaroids_Of_Polar_Bears.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/ATTIC_CELL-Suplica.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/Adas-Runatal.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Liebestanz.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/Adas-Lullaby.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/antz_of_glory-Care_for_me.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Du_bist_so_kalt.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage/After_Dark-Sentimental_Suicide.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Attax/Sunset_Forrest/Attax-Air.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Animalic/Soundgarage/Animalic-Rockn_Roll_Will_Never_Die.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Animalic/Soundgarage/Animalic-Some_Respect.mp3
/local/trommel/Musik/AntenneBayern/Soundgarage_alt/Auxitt/Rebuilding_The_Architect/Auxitt-Chapter_Iii.mp3
/local/trommel/Musik/mp3/Various/Sonic_Seducer-Cold_Hands_Seduction_Vol.II/Agathodaimon-12-Tongue_of_Thorns.mp3
/local/trommel/Musik/mp3/Various/Sonic_Seducer-Cold_Hands_Seduction_Vol.II/Astrea_Redux-03-Ice_Age.mp3

Ich habe eine Vermutung: Da du scheinbar zuwenig grep'st nimmt dein Script die letzten Zeilen auch noch mit , auch wenn es Leerzeilen sind.
Bei manchen Textdateien kommen ja manchmal Leerzeilen am Ende vor, wenn man versehentlich noch paar mal [Enter] betätigt hat.

Aber da ich dein Script noch nicht so recht durchschaut habe tue ich mir schwer dahinterzukommen was der Bug sein könnte.

Gruß Peter
 
Hallo

Interessante Diskussion hier - ich hoffe, es ist dennoch okay, wenn ich mal eine Fertiglösung in den Raum werfe: » kid3 «, das ist der einzige tagger, mit dem ich wirklich noch nie Probleme hatte (und ich habe ziemlich viele ausprobiert).

Klar bin ich auch an Fertiglösungen interessiert. Für mich ist 'Scripte basteln' unter anderem auch aus der Not geboren, das man sich auf viele Programme nicht mehr verlassen kann.

Krename war ein absolut geniales Werkzeug (zumindest bis openSuSE 10.2. ) .
Damit konnte man Dateien in beliebige Reihenfolgen bringen und dann hatte man zig Möglichkeiten zum Umbenennen.
Unter anderem eben dieses 'nach Metadaten umbenennen.
DAS funktioniert nun leider nicht mehr.

Was ich mit dem alten Krename gerne gemacht habe war:
Ich habe mir in Amarok meine gewünschten Lieder ausgewählt und gleich in die gewünschte Reihenfolge gebracht -> Dann in Amarok auf "alles Auswählen" -> und alles komplett in Krename-Fenster gezogen -> Dort nach Metadaten umbenannt mit führenden Buchstaben "Groß" und sauber durchnummeriert.

Kid3 habe ich mir mal kurz angeschaut. Konnte ich mich aber nicht recht damit anfreunden. Vermutlich auch mangels deutscher Beschreibung.

Aber inzwischen denke ich mir sowieso immer mehr, das man immer flexibler wird je mehr man Scripting lernt.
Ich habe jetzt schon Situationen wo ich innerhalb 5 Minuten ein Script schreibe für einen Zweck wo ich Monatelang ein grafisches Programm suchen würde.

Ich bin aber trotzdem interessiert mehr über kid3 zu erfahren.
Vielleicht geht dieses Programm dann auch irgendwann mal in meinen Schädel rein :)


Gruß Peter
 
OP
K

K4m1K4tz3

Advanced Hacker
@ trommelpeter:

Es gibt zwei Arten von m3u Playlisten. Es gibt einmal die, wo die Dateinamen einfach untereinander aufgelistet sind, und dann die "Extended" m3u-Playlisten. Mein Ziel war es ja auch nur die Extended Playlisten zu unterstützen, darum habe ich ja auch die Abfrage hinein gebaut, welche nach der ersten Zeile ausschau hält.

Ich habe jetzt eine neue Version, die diese Unterscheidung nicht mehr macht. Es unterstützt jetzt alle m3u Dateien und es erscheint jetzt auch eine Fehlermeldung, wenn eine Leerzeile gefunden wurde. Ich werde sie dir zukommen lassen.

Vor einigen Jahren hatte ich mal ein Praktikum in einer größeren Computerfirma und da sagte mir mal einer, dass die Kunst beim Programmieren sei, alle Eventualitäten einzuplanen. Jeder Mensch denkt anders, ein Programmierer muss aber alle Denkweisen beherrschen, bzw. kennen. Jetzt merke ich, wie Recht er damals hatte ;-)

EDIT: http://wiki.linux-club.de/Dateien_mithilfe_einer_Playlist_sortieren
 
Hallo K4m1K4tz3

Jetzt hat das Script funktioniert bei mir. Ich habe es gerade eben auf meiner Website veröffentlicht:
http://www.dummixland.de/
Man kann es somit also downloaden.

Ich hoffe du hast nichts dagegen das ich beim Leerzeichenfüller diese Raute ;-) weggemacht habe :) .
Grund war , das Leerzeichen sehr häufig Probleme machen gerade wenn man in der Konsole arbeiten will.

Wer aber auf Leerzeichen besteht kann diese Zeile aber jederzeit wieder auskommentieren ;-)

Gruß Peter
 
Hallo K4m1K4tz3

Eine Frage ist mir noch eingefallen.
Was macht dein Script eigentlich genau wenn ein mp3 keine id3tags hat?

Das ist garnichtmal so unselten.

Gruß Peter
 
kleiner Tipp

Schau dir mein Script weiter oben an.
ein mp3 ohne id3-Tagg würde als Dateiname -.mp3 ergeben.

Um das zu verhindern habe ich einfach eine if-Abfrage davorgeschaltet.
[ ! ${variable} ] , Also wenn die Variable leer ist dann mp3 unverändert lassen aber gleichzeitig eine Meldung weiterleiten.

Ich habe als kleine Spielerei die Meldung an KMail weitergeleitet, so das ich die entsprechenden mp3s nachher in Ruhe nachbearbeiten kann.
Aber KMail ist garnicht nötig.
Eine Umleitung in eine Datei reicht auch.

Aber alles ist wie immer geschmackssache :)


Gruß Peter
 
Oben