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

[prinzipiell gelöst] .tox in .m3u playlist konvertieren

Hallo zusammen!

Ich habe bis lang überwiegend mit xine-ui meine Musik gehört und die playlists im .tox Format gespeichert. Jetzt habe ich amarok für mich entdeckt, welches offensichtlich nur -m3u Playlisten lesen kann.
Meine Frage daher: Wie kann ich die .tox Listen in .m3u Listen umwandeln?

Schönen Dank schon mal im voraus
Boccaccio
 
Hallo Boccacio.
Folgendes könnte Deine Lösung sein:

#!/usr/bin/perl
my $playlist = $ARGV[0];
open (IN, "$playlist") || die "Konnte Datei $playlist nicht lesen. $?\n";
my @tox = <IN>;
close IN;
my $mrl = "";

foreach (@tox) {
if ( "$_" =~ /\ *mrl\ *=.*/ ) {
$mrl = "$_";
$mrl =~ s/^\smrl\s*=\ *//;
$mrl =~ s/;\n$/\n/;
print "$mrl";
}
}
exit 0;


Ausschneiden, in eine Datei namens tox2mru.pl kopieren
oder von hier ->http://www.andreas-silberstorff.de/misc/tox2xine.pl.tar.gz<- downloaden und entpacken,
das Script ausführbar machen und in einen Pfad für ausführbare Dateien kopieren:

Code:
su -c 'chmod a+x tox2mru.pl;cp tox2mru.pl /usr/local/bin'

Danach wandelst Du eine toxine-Playlist in eine normale mru mit folgendem Aufruf:

Code:
tox2mru.pl playlist.tox >playlist.mru
 
Erst einmal schönen Dank für deine Anleitung!

Soweit hat alles funktioniert.
Das Problem ist jetzt nur, daß ich z.B. folgenden Eintrag in meiner Playlist habe:
Code:
/windows/D/Eigene Dateien/Eigene Musik/Unbekannter Interpret/Unbekanntes Album (30.11.2002 09 51 49)/01 Titel 1.wma

Amarok sucht jetzt aber nach einer Datei /home/bjoern/windows/D/..., die er verständlicherweise nicht finden kann.
 
Da würde Dir ein Importfilter für *.tox auch nicht weiterhelfen.

Warum kann amaroK nichts mit dem Pfad anfangen? Ist /windows/D nicht gemounted?

Oder wegen der Leerstellen. Dafür müsste das Script noch mal gehackt werden: Leerstellen entwerten.

#!/usr/bin/perl
my $playlist = $ARGV[0];
open (IN, "$playlist") || die "Konnte Datei $playlist nicht lesen. $?\n";
my @tox = <IN>;
close IN;
my $mrl = "";


foreach (@tox) {
if ( "$_" =~ /\ *mrl\ *=.*/ ) {
$mrl = "$_";
$mrl =~ s/^\smrl\s*=\ *//;
$mrl =~ s/;\n$/\n/;
# Leerstellen entwerten
$mrl =~ s/\s/\\\s/;

# Klammern entwerten
$mrl =~ s/\(/\\\(/;
$mrl =~ s/\)/\\\)/;
print "$mrl";


# oder mrl in Hochkommata setzen
print "\"$mrl\"";

}
}
exit 0;

Ouch. Was sehe ich denn da: Das ist ja weder *.mp3 noch *.ogg, das ist ja *.wma. Ob amarok damit was anfangen kann, wage ich zu bezweifeln. Kann amarok *.wma direkt öffnen?

P.S.: Zweite Variante (mrl in Hochkommata) hab ich gerade hochgeladen (gleiche Stelle wie eben).
 
Also, ich hab jetzt noch einmal ein bißchen herumgespielt und folgendes herausgefunden:

Amarok kann mittels xine-Treiber *.wma wiedergeben (Der Grund, Amarok und nicht xine-ui zu verwenden liegt einzig in der ansprecherenden graphischen Oberfläche).
/windows/D ist auch gemountet.
Der Grund für den Fehlschlag scheint in Amarok zu liegen (1.2-beta4). Selbst wenn ich in Amarok eine Playliste mit den Titeln in /windows/D/... erstelle, diese speichere und dann erneut lade, kommt die Fehlermeldung, daß er die Datei /home/bjoern/windows/D/... nicht finden kann. Das ganze ist aber nicht spezifisch auf diesen Pfad bezogen, sondern tritt auch bei Dateien an beliebigen anderen Orten auf, es kommt immer in /home/bjoern/ vor den Pfad.
 
Boccaccio schrieb:
Amarok kann mittels xine-Treiber *.wma wiedergeben

Ich staune. Gut.


Boccaccio schrieb:
Der Grund für den Fehlschlag scheint in Amarok zu liegen (1.2-beta4). Selbst wenn ich in Amarok eine Playliste mit den Titeln in /windows/D/... erstelle, diese speichere und dann erneut lade, kommt die Fehlermeldung, daß er die Datei /home/bjoern/windows/D/... nicht finden kann. Das ganze ist aber nicht spezifisch auf diesen Pfad bezogen, sondern tritt auch bei Dateien an beliebigen anderen Orten auf, es kommt immer in /home/bjoern/ vor den Pfad.

Das Problem sind bestimmt die Leerzeichen und Klammern in Verzeichnis- und Dateinamen. Die müssen entwertet sein.

Ob es reicht, den Pfad einer mrl (eine Zeile in der playlist.mru) in Hochkommata zu setzen, weiß ich nicht. Wenn das nicht reicht, dann müssen die Leerstellen (in dem Script \s) und die Klammern entwertet sein.

Um es auszuprobieren, kannst Du die erstellte Playlist ja mal in einem Texteditori (z.B. kwrite) ändern. Mach bei einer Zeile mal Hochkommata um die mrl. In einer anderen setze ein "" vor jede Leerstelle und vor die öffnende und die schließende Klammer.

Dann ließ diese Playliste in amarok ein und versuche, ob Du eine der beiden oder gar beide Dateien abspielen kannst.

Wenn die Hochkommata reichen, kannst Du das Script von meiner HP so nehmen wie es seit meinem letzten Posting von gestern ist.

Wenn amarok auf die Entwertung besteht, nimm die letzte Zeile aus dem Script raus, wo die Hochkommata eingefügt werden und entferne das Kommentarzeichen ("#") vor den Zeilen ("$mrl =~ ...") darüber.

Wenn eine Variante klappt, bitte posten, dann änder ich das im Script und lade es neu hoch, wenn ich heute abend wieder zu hause bin.
 
Also an Leer- oder Sonderzeichen liegt es leider nicht. Ich habe jetzt mal probeweise eine Playlist, die nur Dateien ud Pfade ohne dergleichen enthält erstellt, und beim erneuten Laden der Playlist tritt wieder derselbe Fehler auf, amarok setzt mir /home/bjoern/ vor den Dateinamen.
Ich vemute inzwischen, daß dies mit xine-internen Eisntellungen zu tun hat, denn in ~/.xine/config steht etwas von einem Startverzeichnis für die Dateisuche, der default-wert ist /home/bjoern und da scheint er auch bei Angabe anderer Startverzeichnisse zu suchen.
 
Oben