Synology DiskStation Audio Station

Audio Station – Wiedergabelisten importieren

Möchtet ihr Wiedergabelisten in die Audio Station importieren, werdet ihr die Menüs vergeblich nach einer entsprechenden Option absuchen. Dabei geht das eigentlich ganz einfach. Einige Stolpersteine muss man aber dennoch beachten. In diesem Artikel erkläre ich nicht nur wie es geht, sondern gebe euch noch ein kleines Hilfsmittel an die Hand.

Unterstützte Formate

Die Audio Station unterstützt Wiedergabelisten in den Formaten M3U, PLS und WPL. Liegt eure Playlist in einem der Formate vor habt ihr schon beinahe gewonnen. M3U ist eines der verbreiteteren Formate. Habt ihr die Playlist in einer Audio Software oder einer eigenen Playlist-Software erstellt, könnt ihr die Playlist meist in verschiedenen Formaten exportieren. Liegt eure Liste in einem Format vor, das die Audio Station nicht unterstützt, musst ihr versuchen das Format per Software umzuwandeln.

Die Wiedergabeliste importieren

Um eine Wiedergabeliste zum “importieren” reicht es einfach, sie an den richtigen Ort zu kopieren. Die Audio Station kennt – neben den Smart-Listen – zwei Arten von Wiedergabelisten, Gruppen-Wiedergabelisten und persönliche Wiedergabelisten. Je nachdem ob ihr eure Wiedergabeliste für euch behalten wollt oder für alle Nutzer der Audio Station zugänglich machen wollt, müsst ihr die Liste an einen anderen Ort kopieren.

Für Gruppen-Wiedergabelisten kopiert ihr die Datei einfach in den /music Ordner eurer DiskStation.

/volumeX/music

Für persönliche Wiedergabelisten kopiert ihr die Datei in den Playlist-Ordner eurer persönlichen Audio Station (dazu muss diese aktiviert sein).

/volumeX/homes/<User>/music/playlists

Pfade anpassen

Das wäre alles so einfach, gäbe es da nicht ein Problem: In der Wiedergabeliste sind die einzelnen Lieder mit ihren Dateipfaden eingetragen und da ihr die Wiedergabeliste nicht auf eurer DiskStation erstellt habt, sind dort die Pfade eingetragen, unter denen die Lieder auf eurem Rechner liegen, z.B. M:\Musik\Queen\... anstatt /volume1/music/Queen/... .

Das Skript anlegen

Das lässt sich aber leicht beheben. Ich habe dazu ein Skript erstellt dass die Pfade ersetzt. Damit ihr das Skript nutzen könnt geht ihr folgendermaßen vor:

  1. Ladet das Skript hier herunter.
  2. Kopiert das Skript auf eure DiskStation. Alternativ könnt ihr das Skript über die Kommandozeile selbst anlegen, den Inhalt findet ihr weiter unten.
  1. Speichert die Datei. Ihr könnt jetzt mit dem Skript die Pfade eurer Playlist anpassen.

Das Skript nutzen

Das Skript führt ihr auf der Kommandozeile (z.B. über PuTTY) aus und gebt dabei die gewünschten Angaben als Parameter an.

  1. Aktiviert unter DSM > Systemsteuerung > Terminal & SNMP den SSH-Zugriff.
  2. Verbindet euch via PuTTY mit eurer DiskStation.
  3. Wechselt mit cd in den Ordner, in dem das Skript liegt. und führt das Skript aus:
sh PlaylistReplacer.sh <PlaylistDatei> <OriginalPfad> <PfadAufDerDS>
sh PlaylistReplacer-sh /volume1/music/MyMusic.m3u M:/Musik /volume1/music
  • Wechselt ihr vorher nicht in den Ordner, in dem das Skript liegt, müsst ihr den Pfad zum Skript beim Aufruf mit angeben: sh /volume...../PlaylistReplacer.sh
  • Liegt die Playlist-Datei im Ordner, in dem Ihr euch befindet, reicht die Angabe des Dateinamen, ansonsten müsst ihr auch hier den gesamten Pfad angeben.

Das Skript anpassen

Das Skript ist recht klein und einfach:

#!/bin/bash

FILE=$1
OLD_PATH=$2
NEW_PATH=$3

#Hier werden alle Backslashes in der Datei in Slashes umgewandelt und der veränderte Inhalt in die Datei temp gespeichert.
sed 's!\\!/!g' "${FILE}" > temp
#Hier werden dann alle Vorkommen von OLD_PATH mit NEW_PATH ersetzt. Der Inhalt wird dann in die ursprüngliche Datei geschrieben.
sed s!${OLD_PATH}!${NEW_PATH}!g temp > "${FILE}"

#Die temporäre Datei wird wieder gelöscht. Ja mir ist bewusst, dass es auch ohne temporäre Datei ginge aber das Skript war nur eine kurze Bastelarbeit und nachdem es funktioniert hat habe ich es gelassen, wie es ist.
rm temp

Das Skript überschreibt die Originaldatei, wollt ihr das nicht, fügt ein NEW_FILE=$4 in Zeile 6 ein und in Zeile 10 ersetzt ihr FILE durch NEW_FILE. Dann könnt ihr beim Aufruf des Skripts als vierten Parameter einen neuen Dateinamen angeben. Oder ihr ersetzt "${FILE}" durch einen Dateinamen (z.B. output.m3u) und benennt die Datei dann selbst um.

Ähnliche Beiträge

4 thoughts on “Audio Station – Wiedergabelisten importieren

  1. Hallo Andreas,

    danke für deinen Kommentar und natürlich auch für deinen Ursprungsbeitrag! Ich habe es mir nochmal angeschaut und eine Lösung gefunden. Das Problem in meinem Skript war tatsächlich, dass ich meine Eingangspfade in doppelte Anführungszeichen gesetzt habe, um Leerzeichen darin zu tolerieren:
    OLD_PATH=”D:/Benutzer/xyz/Eigene Musik”
    NEW_PATH=”..”
    Das hat dann allerdings das zweite sed-Kommando nicht akzeptiert, bis ich es auch in doppelte Anführungszeichen gesetzt habe:
    sed “s+${OLD_PATH}+${NEW_PATH}+g” temp > “${FILE}”
    Außerdem habe ich im Skript noch eine Zeile ergänzt, die aus der von iTunes kommenden .m3u Datei Zeilen mit #EXTINF am Anfang löschen und habe das Ganze umgebaut, sodass die Variablen im Skript definiert werden und das ganze in einer for-Schleife durch alle Dateien läuft. So sieht das gesamte Skript dann aus:
    #!/bin/bash
    # Quelle: https://blog.viking-studios.net/audio-station-wiedergabelisten-importieren/

    # Läuft in einer for Schleife durch alle .m3u Dateien in dem Ordner in dem das Skript ausgeführt wird.
    for FILE in *.m3u; do
    #ACHTUNG: Bei den Pfaden \ in / umwandeln und so eintragen!
    OLD_PATH=”D:/Benutzer/Paddy/Eigene Musik”
    NEW_PATH=”..”

    echo “Input file: ${FILE}”
    echo “Replace path: $OLD_PATH”
    echo “With path $NEW_PATH”

    #Hier werden alle Backslashes in der Datei in Slashes umgewandelt und der veränderte Inhalt in die Datei temp gespeichert.
    sed ‘s!\\!/!g’ “${FILE}” > temp
    #Hier werden dann alle Vorkommen von OLD_PATH mit NEW_PATH ersetzt. Der Inhalt wird dann in die ursprüngliche Datei geschrieben.
    sed “s+${OLD_PATH}+${NEW_PATH}+g” temp > “${FILE}”
    #Hier werden alle Zeilen beginnend mit #EXTINF gelöscht und in temp zwischengespeichert.
    sed “/^#EXTINF/d” “${FILE}” > temp
    #Speichern des Inhalts von temp in FILE
    cp temp “${FILE}”

    echo “Removing temp file”
    rm temp

    done;

  2. Hey,
    das Skript hat bei mir leider nicht funktioniert..
    Die .m3u Datei ist nach Ausführung des Skripts einfach komplett leer.
    Der Fehler, der kommt ist:
    sed: -e expression #1, char 26: unterminated `s’ command
    Die Zeile:
    sed s!${OLD_PATH}!${NEW_PATH}!g temp > “${FILE}”
    löscht wohl den Inhalt meiner Datei.
    Hast du eine Idee was ich falsch mache?
    Ich habe die Pfade in Anführungszeichen gesetzt, um Leerzeichen im Pfad lesbar zu machen.

    1. Hallo Patrick

      Es kann sein, dass das Programm, mit dem du die Liste ursprünglich erstellst, diese anders formatiert.
      Mein Script ist nicht besonders intelligent, schaut das Format anders aus, läufts natürlich nicht.
      Wenn du mir mal deine Ausgangsplaylist schickst/hier reinkopierst kann ichs mir mal anschauen.

      Grüße
      Andreas

      1. Hallo Andreas,

        danke für deinen Kommentar und natürlich auch für deinen Ursprungsbeitrag! Ich habe es mir nochmal angeschaut und eine Lösung gefunden. Das Problem in meinem Skript war tatsächlich, dass ich meine Eingangspfade in doppelte Anführungszeichen gesetzt habe, um Leerzeichen darin zu tolerieren:
        OLD_PATH=“D:/Benutzer/xyz/Eigene Musik“
        NEW_PATH=“..“
        Das hat dann allerdings das zweite sed-Kommando nicht akzeptiert, bis ich es auch in doppelte Anführungszeichen gesetzt habe:
        sed „s+${OLD_PATH}+${NEW_PATH}+g“ temp > „${FILE}“
        Außerdem habe ich im Skript noch eine Zeile ergänzt, die aus der von iTunes kommenden .m3u Datei Zeilen mit #EXTINF am Anfang löschen und habe das Ganze umgebaut, sodass die Variablen im Skript definiert werden und das ganze in einer for-Schleife durch alle Dateien läuft. So sieht das gesamte Skript dann aus:
        #!/bin/bash
        # Quelle: https://blog.viking-studios.net/audio-station-wiedergabelisten-importieren/

        # Läuft in einer for Schleife durch alle .m3u Dateien in dem Ordner in dem das Skript ausgeführt wird.
        for FILE in *.m3u; do
        #ACHTUNG: Bei den Pfaden \ in / umwandeln und so eintragen!
        OLD_PATH=“D:/Benutzer/Paddy/Eigene Musik“
        NEW_PATH=“..“

        echo „Input file: ${FILE}“
        echo „Replace path: $OLD_PATH“
        echo „With path $NEW_PATH“

        #Hier werden alle Backslashes in der Datei in Slashes umgewandelt und der veränderte Inhalt in die Datei temp gespeichert.
        sed ’s!\\!/!g‘ „${FILE}“ > temp
        #Hier werden dann alle Vorkommen von OLD_PATH mit NEW_PATH ersetzt. Der Inhalt wird dann in die ursprüngliche Datei geschrieben.
        sed „s+${OLD_PATH}+${NEW_PATH}+g“ temp > „${FILE}“
        #Hier werden alle Zeilen beginnend mit #EXTINF gelöscht und in temp zwischengespeichert.
        sed „/^#EXTINF/d“ „${FILE}“ > temp
        #Speichern des Inhalts von temp in FILE
        cp temp „${FILE}“

        echo „Removing temp file“
        rm temp

        done;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.