[teilweise gelöst] Andere Unix-Utilities einbinden möglich?



  • EDIT: die noch offene Frage steht einige posts weiter unten.

    Hallo,

    Ist es möglich, andere Utilities aus einem Set heraus aufzurufen als nur die inital eingestellten?

    Ich versuche gerade, .m3u8 -Dateien mit youtube-dl zu laden, aber fahre beim Testen immer vor die selbe Wand: der Download ist “fehlerhaft” und es wird nichts im Zielordner gespeichert, nicht mal die .m3u8. Der Programmaufruf, wenn aus dem Download ins Terminal kopiert, funktioniert einwandfrei.
    (macOS 10.14.3, MV 13.2.1)

    Ich hab auch mal fachfremde Utils probiert (Komplexität rausnehmen): genauso.
    Screenshot 2019-05-13 um 22.29.13.png ( ^^^Das muß man starten durch einen Download einer .m3u8-URL, versteht sich!)
    => so geht’s nicht; aber ` /usr/bin/cal >"/Users/ich/Desktop/TEMP/cal.txt", herüberkopiert aus dem Programmaufruf ins Terminal speichert mir den Monat.

    Genauso ist es mit
    Screenshot 2019-05-13 um 22.57.08.png und /usr/local/bin/youtube-dl --hls-prefer-ffmpeg --continue --no-part "https://apasfiis.sf.apa.at/ipad/cms-worldwide/2019-05-08_1920_sd_23_Helfen-mit-Herz_____14012656__o__1174905802__s14492189_9__BLBHD_19170212P_19190213P_Q6A.mp4/playlist.m3u8" --output "/Users/ich/Desktop/TEMP/Helfen mit Herz (H) ORF.mp4"

    Bei ffmpeg und flvstream geht’s aber auch mit anderen Versionen und Pfaden als den mitgelieferten (vlc habe ich nicht probiert), ich nutze z.B. /usr/local/bin/ffmpeg.

    => Gibt es da eine Filter der nur ffmpeg, flvstream und vlc erlaubt? 😭 😭
    Oder gibt es einen kleinen Krabbler zu zermatschen? 🐞 🔨 🐞 🔨 🐞 🔨

    <träum> Wenn Programm und Schalter zu einem großen Textfeld verschmölzen und jedes Utility aufgerufen werden kann… So ein "youtube-dl … %f -o “**” -exec command ", da könnt’ man schon was mit machen… </träum>



  • @sdlgak Na, da sind zwei Returns in der Sofaritze verschwunden. Es ist spät…



  • @sdlgak sagte in Andere Unix-Utilities einbinden möglich?:

    Ist es möglich, andere Utilities aus einem Set heraus aufzurufen als nur die inital eingestellten?

    Ja. Ein Beispiel für den JDownloader: https://forum.mediathekview.de/post/6765



  • @sdlgak
    Das ist natürlich keine Beschränkung von MV was erlaubt ist. Ein Set mit yt-dl funktioniert auch wunderbar mit mp4-Dateien. Nur bei m3u8-Streams hakt es, und das scheint ein Bug/Limit von yt-dl zu sein.
    Wenn ich den Verbose-Schalter -v einbaue, sehe ich
    ERROR: fixed output name but more than one file to download
    Was laut google-Suche etwas mit dem Aufruf von yt-dl aus einer batch Datei oder einem anderen Programm und dem Escapen von Zeichen zu tun hat.
    Ich bin gerade am experimentieren, aber habe auch noch nicht herausgefunden an welchem Zeichen sich das aufhängt.



  • Aber nur mal so rein aus Neugier: Warum willst du yt-dl für m3u8 Downloads benutzen, wenn ffmpeg das schon perfekt kann?
    Ich bin ja ein großer Freund von yt-dl und nutze das täglich (gerade auch für Sachen die in der Filmliste fehlen), aber wenn die anderen Tools das besser können würde ich nicht wechseln. Ich sehe da jetzt nicht was yt-dl in dem MV-Zusammenhang besser machen würde, zumal yt-dl selbst auch nur ffmpeg aufruft.



  • @DaDirnbocher
    Danke (und extra für die schnelle Hilfe)!
    Mein Fehler lag im ausgeschalteten “externen Downloadmanager”.

    @vitusson
    Warum youtube-dl? Anders als ffmpeg und m3u8-download bekommt ytdl auch ORF-m3u8s geliefert. Hast Du eine sehr alte Version? Ich hab hier 2019.05.11 auf Mac Mojave, serviert von Homebrew. Deine Version müßte allerdings sehr alt sein; die Version history erwähnt .m3u8 erstmals für 2016.07.30.

    "Set mit yt-dl funktioniert auch wunderbar mit mp4-Dateien. "

    Die werden, so verstehe ich das, direkt unter “Download” mit dem Suffix erfaßt und gleich von MV gespeichert, ytdl kommt dabei mE gar nicht ins Spiel.

    Kurzer Zufallsfilm als Test für wer was kann vom ORF (der ist am zickigsten):

    youtube-dl:

    /usr/local/bin/youtube-dl --hls-prefer-ffmpeg  --continue  --no-part  "https://apasfiis.sf.apa.at/ipad/cms-worldwide/2019-05-08_1920_sd_23_Helfen-mit-Herz_____14012656__o__1174905802__s14492189_9__BLBHD_19170212P_19190213P_Q6A.mp4/playlist.m3u8"  --output " ... ORF SHELLytdl.mp4"
    

    => OK. Auch mit -vvv kein “error” in der Ausgabe.

    ffmpeg: (die Vorschau hier zeigt Teile davon fett und kursiv an => ignorieren, das ist nicht von mir)

    /usr/local/bin/ffmpeg -i https://apasfiis.sf.apa.at/ipad/cms-worldwide/2019-05-08_1920_sd_23_Helfen-mit-Herz_____14012656__o__1174905802__s14492189_9__BLBHD_19170212P_19190213P_Q6A.mp4/playlist.m3u8 -c copy -bsf:a aac_adtstoasc " ... ORF SHELLffmp.mp4"
    

    => Fehler 403:

    [https @ 0x7fefcddeef00] HTTP error 403 Access denied.
    [hls,applehttp @ 0x7fefcc000600] Failed to open segment 0 of playlist 0 
    

    … Fehler für alle Segmente …

    https @ 0x7fefce3a4640] HTTP error 403 Access denied.
    [hls,applehttp @ 0x7fefcc000600] Failed to open segment 12 of playlist 0
    [hls,applehttp @ 0x7fefcc000600] Error when loading first segment 'https://varorfvod.sf.apa.....playlist.m3u8: Invalid data found when processing input
    

    m3u8-download:

    /Users/ ... /3u8-download https://apasfiis.sf.apa.at/ipad/cms-worldwide/2019-05-08_1920_sd_23_Helfen-mit-Herz_____14012656__o__1174905802__s14492189_9__BLBHD_19170212P_19190213P_Q6A.mp4/playlist.m3u8   " ... ORF MVm3dl.mp4"
    

    => Hier blitzen auch 403er auf, Endausgabe:

    [hls,applehttp @ 0x7ffab5807800] Error when loading first segment 'https://varorfvod....
    

    Alle drei Downloader habe ich an .m3u8-Dateien von WDR, ORF und SRF auch in MV probiert. Keine konnte geladen werden, nicht einmal die .m3u8 wurde gespeichert. Bei SRF und WDR waren alle drei Downloader erfolgreich, aber auch nur in der Shell.
    Das hakt bei der Übergabe nach extern, auch wenn das Log fälschlich " … [Download ist fertig und hat geklappt, Programm ist ein Downloadmanager, …" meldet.
    Jetzt stellt sich die Frage: ist das nur bei meinem sehr zerbastelten System so? Nur auf Macs?
    Wenn nicht: Da youtube-dl sehr verbreitet ist und gut gepflegt wird, könnte die nächste große Version von MV es vielleicht einbauen oder in der Anleitung/FAQ eine Installationsanleitung dafür.
    Wenn ja: Danke für Eure Mitdenken!



  • @sdlgak ffmpeg und orf: da gibts das stichwort user-agent.



  • @DaDirnbocher

    @sdlgak ffmpeg und orf: da gibts das stichwort user-agent.

    In der Shell kann ich mit ffmpeg -user_agent 'Mozilla' eine .m3u8 vom ORF runterladen, ohne User Agent nicht.
    In MV geht beides nicht für m3u8.
    => Der UA räumt schon mal das “HTTP error 403 Access denied” aus dem Weg (Danke für den Tip!) 👍🏻 , aber die Übergabe an ffmpeg für m3u8 klappt weiterhin nicht.



  • @sdlgak sagte in Andere Unix-Utilities einbinden möglich?:

    In der Shell kann ich mit ffmpeg -user_agent 'Mozilla' eine .m3u8 vom ORF runterladen, ohne User Agent nicht.
    In MV geht beides nicht für m3u8.

    Dann hast du irgendwas verbaselt in deinem Set.
    Mit

    -user_agent "Mozilla" -i %f -c copy -bsf:a aac_adtstoasc **
    

    klappt der Download deiner Beispiel-URL anstandslos.



  • @vitusson

    Dann hast du irgendwas verbaselt in deinem Set.

    Du hast Recht. 👍 Es waren " " um die **. Vielleicht packt MV den Output-Pfad selbst schon in " ", dann würde sein öffnendes "von meinem öffnenden " wieder geschlossen und der Speicherpfad wäre ein leeres "".
    Ffmpeg mit user_agent, ohne " " holt mir jetzt auch ORF-.m3u8.

    Bleibt nur die Frage warum cal extern funktioniert und youtube-dl nicht. Vielleicht weil der Ausgabepfad bei cal nicht mit ** sondern direkt (allerdings zwar in " ", aber ohne die ** von MV (das dann seine eigenen " " darum gelegt hätte?) angegeben wurde?

    Egal, für heute bin ich happy!
    Danke für Eure Hilfe!



  • @sdlgak sagte: Bleibt nur die Frage warum cat extern funktioniert und youtube-dl nicht.

    Was meinst du mit “extern”? Nicht aus MV heraus, sondern direkt aus der Shell? Das klappt ja bei dir sehr wohl. Und aus MV heraus ist das auch kein Problem, wenn du die Syntax beachtest (die " " sind nur für Windows, bei Unixoiden funktionieren die aus Java heraus nicht); der Schalter lautet:

    --hls-prefer-ffmpeg --continue --no-part %f --output **
    

    MV_youtube-dl-Set.png

    Hab das mit 3 ORF-Sendungen erfolgreich getestet.

    Aber wie hier schon gesagt wurde: Die ganze Übung ist relativ sinnlos, denn das mit MV gepackte FFmpeg macht das alles auch, wenn man den UA mitgibt (nur beim ORF notwendig)…



  • @styroll
    Bei mir klappt’s nicht. Frische Standardsets importiert, “Mac Speichern” geändert wie angegeben --> “fehlerhaft”.
    Screenshot 2019-05-15 um 16.04.17.png Aber wenn es bei Dir geht liegt es wohl an meinem zerbastelten System.

    (die " " sind nur für Windows, bei Unixoiden funktionieren die aus Java heraus nicht)

    Ha! Ja! Hätte ich das eher gewußt! 💡 Danke!

    Was ich mit “extern” meine, sorry, das war schlampig formuliert. Gemeint sind die nicht von MV mitgelieferten Binaries (oder deren anderswo liegende Namensvettern), sondern die ‘MV-fremden’ “externen” cal und youtube-dl. Jetzt, wo klar ist dass ytdl nur bei mir nicht läuft, reduziert sich das auf die Frage was an meinem System hakt.

    Aber wie hier schon gesagt wurde: Die ganze Übung ist relativ sinnlos, denn das mit MV gepackte FFmpeg macht das alles auch, wenn man den UA mitgibt (nur beim ORF notwendig)…

    Volle Zustimmung. Danke für’s Mitdenken!



  • @sdlgak sagte: “Mac Speichern” geändert wie angegeben

    Du hast also nur ein Speichern-Set?

    Das Problem ist, dass man bei deinem Screenshot nur die youtube-dl-Einstellungen sieht, nicht die anderen Sets/Subsets (Bereich darüber und links davon).

    Wenn du mehrere Speichern-Sets hast, musst du beim DL das gewünschte Set (mit youtube-dl) angeben…

    EDIT:

    @sdlgak sagte: jetzt, wo klar ist dass ytdl nur bei mir nicht läuft, reduziert sich das auf die Frage was an meinem System hakt.

    Jetzt widersprichst du dir aber (?):

    @sdlgak sagte: Ich versuche gerade, .m3u8 -Dateien mit youtube-dl zu laden […] Der Programmaufruf, wenn aus dem Download ins Terminal kopiert, funktioniert einwandfrei.

    Also wenn bei dir der DL auf der Kommandozeile geht, liegt es doch nicht an deinem System, sondern an deinen MV-Settings.



  • Du hast also nur ein Speichern-Set?

    Nö, wieso?

    Das Problem ist, dass man bei deinem Screenshot nur die youtube-dl-Einstellungen sieht, nicht die anderen Sets/Subsets (Bereich darüber und links davon).

    Das sieht so aus:
    Screenshot 2019-05-16 um 19.39.43.png

    Wenn du mehrere Speichern-Sets hast, musst du beim DL das gewünschte Set (mit youtube-dl) angeben…

    Mach ich jedesmal, das hat im Namen auch “TEST” damit es im Kontextmenü bwz. beim folgenden Dialog auffällt.

    @sdlgak sagte: jetzt, wo klar ist dass ytdl nur bei mir nicht läuft, reduziert sich das auf die Frage was an meinem System hakt.

    Jetzt widersprichst du dir aber (?):

    NNjjjjeeeein… Es ist wohl die Schnittstelle von MV zu den Utilities. MV alleine (die mitgelieferten Sachen und ihre Namensvettern tun es ja jetzt alle) oder eine Shell im Terminal tun es ja.

    Ich hab inzwischen weiter getestet, mit einem neu aufgesetzten MV:

    • MV frisch runtergeladen und den bisherigen .mediathek3-Ordner umbenannt.
    • Neues MV gestartet, in der Ersteinrichtung Geo = EBU (oder war das schon? egal, irrelevant) und Download-Ordner eingestellt, dann ‘Abos sofort starten’ eingeschaltet, gleichzeitige Downloads = 9, und geogeblockte in Blacklist rausfiltern.
    • Bei “Sets bearbeiten” das Standardset “Mac Speichern” dupliziert (dann muss ich ggf. nicht erst wieder Standardsets unter “Importieren” neu anlegen) und umbenannt, darin auf niedrige Auflösung gestellt (damit Tests schneller fertig sind) und Unterordner für Thema/Abo erstellen ausgeschaltet.
    • In diesem Set unter “Hilfsprogramme” dann ffmpeg nach oben geschoben (erspart auf die Dauer so einige Klicks wenn man ständig in diesem Programm herum ändert), und ihm den nötigen User Agent eingetragen.
    • Filmliste gefiltert: nur ORF, SRF, WDR (wg. m3u8), sowie Dauer ≤4 min (kurze Testdauer).

    Außerdem kontrolliert, dass für MV vom System zugelassen sind:

    • Bedienungshilfen
    • Festplattenvollzugriff
    • Automation (Finder, das ist wohl für die Spotlight-Kommentare)

    Dann probiert:

    • Dieses Set (mit ffmpeg) getestet an m3u8s von ORF, SRF, WDR
      => alle erwartungsgemäß heruntergeladen
    • Versucht, stdout oder stderr in eine Datei schreiben zu lassen, also ffmpeg mit -user_agent "Mozilla" -i %f -c copy -bsf:a aac_adtstoasc ** 2>~/Desktop/TEMP/stdErr.txt
      => kein Download, kein stdErr.txt (aber im Terminal OK)
    • Mal ohne ein > (falls das mit MVs <> kollidiert), dafür piepsen lassen: && osascript -e beep
      => kein Film, kein Text, kein Tönchen (aber im Terminal OK)

    Also geht es schon nicht wenn ich über die vorgesehenen Download-Befehle hinaus o.g. Befehle in der Schalter-Zeile dranhänge.

    Ich werd das jetzt so lassen, es ist ja für den alltäglichen Nutzen nicht relevant.



  • Hab keinen Mac, aber unter Windows bedeuten die Felder “Programm” und “Schalter” auch genau das.

    Programm → nur den Pfad zur einer Executable
    Schalter → nur die Schalter zu eben jener ausführbaren Datei

    Wenn man mehrere Befehlszeilenkommandos ausführen will, gibt man als Programm die systemspezifische Shell an und als Schalter alles weitere. Wenn man beim escapen und quoten keine Fehler macht, sollte das klappen… Und wenn’s komplizierter wird, steckt man die Befehle halt in ein Script und ruft dann das als Programm auf.

    Beispiel für Windows:
    Programm → C:\Windows\System32\cmd.exe
    Schalter → /d /c "foobar && ( echo YAY & exit /b 0 ) || ( echo MEH >&2 & exit /b 666)"

    Tipp: wenn die Zieldatei nicht existiert (oder kleiner 250 KiB ist), markiert MV den Download immer als fehlerhaft. Ansonsten bestimmt der Exit Code des Programms den Status in MV.


Log in to reply
 

84
Online

3.6k
Users

2.9k
Topics

18.7k
Posts