BASH: script um eine Playlist zu erstellen

  • Hallo zusammen,


    ich habe da mal eine Frage die wahrscheinlich einfach zu klären ist. Ich habe in einem Ordner Unterordner, darin teilweise weitere Unterordner, Files liegen von der ich eine Playliste brauche.

    Nun habe ich ein simples externes script (playlist_gen.sh) welches mir vom übergebenen Ordnernamen diese erstellt. Leider klappt es aber nicht wie gewünscht da es maximal EINEN Unterordner weit geht. Irgendetwas fehlt noch in der if Abfrage um zu sehen ob es sich schon im "finalen Ordner" mit den Files befindet oder ob es erst in einen weitere Unterorder gehen muss um die Files zu finden:


    Code
    for verzeichnis in *
    do
       if [ -d "${verzeichnis}" ]
       then
           echo "${verzeichnis} ist Verzeichnis, sofern Musik drin ist erstelle ich das playlist File..."
           cd "${verzeichnis}"
           /usr/local/bin/playlist_gen.sh "$PWD"
           cd ..
       fi
    done


    Beispiel:

    /mnt/video/Unterordner1/Unterordner11/Unterordner111/files.ts

    /mnt/video/Unterordner2/files.ts


    Wenn ich das Script oben in "/mnt/video" aufrufe erstellt er in Unterordner2 auch das Playlist file. Für den Unterodner1 aber nicht - denn die files wären ja auch erst in Unterordner111.


    Wer kann mir helfen das o.g. script abzuändern?

    Danke und Gruß vorab aus NRW

    Markus

    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Probiere es mal mit find


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • mit find finde ich die Files die einem bestimmten Muster, z.B. *.mp3, entsprechen. Aber dann müsste ich mit awk oder ähnliches daraus den Ordnernamen (rückwärts vom letzten / ?) extrahieren. Das erscheint mir eine aufwendige Lösung oder stehe ich am Schlauch?

    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Mit find nach Direktories suchen, und dann Dein list_gen.sh starten.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Ok. Ich habe das nu wie folgt komplett umgebaut und es funktioniert so wie gewünscht. Hat jemand noch Verbesserungsvorschläge?

    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Wenn deine Musiksammlung sauber getaggt ist, dann hätte ich ein Java-Programm, das dir Playlisten nach bestimmten Kriterien wie zB Genre, Jahr, etc. via XML generiert. Aber für eine reine Auflistung - wie du es offenbar willst - total überladen. Bei Interesse bitte PM.


    PS: Bei ".m4a" ist noch ein Fehler - sind nur 4 Zeichen. das "m4a" mit 5 kann weg

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Bei Interesse bitte PM.

    PS: Bei ".m4a" ist noch ein Fehler - sind nur 4 Zeichen. das "m4a" mit 5 kann weg

    Nett gemeint, aber für meinen Zweck reicht das Obige. Und ja, du hast Recht: Die IF Abfrage mit 5 Zeichen ist von einem Test übergeblieben und muss natürlich raus.

    Habe noch das Erstellen eines QR Codes eingefügt und sieht nun so aus - falls jemand Bedarf hat:


    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Habe noch das Erstellen eines QR Codes eingefügt

    Häh? QR-Codes und Playlisten?

    Du nutzt einen Player, der Playlisten über QR-Codes einlesen kann? Cool!

    Wenn ja: wieviele Titel/Lieder bringst du so in einem QR-Code unter? Oder verlinkst du nur auf die Playlist?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Ja, ich habe einen Player für meine Kinder gebaut der mit selbst gedruckten Karten funktioniert. Auf einer Karte ist der QR Code (der den Pfad zur Playlist enthält) die man in einen kleinen Metallkoffer schiebt. Da drin ist ein RPi samt Webcam die ihn ausließt und dann die Musik abspielt. Vorteil ist halt gegenüber den ansonsten beliebten Tonyboxen das die Folgekosten nahezu 0 sind.




    Schick mir gern mal ne PM mit deiner Mailadresse dann sende ich dir ein kleines Video von der Kiste - ist ja offensichtlich auch VDR technisch OT :)

    Was ich noch bräuchte wäre eine Webgui um das Erstellen der Karten zu vereinfachen aber CSS, Figma oder HTML muß ich mich fast von null einarbeiten, also falls jemand Bock hat mitzuarbeiten... :)

    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Sehr, sehr cooles Projekt mit stylischer Umsetzung! :tup

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Mehr als einen RPi, ne alte USB Webcam, einen alten Lautsprecher und geg. noch eine USB Soundkarte genügen - mit "Kleinzeug" (Taster, Kabel, Wiederstände, Lötzinn etc) braucht es nicht - mit unter 40€ und einer Kiste Bier Zeit seid ihr dabei :) Und seid sicher: Kinder lieben das Teil!

    Da ich keinen 1er Pi mehr frei hatte hab ich einen 3er genommen - jetzt hat das Teil auch wlan (gut für KiKa Radio etc) und Bluetooth (z.Zt. noch unbenutzt).

    Mit einer Webgut wäre das Gerät auch "Massentauglich" denn dann braucht man z.B. das o.g. Script zur Erstellung der QRCodes und Playlisten nicht per Kommandozeile aufrufen, sondern könnte es bequem anklicken. Wenn da jemand von euch einen guten und freien "drag n drop" editor kennt der nahezu ohne Programmierkenntnisse schon Taster, Ordneranzeigen, etc in HTML/CSS giessen kann wäre ich für einen Tipp dankbar. Oder aber natürlich für Mitarbeit wenn jemanden das fließender von der Hand geht als mir. Ich schätze der Aufwand ist gering da die Backend schippte etc ja bereits fertig sind...

    "...ich bin Guybrush Threepwood - ein mächtiger Pirat!"


    VDR1: Shuttle SG31G, Zotac GT210 Silent, 2GB DDR3, Intel Core2d 2.4GHz, 3 TB über NFS, Tivii 464 DVB-S2, yaVDR 0.5 - VDR 2.0.2-3, Ubuntu 12.04.3 LTS, (ppa:yavdr/stable-vdr), VDR2: Cubietruck, Debian Wheezy, 2TB lokal, Sundtek SkyTV Ultimate IV, VDR 2.3.8, Client1: Raspberry Pi2 mit Kodi 17.6 auf Openelec, Client2: Nexus7

  • Hi zuammen!

    Ich hatte mal ein ähnliches Projekt. Habe mich aber mehr vom Original inspirieren lassen. Umgesetzt wurde es mit einem RFID-Lesegerät am PI. Eigentlich wollten wir auf die Chips kleine Spielfiguren aufkleben, sind aber irgendwie bisher nicht dazu gekommen. Basis waren alte Altiv-Lautsprecher in denen der Pi eingebaut wurde. Der RFID-Leser ist oben rausgeführt. Dann noch ein bischen Stoff drüber und ein paar Taster dran. CDs werden als mp3s per WLAN aufgespielt und somit läuft das Ding auch autak. In den Playlists sind entweder die mp3s angegeben oder ein Link zum Internet-Stream. Unsere Tochter ist echt glücklich mit dem Gerät.

    Anbei noch ein paar Bildchen.

    Schöne Grüße

    David

  • In find kann man mit -exexdir auch direkt Aktionen auf gefundene Dateien in einem Verzeichnisses ausführen.

    find -type f -a \( -iname "*.mp3" -o -iname "*.loss" -o -iname "*.aiff" -o -iname "*.m4a" \) -execdir echo {} +

    {} liefert alle gefundenen Dateien dem Verzeichnis.

    In dem Beispiel muss das echo dann noch durch den eigentlichen Befehl ersetzt werden.


    Ob es in diesem Fall was ausmacht ist fraglich, aber bei grösseren Datenmengen läuft es so deutlich schneller als mit der Shell.

    Gruss
    SHF


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!