PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Automatisch MP3 Playlist erstellen



Hannilein
02.03.2005, 08:26:19
Ich habe eine größere Anzahl von MP3s auf meiner Platte und es dauert ja Ewigkeiten, über die Box Playlists anzulegen. Ohne Playlists ist die MP3-Wiedergabe sowieso eher unbrauchbar. Der hier schon veröffentlichte Playlist-Generator hat mich auch nicht wirklich weitergebracht, weil man da ja immer noch per Hand die Playlisten zusammenstellen muß, außerdem muß die Platte dazu am PC hängen.

Also habe ich mir mal ein einfaches Skript geschrieben, das alle MP3s im aktuellen Verzeichnis in eine Playlist namens "00_playlist.pla" schreibt:


sh-2.05# cat /var/media/USB-HDD/scripts/mk_playlist.sh
FILE="`pwd`/00_playlist.pla"
# print header
echo "FileURL $FILE" > $FILE
echo "MimeType (null)" >> $FILE
echo "CreationTime 0" >> $FILE
echo "LastModificationTime 0" >> $FILE
echo "Looping 0" >> $FILE
echo "PlaybackMode 1" >> $FILE
# get number of files
echo "N`find . -name "*.mp3" | wc -l`" >> $FILE
NUM=0
find . -name "*.mp3" | while read SONG
do
echo " $NUM `pwd`/`basename \"$SONG\"`" >> $FILE
echo " $NUM (null)" >> $FILE
echo " $NUM 0" >> $FILE
echo " $NUM (null)" >> $FILE
echo " $NUM (null)" >> $FILE
echo " $NUM `basename \"$SONG\"`" >> $FILE
let NUM+=1
done

Das alleine bringt noch nicht so viel, da man ja immer noch in jedes Verzeichnis wechseln und das Skript aufrufen muß. Ich habe aber eine "flache" Struktur in meiner Sammlung, jedes Album ist in einem eigenen Ordner und hat keine weiteren Unterordner. Somit habe ich dann mit einer einfachen Schleife alle Alben mit einer Playlist versehen:


FOLDER=/var/media/USB-HDD/Alben
cd $FOLDER
ls | while read DIR
do
echo $DIR
cd "$FOLDER/$DIR"
/var/media/USB-HDD/scripts/mk_playlist.sh
done

Richtig schnell ging das auch nicht (pro Album etwa so lang, wie die Box braucht, um einen einzelnen Titel an eine Playlist zu hängen), das konnte aber einfach im Hintergrund laufen, während die Box eine Sendung aufgezeichnet hat und parallel die Wiedergabe einer MP3-Playlist lief.

Das alles funktioniert natürlich nur, wenn man auch per telnet auf der Box ist, also eine entsprechende Firmware einsetzt.

Hier noch der obligatorische Hinweis: Übernahme des Codes auf eigene Gefahr, bitte nicht die komplette MP3-Sammlung zerschießen und dann hinterher auf mich schimpfen. Bei mir hat's wunderbar funktioniert, Garantien gebe natürlich keine. Außerdem bin ich kein Programmierer, bei mir reicht's nur für einfache Skripte. Man kann das sicher auch ganz anders und viel besser machen.

Hanno

macki
04.03.2005, 00:26:59
Was hier so lange braucht ist das find-Kommando!

Ich arbeite auch an eine Lösung.
Weiterhin habe ich ein MP3-Shuffle-Skript erstellt, was die Titel in zufälliger Reihenfolge abspeichert. Somit habe ich jetzt z.B. nicht 10x hintereinander ABBA sondern eine völlig automatisch erstellte Zufallswiedergabe. Die Liste lässt sich beliebig oft neu umordnen und kann in mehreren Playlisten gesichert werden. In den nächsten Tagen hier im M740-Forum.

8-) mACKi

sguski
18.03.2005, 11:39:44
Hallo Jungs,

einer der Hauptgründe, warum ich mir diese Box geholt habe, war das Abspielen von Musik. Leider kann man ja nicht einfach alle Lieder eines Verzeichnisses hintereinander abspielen; dies geht wohl nur mit ner Playlist ...

(Wenn es anders geht; korregiert mich bitte!)

Jibbet denn nicht irgendwie - wie hier schon angedeutet - ne simple Method Playlists für jedes einzelne Verzeichnis zu erstellen!?

Noch wichtiger wäre allerdings -> EINFACH!
Das große Raufklinken auf die Box per TELNET oder sonstwas finde ich nicht wirklich klasse. Meinetwegen kann die Box ja am PC und nen Proggi läuft über alles Verzeichnisse bzw. Unterverzeichnisse auf der Pladde und erzeugt pro Verzeichnis eine Playlist ...

GEHT DAS!? :confused: Wer kann das ...

Vielen Dank und Gruss
Sven

splash
18.03.2005, 11:57:11
@sguski

Da kann ich mich nur anschließen ! Es sieht wohl so aus ob wenn das nicht so einfach wäre sonst hätte ich hier schonmal etwas in dieser Art gefunden.

Squonk
07.04.2005, 10:42:40
Was hier so lange braucht ist das find-Kommando!

Ich arbeite auch an eine Lösung.
Weiterhin habe ich ein MP3-Shuffle-Skript erstellt, was die Titel in zufälliger Reihenfolge abspeichert. Somit habe ich jetzt z.B. nicht 10x hintereinander ABBA sondern eine völlig automatisch erstellte Zufallswiedergabe. Die Liste lässt sich beliebig oft neu umordnen und kann in mehreren Playlisten gesichert werden. In den nächsten Tagen hier im M740-Forum.

8-) mACKi

Diese Shuffle-Funktion interessiert mich. Hast Du's fertig?

NoFatE
05.05.2005, 16:34:07
Hi All.

Für mich ist ebenfalls die Abspielfunktion von mp3s sehr wichtig. Ich betreibe die M740AV über LAN Kabel über den Siemens DSL Router SE515 an einen ALDI PC (Win XP Home).

Zur Frage, ob man automatisch eine Playlist über alle mp3s eines Verzeichnisses erstellen lassen kann, gibt es nur eine Antwort: JA, mit dem Java Siemens Support Tool (http://www.m740.de/wiki/index.php/Java_Siemens_Support_Tool).

Es gibt noch andere Tools zur Playlistenerstellung (http://www.m740.de/wiki/index.php/MP3_Playlist_Generator), aber die habe ich noch nicht ausgetestet.

Das Java Tool kann eine Playlist aus allen mp3s eines Verzeichnisses erstellen, m3u Playlisten in M740AV Playlisten umwandeln (funzt bei mir nicht, gibt immer Fehler, wenns einer hinkriegt bitte Feedback an mich) und Bilder Playlisten erstellen.

Was mich total nervt, wenn ich zB 300 Lieder in einem Ordner habe, beispielsweise der Ordner "HouseMusik", spielt die M740 diese natürlich laut der Playlist immer von vorne ab. Es gibt anscheinend KEINE RANDOM FUNKTION, so dass die M740 einfach mal in zufälliger Reihenfolge die Lieder abspielt, was doch SEHR wünschenswert wäre.

Man kann natürlich Playlisten erstellen, die die Lieder direkt in zufälliger Reihenfolge anordnen, aber dann höre ich trotzdem immer nur die ersten 20 Lieder dieser Paylist... und es ist nur ein schlechter Workaround...

Weiterhin nervt es ohne Ende, dass wenn ich eine Liederplaylist abspiele (erstellt übers Java Tool), der Fernsehbildschirm einfach schwarz bleibt. Wünschenswert ist, dass während des abspielens einer Playlist, diese auch angezeigt wird. So klickt man ein Lied aus der Audio Playlist an -> schwarzer Bildschirm -> Menu -> Audio Playlist -> 10 Seiten runterscrollen, um neues Lied anzuwählen.

Kennt jemand eine Lösung ? Vorschläge ? Akzeptable Workarounds ?

Pidi
15.05.2005, 14:32:41
Nochmal zum Thema "Automatisches Erzeugen von Playlists".

Irgendwie war ich nicht auf den Trichter gekommen, mal zu suchen, ob schon jemand anderes diesen Weg gegangen ist. Deshalb habe ich mich kürzlich hingesetzt, und das Ganze in VBS geschrieben.

Mein Ansatz ist der:
In einem Verzeichnis S:\MP3 liegen Unterverzeichnisse mit MP3-Dateien, auch über mehrere Verzeichnis-Ebenen.

In einem auf der Box als PC1 freigegebenen Verzeichnis, das aus Sicht meines PC s:\pla heißt, sollen die Playlists liegen.

Die Playlists sollen ebenfalls in einer hirarchischen Struktur nach Interpret und Album sortiert sein, damit man die gewünschte Playlist unter PC1 auf der Box schnell finden kann. flat wird das ab 100 Playlists sehr müßig ...

Diese Pfade werden über einige Variablen im Kopf der .vbs-Datei eingepflegt:
MP3Root = "s:\mp3\" 'Das Verzeichnis, unter dem die MP3-Files liegen
PlaRoot = "s:\pla\" 'Hier werden die neuen Playlisten gespeichert

TypeOfFile = "MP3 Audio" 'Wie es der Explorer anzeigt

MP3Freigabe = "/pvr/media/PC2/mp3" 'Die MP3-Files von der M740 aus gesehen
PlaFreigabe = "/pvr/media/PC2/pla" 'Die Playlisten von der M740 aus gesehen

SEHR WICHTIG
Zur Erkennung der MP3s bin ich in meinem Script über das "TypeOfFile" Property gegangen. "MP3 Audio" ist jedoch kein konstanter Wert. Je nach installiertem Player kann das auch anders heißen. Den richtigen Wert zeigt der Explorer unter Windows in der Spalte "Typ". Einfach so abtippen, und gut is ...

Ansonsten basiert das Ganze auf einer rekursiven Funktion, welche alle MP3-Verzeichnisse durchläuft, und unter s:\pla die neuen Verzeichnisse bzw. unter dem Namen der untersten Verzeichnis-Ebene die Playlist anlegt.

Aus:
S:\MP3\Bowie\Heathen\<mp3 files>

wird also
S:\PLA\Bowie\Heathen.pla

Das Script würde auch über mehrere (eigentlich bis Stack-Overflow) Ebenen gehen, aber nicht vorher feststellen, wenn in der letzten Ebene dann doch keine .MP3-files liegen - der Pfad unter \pla wäre dann angelegt, wird aber keine Playlist enthalten.

Wenn Alben hinzukommen, einfach das Script erneut starten. Da alle bereits vorhandenen Verzeichnisse und alle vorhandenen Playlists nicht angepackt werden, erstellt das Script nur die neuen.

Das ist ´ne Lösung für die faulen, die zwar ihre MP3s in Verzeichnis-Strukturen liegen haben, aber keine individuellen Playlists händisch erstellen wollen - just run and listen ...

Advance Properties
Aktiviert man eine Playlist, und ruft diese dann auf, kann das bei 100 Titeln auch mal 2 Minuten dauern - das ist kein Absturz und kein Script Fehler (glaube ich - wer hat schon so eine lange Liste händisch erstellt). Wenn die Box dann fertig ist, sieht man zu jedem Titel die Daten aus den Advanced Properties des MP3-Files, die man ja auch mit <rechte Maustaste> Eigenschaften - Dateiinfo - Erweitert anschauen kann. Sind diese gepflegt, erleichert das alles (kann man sehr schön mit Advanced MP3 catalog von WizeTech pflegen, und sicher nicht nur damit).

Leider machen Advanced Properties zu .pla Files keinen Sinn, da die Box diese nicht anzeigt, denn auch die Playlist Namen werden in der Auswahlbox auf der linken Seite des Bildschirms recht früh abgeschnitten.

JPG Playlisten
Ihr könnt das gleiche Script dafür nehmen. Ihr müßt nur die Pfade und innerhalb der Funktion die Datei-Endung .pla in .plp ändern. Und natürlich den TypeOfFile.
Die Variante erzeugt aber keine Thumbs, was ich auch nicht wollte. Hätte ich zu jedem JPG 2 runterscalierte Bilder zusätzlich, wäre meine Platte bald völlig zugemüllt. Das Erzeugen dieser Bilder, für das man ein Scalier-Utility bräuchte, ist übrigens auch der Grund, warum die Box beim Einfügen der Bilder so grotten-lahm ist.

Ich will nur Bilder-Serien anschauen, und das geht auch ohne Vorschau.

Have fun

Pidi

MaxE
16.05.2005, 13:03:50
Ich habe eine USB-HDD direkt am m740. Habe die Links angepaßt, die Platte an meinen PC gehängt und es hat sofort funktioniert. Super! Vielen Dank für das tolle Skript.

Hock
16.05.2005, 14:26:47
Super Idee,

das hab selbst ich mit minimal Programmierkenntnis hingekriegt. Auch die Bildershow hat sofort gefunzt.

Herzlichen Dank

Pidi
20.05.2005, 21:56:13
Ein Script von "Karlo.h" hat mich auf die Idee gebracht, das Script noch zu erweitern, und zwar um zusätzliche individuelle Playlists. Das mit dem automatischen Playlists pro Verzeichnis ist ja ganz nett, aber manchmal - z.B. bei einer Party - möchte man dann ja auch mal am PC eine eigene Playlist zusammen stellen.

Karlo hat in seinem Script die Playlists mit WinAmp erstellt, und diese dann in M740 Playlists umzuwandeln. Ich habe mir erlaubt, Teile seines Codes als Anregung zu nehmen, und beide Methoden ("Aus Verzeichnis" und "Aus .m3u-Datei") zu mischen.

WinAmp zu verwenden, um eigene Playlists zu erstellen ist ja nicht verkehrt, und die Playlist-Dateien sind recht einfach aufgebaut, zumindest auf den 1. Blick ... Media Player Playlists sind scheinbar in XML formatiert, was auch nicht das Problem wäre, aber das Rückübersetzen der Sonderzeichen würde mit ernste Kopfschmerzen bereiten.

Wie funktioniert´s?
Ich laufe mit meinem Script, wie bisher, durch die SubDirs. Wenn mir dabei eine .m3u-Datei, also eine WinAmp Playlist unterkommt, überprüfe ich diese, und wandele sie um.
Die Überprüfung ist eine Erweiterung gegenüber Karlo´s Code, denn .m3u-Dateien schwirren überall rum, werden zusammen mit MP3s hin und her kopiert, und wirken dann wie kleine Playlist-Viren :-)

Also überprüfe ich für jeden MP3-Titel, den ich in einer solchen .m3u-Datei finde, ob dieser auch tatsächlich in diesem Pfad existiert.

Leider speichert WinAmp die Titel nach einem merkwürdigen Prinzip ab. Befindet sich der MP3-File auf dem gleichen Laufwerk, läßt WinAmp die Laufwerks-Kennung weg. Steht die MP3-Datei im gleichen Pfad wie die neu angelegte Playlist wird sogar der ganze Pfad weggelassen. Die Zeile der Datei enthält dann nur den Datei-Namen. Ergo mußte ich ein bisschen rumtricksen, umd die Pfade jeweils zu ergänzen, dann zu prüfen, und schließlich korrekt in die .pla-Datei zu schreiben.

Um Müll zu vermeiden, gehe ich in 2 Stufen vor. Erst überprüfe ich jede Zeile einer .m3u-Datei, und nur wenn mindestens ein gültiger (existierender) Titel gefunden wird, erzeugt das Script überhaupt die .pla-Datei. Und in diese werden dann auch nur die gültigen Titel hinein geschrieben.

Wohin mit den M740 Playlists
Nach einigem Überlegen habe ich mich entschieden, die aus .m3u erzeugten .pla in ein eigenes Verzeichnis unterhalb des "MP3Root" zu schreiben. Der Name diese Verzeichnisses kann im Kopf des Scripts geändert werden. 1MyPL wäre z.B. auch nicht schlecht dafür. Dann ist auf der Box dieses Verzeichnis immer ziemlich am Anfang, und darum ging es mir ja. Momentan heißt das Verz. bei mir WinAmp ... jeder, wie er mag.
Auf jeden Fall kann man dann an der Box schnell eine eigene PL aufrufen, und die sollten dann auch alle mit allen Titeln gültig sein.

Die .m3u zu .pla PLs werden bei jedem Durchlauf neu geschrieben. Sonst könnte das ja keiner mehr nachhalten, wenn via WinAmp eine Änderung an einer .m3u-Datei erfolgt ist.

Ich betrachte das Ganze noch als beta, da mir gestern ziemlich die Birne geraucht hat - Have fun ... und Dank an Karlo.h

Pidi

karlo.h
20.05.2005, 23:25:51
Karlo hat in seinem Script die Playlists mit WinAmp erstellt,

Ich betrachte das Ganze noch als beta, da mir gestern ziemlich die Birne geraucht hat - Have fun ... und Dank an Karlo.h

Pidi

Oh, bitte, gerne. Nur dass ich MediaMonkey benutze und nicht WinAmp :)

Pidi
21.05.2005, 13:19:21
Kenn ich nicht, aber der scheint ja WinAmp kompatible Playlists zu schreiben ...? Generiert der auch die Pfade nach den von mir beschriebenen Regeln, oder schreibt der eventuell immer den kompletten Pfad hinein?
Das würde die Kompatibilität ja kaum stören können.

Pidi