[Linux Script] Automatischer YouTube Trailer Download

  • Dieses kleine Bash Script lädt aus YouTube Trailer lokal herunter und speichert sie in eurem Medienverzeichnis.

    Ablauf des Skripts:

    • Scanne definierte Medienverzeichnisse nach existierenden .nfo Dateien und fehlenden Trailern
    • Suche nach einer TMDb ID in der Nfo
    • Benutze gefundene TMDb ID um über deren API die hinterlegte YouTube ID des Trailers zu erhalten (Sprache kann festgelegt werden im Skript)
    • Downloade den Trailer in bestmöglicher .mp4 Qualität und speichere ihn neben dem Film mit dem Prefix "%moviename%-trailer.mp4"

    Das wars auch schon.

    Link:
    https://raw.githubusercontent.com/sualfred/perso…dl/trailerdl.sh

    Voraussetzung:

    • Linux KnowHow
    • Eigener TheMovieDB API Key (see https://developers.themoviedb.org/3 )
    • youtube-dl / curl / jq
    • Pfadanpassung im Script
    • Eine saubere Ordnerstruktur ohne alte .nfo Leichen und Co.

    Keine Schönheit das Script, aber läuft 1a.
    Bitte stets daran denken, bei themoviedb.org broken Links zu richten oder fehlende zu ergänzen. Dann profitieren wir alle davon.

    Falls wer Danke sagen will: Freibier motiviert :) (siehe Signatur)

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

    2 Mal editiert, zuletzt von sualfred (19. Juni 2018 um 07:46)

  • Kleines erwähnenswertes Update:
    Es kam vor das Clips anstatt Trailern geladen wurden. Hab die Sache gefixt und jetzt werden nur noch Trailer gesaugt.
    Auch kann man den Script nun manuell die gewollte Sprache übermitteln

    Code
    ./trailerdl.sh en
    ./trailerdl.sh de
    ...
    usw.

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

  • Moin zusammen,

    kleine Ergänzung für Synolgy Benutzer.

    Als root bei putty anmelden:

    Code
    sudo -i

    dann letzte youtube-dl version laden:

    Code
    sudo wget https://yt-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl

    und Rechte vergeben:

    Code
    chmod a+x /usr/local/bin/youtube-dl

    Skript oben wie beschrieben anpassen und über den Aufgabenplaner als root ausführen.

    @sualfred, was soll ich sagen, absolut genial, es funktioniert auch unter dem Linux für Anfänger (DSM/Synology) :) DANKE DANKE!!!

    Viele Grüße
    Seger

  • Ich nochmal :-).

    Kann mir vielleicht noch einer einen Tipp geben, wieso das Skript nicht meine Haupt-Ordner mit Leerzeichen nicht als Ordner akzeptiert?

    Die Pfade sind doch eigentlich schon mit "" eingeschlossen, oder muss da in der Schleife noch was angepasst werden?
    -> Bin für jeden Tipp dankbar.

    Auf normale Ordner ohne Leerzeichen funktioniert es.

    Aber prinzipiell sollte es auch auf Ordner mir Leerzeichen gehen, meine anderen Skripte gehen nämlich alle auf die selben Ornder.

    Anbei noch meine aktuellen Einstellungen:

    Code
    PATHS=( "/volume1/DiskStation/- Filme" "/volume1/DiskStation/- Kinderfilme" )
    
    
    Fehler:
    find: `/volume1/DiskStation/-': No such file or directory
    find: `Filme': No such file or directory
    find: `/volume1/DiskStation/-': No such file or directory
    find: `Kinderfilme': No such file or directory

    Vielleicht kann es ja mal jemand mit Leerzeichen testen und kann mir den entscheidenden Hinweiß geben?

    Danke und viele Grüße
    Seger

  • Hey :-),

    genau da waren die "" nicht gesetzt, klasse...war gestern wohl schon zu "spät". Danke Dir, echt genial!

    Sag mal, siehst du vielleicht noch eine Möglichkeit das Log entsprechend nach "Fehlern" und "Erolgreich" zu trennen. In meinem Kopf wäre da noch eine Prüfung inkl. Schleife welche dafür sorgt bei den Filmen bei den er keinen Trailer gefunden hat, aber eine TMDB ID den Pfad zum Film zur TMDB im [definition='1','0']log[/definition] setzt mit dem Vermerk das kein Trailer vorhanden ist. Dann hätte man eine Datei in der man schnell zur Seite kommt bei dem es kein Trailer gibt und ich und andere könnten die Liste Stück für Stück versuchen abzuarbeiten. Nur eine Idee für Irgendwann und aber auch vielleicht zu viel des Guten. Ist wie gesagt nur eine Idee.

    DANKE NOCHMAL!

    Bin durch deine Hilfe jetzt nochmal deine anderen Skripte durchgegangen und schaue mir mal dein Filebot/Watchdog mal genauer an. Vielleicht komme ich da nochmal an anderer Stelle auf dich zu ;-).

    Viele Grüße dein Fanboy ;-)))

    Seger

  • Hallo @sualfred.

    bin gerade dabei Dein interessantes Skript (unter Ubuntu 16.04) zu testen. Habe da auch gleich einen kleinen Verbesserungsvorschlag:
    Das Listen der Abhängigkeiten (youtube-dl / curl / jq) im Skriptkopf bzw. die Abfrage, ob diese installiert sind.

    Bei mir erscheint leider folgende Fehlermeldung, mit der ich nichts anzufangen weiss ...:

    jq: error (at <stdin>:0): Cannot iterate over null (null)

    (Offensichtlich führt das dazu, dass keine YouTube-ID ermittelt werden kann.) (TheMovieDB API Key ist vorhanden)

    Ich nutze: 2x Odroid C2 + 2x Aml-S912-Box (CoreELEC); Skin: Estuary Mod v2 - vielen Dank an: PvD! :thumbup:
    Info: Ich habe eine Emby-Resistenz, daher keine Infektion möglich. [bm]

  • Hallo @sualfred.

    bin gerade dabei Dein interessantes Skript (unter Ubuntu 16.04) zu testen. Habe da auch gleich einen kleinen Verbesserungsvorschlag:
    Das Listen der Abhängigkeiten (youtube-dl / curl / jq) im Skriptkopf bzw. die Abfrage, ob diese installiert sind.

    Bei mir erscheint leider folgende Fehlermeldung, mit der ich nichts anzufangen weiss ...:

    jq: error (at <stdin>:0): Cannot iterate over null (null)

    (Offensichtlich führt das dazu, dass keine YouTube-ID ermittelt werden kann.) (TheMovieDB API Key ist vorhanden)

    Hey du,

    ich kann dir leider auch nicht ganz weiterhelfen, aber hier ein Link, der dein "Problem" reproduziert":
    https://markhneedham.com/blog/2015/10/0…over-null-null/

    Liegt wohl an deiner Version von jq, da die Abfrage eigentlich richtig aussieht.

    Lade dir nochmal die letzte Version runter:
    https://packages.ubuntu.com/search?keywords=jq
    https://stedolan.github.io/jq/download/

    Die Prüfung macht aus meiner Sicht keinen Sinn im Skript, da ja alle unterschiedliche Systeme haben.
    Den Fehler werden wir schon finden ...

    Viele Grüße
    Seger

  • Bei mir läuft jq-1.5-1-a5b5cbe - also sehr neu - was für eine Version läuft denn bei Dir? (jq --version)

    Ich nutze: 2x Odroid C2 + 2x Aml-S912-Box (CoreELEC); Skin: Estuary Mod v2 - vielen Dank an: PvD! :thumbup:
    Info: Ich habe eine Emby-Resistenz, daher keine Infektion möglich. [bm]

  • Bei mir ist es jq-1.4-1-e73951f

    Dein Key geht auch und themovidedb spuckt Daten aus? Testen mit -> http://api.themoviedb.org/3/movie/284053…TEN&language=de

    Edit:
    Hab gerade auf jq-1.5-1-a5b5cbe geupdated und bei mir gehts 1a

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

  • Bei mir ist es jq-1.4-1-e73951f

    Dein Key geht auch und themovidedb spuckt Daten aus? Testen mit -> http://api.themoviedb.org/3/movie/284053…TEN&language=de

    Edit:
    Hab gerade auf jq-1.5-1-a5b5cbe geupdated und bei mir gehts 1a

    Hmm - scheint ein Key-Problem zu sein:

    Zitat

    status_code7
    status_message"Invalid API key: You must be granted a valid key."

    (Ja, ich habe meinen Key in die Adressleiste eingetragen ... ;) )

    Ist das nicht dieser hier (allerdings heute erst "erstellt")?

    "Unique ID"?

    Ich nutze: 2x Odroid C2 + 2x Aml-S912-Box (CoreELEC); Skin: Estuary Mod v2 - vielen Dank an: PvD! :thumbup:
    Info: Ich habe eine Emby-Resistenz, daher keine Infektion möglich. [bm]

  • @KOorDInator
    tvdb != themoviedb

    https://developers.themoviedb.org/3

    @Seger
    https://github.com/sualfred/perso…b47cdb9b1da8578

    Bitte. Da hast deine eigene missing Liste :) Spuckt dir aber nur die Liste mit fehlenden IDs aus. Hab keinen Elan gehabt jetzt um das Youtube-dl noch was drum rum zu bauen für den Rest.

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

    Einmal editiert, zuletzt von sualfred (19. Juni 2018 um 11:02)

  • @Seger
    https://github.com/sualfred/perso…b47cdb9b1da8578

    Bitte. Da hast deine eigene missing Liste :) Spuckt dir aber nur die Liste mit fehlenden IDs aus. Hab keinen Elan gehabt jetzt um das Youtube-dl noch was drum rum zu bauen für den Rest.

    Genial, super DANKE!

    Ich glaub es würde schon eine zusätzliche Zeile im Log reichen. Dann kann man in dem Log gleich zur Seite springen und das richtige Video verlinken oder auch nicht mehr funktionierende rausnehmen. Ich habe zum Bespiel gerade bei

    Code
    [definition='1','0']log[/definition] "TheMovieDB ID: https://www.themoviedb.org/movie/$TMDBID"


    https://www.themoviedb.org/movie/166666

    1/2 Videos entfernt, weil das erste nicht mehr ging aber das 2 ja. Danach ging der Download dann natürlich auch ;-).


    -------------------
    Mir ist gerade was aufgefallen, was vielleicht auch noch eine Rolle spielen kann beim Fehler von @KOorDInator (außer natürlich das er auf der falschen Seite unterwegs war :-)):

    In meinem Log ist der "Fehler" auch zwischenzeitlich aufgetreten, liegt aber am Synology internen System:

    Hier wird der @eaDir Ordner (der wird automatisch von DSM/Synology angelegt) mit durchsucht und führt zum Fehler. Die Ordner sind nur vom System "root" sichtbar und werden auf der Synology für z.B. Vorschaubilder verwendet. Um den "Fehler" auszuschließen könnte man im Skript noch hinter find noch folgendes hinzufügen:

    Code
    -not \( -path "*@eaDir*" -prune \)

    somit wäre das Skript dann auch zu 100% für Synology. Ich glaube die anderen hätten nichts gegen dem hinzufügen, da alle anderen Benutzer (Linux) den Ordner ja sowieso nicht haben.

    Hätte auch gern meinen ersten Pull reguest eingereicht aber das ging irgendwie nicht ;-).

    Wie immer Danke und viele Grüße
    Seger

  • Oder einfach checken lassen ob es ne file oder folder ist.

    Sollte damit gefixed sein.
    https://github.com/sualfred/perso…4ec332e5a2c7a64

    super genial, herzlichen Dank für dieses geniale Skript!

    Kleine Notiz für Synology Benutzer, wer wie ich Dummkopf die Logs sucht (wenn man über die Aufgabensteuerrung geht), diese befinden sich im folgenden Verzeichnis:

    /usr/syno/synoman/webapi/trailerdl-missing.[definition='1','0']log[/definition]
    /usr/syno/synoman/webapi/trailerdl.[definition='1','0']log[/definition]

    wenn man kein Pfad setzt.

    Edit: ich persönlich habe jetzt alles mit Variablen gelöst:

    Viele Grüße
    Seger

    Einmal editiert, zuletzt von Seger (19. Juni 2018 um 16:14)

  • So, nun der letzte Wunsch von dir:
    https://github.com/sualfred/perso…e699d29558ac8c1

    Jetzt wird auch der Download mit geloggt und falls es schief läuft mit missing/error [definition='1','0']log[/definition] protokolliert warum (Nicht im Land verfügbar, Video ist privat, Copyright blablalb, etc)

    Btw: Log heisst jetzt trailderdl-error.[definition='1','0']log[/definition]

    Wars das? ^^

    "I don't caretaker"

    SKIN: Embuary - Donate: HIER de Hoibe bestellen, merci :thumbup:

    Devices: Nvidia Shield + Fire TV 4k --- NAS: i3 6100 | 8GB | 15tb | OMV4 | Emby --- TV: Sony 55" XF9005 + LG 47" LM640S | 114x Adalight | Yamaha 683

Jetzt mitmachen!

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