Plex selbst besitzt keine Funktion, um Playlists aus anderen Applikationen oder Diensten zu importieren. Es gibt Online-Dienste, die Playlisten, auch verschiedener Anbieter wie Spotify oder Apple, beliebig untereinander konvertieren können. Diese Dienste sind aber kostenpflichtig, bzw. in der Gratis-Version nur stark eingeschränkt nutzbar. Glücklicherweise besitzt Plex eine frei nutzbare API und dort ist sogar eine Funktion enthalten, mit der man Playlists importieren kann. Im Web finden sich auch diverse Anleitungen, wie das funktioniert. Diese erklären aber nur unzureichend wie die Funktion arbeitet, bzw. was zu machen ist. In diesem Artikel beschreibe ich die nötigen Schritte etwas genauer und stelle euch dazu noch ein Programm für die Kommandozeile zur Verfügung, um die Arbeit zu vereinfachen.
Playlist-Format
Eins vorweg, die von Plex angebotene API-Funktion arbeitet nur mit Playlist-Formaten in denen die Lieder in Klartext abgespeichert werden. Einige Dienste und Programme verwenden ein binäres Format für ihre Playlists. Diese müsstet ihr zuerst in ein Klartext-Format wie .m3u konvertieren.
Die Plex-API Import-Funktion
Die Funktion ist kein Geheimnis und wie erwähnt, findet ihr auch einige Anleitungen dazu. Die Funktion ist ein einfacher Post-Request an euren Plex-Server. Die URL sieht folgendermaßen aus:
http://[PlexServer]:32400/playlists/upload?sectionID=[librarySectionID]&path=[PathTo.M3U]&X-Plex-Token=[Token]
Zuerst das Wichtigste. Der Aufruf dieser URL übermittelt dem Plex-Server nur die angegebenen Parameter (der Teil nach dem ?). Anders als das “upload” im URL-Pfad suggeriert, bewirkt der Aufruf KEINEN Upload der Playlist auf euren Plex-Server. Ihr müsst die Playlist also VOR dem Import selbst hochladen. Wie das etwas bequemer geht, erfahrt ihr dann weiter unten.
Der Upload ist aber nicht das einzige Problem, ein weiteres ist der Pfad der Lieder in der Playlist. Der sieht nämlich je nach Quelle der Playlist anders aus und muss vor dem Import angepasst werden. Plex akzeptiert eure Playlist nämlich nur dann, wenn die Pfade der Lieder den Pfaden in eurer Plex-Medienbibliothek entsprechen.
Um eine Playlist in Plex zu importieren, müsstet ihr also folgendermaßen vorgehen:
- Exportieren der Playlist im .m3u-Format.
- Öffnen der Playlist in einem Text-Editor und Suchen/Ersetzen der lokalen Pfade mit den Pfaden auf eurem Plex-Server.
- Eventuelles Anpassen der Pfad-Trennzeichen (Windows nutzt \, Unix nutzt /).
- Hochladen der Playlist. Die Playlist muss dabei an einem Ort gespeichert werden, auf dem der Plex Media Server Leserechte besitzt. Ideal dafür eignet sich ein Ordner, in dem ihr eure Musik gespeichert habt. Ihr könnt aber auch einen separaten Ordner zu eurer Mediathek hinzufügen oder dem Plex-Systemnutzer Leserechte auf einem eigenen Ordner geben.
- Senden des Post-Requests mit den notwendigen Angaben (Platzhalter). Die Anleitungen verwenden dafür die Software Postman.
Und hier kommt mein Programm ins Spiel, denn bis auf den Upload nimmt es euch alle anderen Schritte ab.
Vorbereitungen
Ob ihr mein Programm nutzen wollt oder doch lieber Postman oder eine andere Software bleibt euch selbst überlassen. Davor sind einige Schritte notwendig, die für alle Varianten zutreffen.
X-Plex-Token und Library-ID
Damit Plex weiß, in welcher Mediathek die Playlist importiert werden soll, müsst ihr deren ID angeben. Außerdem benötigt ihr einen Token, damit Plex weiß, dass der Aufruf auch genehmigt ist.
Um beides herauszufinden, öffnet euren Plex Media Server im Browser. Navigiert dann in die Mediathek, in der ihr die Playlist importieren wollt und dort zu einem beliebigen Lied. Klickt dort auf das Dreipunkte-Menü und wählt Medien Info. Im Popup klickt ihr ganz unten auf XML-Datei anzeigen. Es öffnet sich ein Browser-Tab mit XML-Text. In der URL findet ihr ganz hinten den x-Plex-Token. Die ID der Mediathek findet ihr in der ersten Zeile des XML-Texts als librarySectionID.
Gültigkeit des Token
Der Token ist nicht endlos gültig. Irgendwann ändert sich der Token und ihr müsst ihn erneut ablesen. Wie lange der Token gültig ist, ist mir nicht bekannt. Ein PMS-Update führt nicht zwingend zu einem neuen Token.
Wenn ihr schon dabei seid, könnt ihr euch gleich den Titel-Pfad notieren, falls ihr die Pfade in der Playlist konvertieren müsst. Diesen seht ihr im Medien Info-Popup.
Jetzt habt ihr so weit alles, das einzige, was ihr noch zusätzlich benötigt, ist die Domain oder die IP-Adresse unter der eurer PMS zu erreichen ist.
Mein Import-Programm
Zuerst erkläre ich euch allgemein, wie mein Programm funktioniert und anschließend beschreibe ich noch einige Anwendungsfälle.
Das Programm ist eine exe-Datei, die ihr über die Kommandozeile eures Windows-Rechners ausführen könnt. Dabei stehen Optionen zur Verfügung, um das Programm zu steuern bzw. um die benötigten Informationen zu übergeben.
Download
Das Programm übernimmt grundsätzlich 2 Aufgaben, das Konvertieren der Playlist und das Zusammensetzen und Absenden des Post-Requests.
Die notwendigen Angaben übergebt ihr mit folgenden Optionen:
-u URL (Domain oder IP) eures Plex Media Server, den Port müsst ihr mit angeben, das ist üblicherweise 32400 -t euer Plex-Token -s die ID der Mediathek -r der Pfad der Playlist auf dem SERVER, also ein Ort an dem der PMS leserechte hat, ihr müsst selbst dafür sorgen, dass die Playlist dort landet, es findet kein Upload dorthin statt
Die Konvertierung der Playlist ist optional. Ihr könnt das Programm also auch nur zum Senden des Port-Requests verwenden, wenn die Playlist bereits das richtige Format bzw. die richtigen Pfade hat.
-f der lokale Pfad zur Playlist die konvertiert werden soll -d anstatt einer einzelnen Datei (-f) könnt ihr auch einen ganzen Ordner an Playlists angeben, im Ordner dürfen sich dabei aber nur Playlisten und keine anderen Dateien befinden -o der aktuelle Pfad der Lieder in eurer Playlist der ausgetauscht werden soll -n der Pfad der in die Playlist eingesetzt werden soll, der Pfad muss dem Titel-Pfad der Plex-Mediathek entsprechen
Wie schon erwähnt, führt weder mein Programm, noch die Plex-Funktion einen Upload der Playlist durch. Ihr habt grundsätzlich zwei Möglichkeiten, an die Sache heranzugehen. Ihr könnt den Mediathek-Ordner eures Servers als Windows-Netzlaufwerk einbinden und die unkonvertierte Playlist gleich dort abspeichern, ehe ihr mein Programm aufruft, dann erspart ihr euch den Upload. Oder ihr ladet die konvertierte Playlist selbst hoch (mit welcher Methode auch immer), verwendet dazu beim Aufruf meines Programms die Option -p
. Das Programm pausiert dann nach der Konvertierung und ihr könnt die Playlist hochladen und das Programm anschließend wieder fortsetzen.
Ein Aufruf meines Programms könnte so aussehen:
D:\PlexPLaylistImporter.exe -u https://plex.mydomain.com:32400 -t Ab7624hjdGDH -s 4 -r /volume1/Music/Playlists/BestOf.m3u -f D:\Musik\Playlists\BestOf.m3u -o D:\Musik\ -n \volume1\Music\
Es gibt noch 2 weitere Optionen, da wäre einerseits -h
, dadurch wird die Hilfe des Programms ausgegeben. Dann gibt es noch die Option -l
, mit der ihr das erweiterte Logging einschalten könnt. Hier erhaltet ihr zusätzlichen Output in der Kommandozeile. Der zusätzliche Output kann helfen, Fehler zu finden.
Die Konfigurationsdatei
Wenn ihr öfters Playlists importieren wollt – weil ihr sie beispielsweise außerhalb von Plex verwaltet/ändert – wäre es mühsam jedes Mal URL, Token und ID angeben zu müssen. Daher liegt dem Programm eine kleine Konfigurationsdatei (config.ini) bei. Ihr könnt darin alle Optionen hinterlegen. Das Programm verwendet automatisch die Werte aus der Konfigurationsdatei. Aber Achtung: Die Werte werden durch die Kommandozeilen-Argumente ersetzt. Wollt ihr kurzfristig also andere Werte verwenden, müsst ihr diese nicht gleich in der Datei ändern, sondern könnt diese per Kommandozeile überschreiben. Ihr könnt Optionen in der Konfigurationsdatei auch ausblenden, ohne sie zu löschen. Setzt dazu den Wert einer Option (nur der Teil nach dem =) in spitze Klammern < >.
Anwendungsbeispiele
Bei mir läuft der Plex Media Server auf einer Synology DiskStation, welchen Server ihr verwendet, ist dabei allerdings egal. Die Anwendungsbeispiele funktionieren unabhängig davon. Für die Beispiele sind URL, Token und ID in der Konfigurationsdatei hinterlegt.
Beispiel 1: Netzlaufwerk
- Annahme: Der lokale Pfad eurer Musik-Titel in der Playlist lautet
D:\Musik\<Interpret>\<Album>\<Titel>
Auf dem Server ist eure Musik unter/volume1/PlexMusik/<Interpret>/<Album>/<Titel>
gespeichert. - Voraussetzung: Ihr habt einen Server-Ordner als Netzlaufwerk eingebunden (Angenommen
/volume1/PlexMusik/
als LaufwerkZ:
). Es muss dabei nicht einmal der Ordner mit euerer Musik sein, es muss lediglich ein Ordner, auf dem Plex Leserechte besitzt. Wollt ihr mehrere Mediatheken mit Playlists versorgen, reicht also ein Ordner für alle. - Exportiert die Playlist bzw. kopiert die Playlist auf das Netzlaufwerk. (Angenommen unter
Z:\Plalists\
) - Führt jetzt das Programm über die Kommandozeile aus. Verwendet dabei Folgende Optionen
-f Z:\Playlists\Playlist.m3u -o D:\Musik\ -n /volume1/PlexMusik/ -r /volume1/PlexMusik/Playlists/Playlist.m3u
Die Option -p
ist nicht notwendig, da die Playlist bereits auf einem, für Plex zugänglichen Ordner auf dem Server gespeichert ist. Nutzt ihr das Netzlaufwerk auch als lokale Quelle ändert sich dadurch wenig, der lokale Pfad würde dann anstatt D:\Musik\ Z:\
lauten.
Beispiel 2: Manueller Upload
Habt ihr keinen Server-Ordner als Netzwerkressource eingebunden, funktioniert alles genauso, wie im obigen Beispiel, verwendet beim Aufruf des Programms einfach zusätzlich die Option -p
. Sobald die Playlist konvertiert wurde, stoppt das Programm, ihr erhaltet einen Hinweis in der Kommandozeile. Ladet jetzt einfach die konvertierte Datei auf den Server und speichert sie unter dem Pfad, den ihr mit -r
angegeben habt. Drückt dann in der Kommandozeile eine beliebige Taste, um den Import fortzusetzen.
Cloud/Sync Client
Synchronisiert ihr einen Serverordner via Cloud oder Sync-Client (z.B. Nextcloud, Synology Drive, etc.) müsst ihr trotzdem die Option -p angeben. Das Programm läuft schneller ab, als die konvertierte Datei mit dem Server synchronisiert werden kann.
Überprüft ob der Sync mit dem Server erfolgt ist, ehe ihr das Programm fortsetzt.
Möchtet Ihr noch detailliertere Schritt-Für-Schritt-Anleitungen für euer Synology NAS, mit viel mehr Hintergrundinformationen, Tipps und Tricks? Dann holt euch mein Wissen als als umfassendes Praxis-Handbuch. Mehr Infos findet ihr in keinem Buch zu Synology und alles in der von mir gewohnten Qualität.
Die dritte Auflage enthält Aktualisierungen zu DSM 7.1 und den Updates von WebStation, Surveillance Station und Synology Photos.
Das Buch direkt beim Verlag
Das Buch auf Amazon
Heyho.
Danke für die Anleitung bzw. den Tipp. Ich hab das ganze mit Postman gemacht, weil ich die Playlisten eh schon auf dem NAS habe. Kann es sein, dass sich der Plex Server beim Import der m3u-Dateien an Sonderzeichen wie “&” oder “%” stört und die Dateien dann einfach auslässt? Kann man das irgendwie verhindern?
Nutze Plex auf einem QNAP. Und es scheint, dass alle Dateien mit besagten Sonderzeichen (€ übrigens auch xD) beim “Upload” nicht den Playlisten in Plex hinzugefügt werden.
Bin für jeden Hinweis dankbar.
Cheers
Weiß nicht wie alt der Artikel ist aber leider funktioniert das bei mir nicht.
Der Aufruf http://[PlexServer]:32400/playlists/upload an sich wirft mir einen 404 Not Found fehler.
Nutze Plex Media server auf Synology NAS
Hallo Kaj,
Der Fehler 404 bedeutet, dass die angegebene Seite nicht gefunden werden kann. Ist der PlexServer auch unter dieser Adresse erreichbar?
Kopier die Adresse in den Browser und lass /playlists/upload… weg, damit musst du deinen Server erreichen können.
Ich habe das Script getestet und bei mir funktioniert noch alles.
Grüße
Andreas