NerdkramsProjekte
In eige­ner Sache: YouTube - wie schwer kann es schon sein?

Als youtube-dl, ein bekann­tes Werkzeug zum Offlinegucken von lang­wei­li­gem Unsinn, vor zwei Wochen recht­li­che Probleme bekam, weil die RIAA anschei­nend der Ansicht ist, dass das Besorgen urhe­ber­recht­lich geschütz­ten Popmülls kein legi­ti­mes Nutzungsbeispiel sein soll­te, geriet das Netz wie­der ein­mal in hek­ti­sche Angst, was die Zukunft des Herunterladens betrifft. Ich habe der Situation ver­gleichs­wei­se ent­spannt zuge­se­hen, denn mir war etwas aufgefallen:

Die ver­gleichs­wei­se oft genann­te Alternative you-get teilt mit youtube-dl und vie­len ande­ren Optionen das wesent­li­che Problem, dass sie in Python geschrie­ben ist. Python mag en vogue sein, weil es schnel­le Lösungen ver­spricht, aber das tat BASIC sei­ner­zeit eben auch - und BASIC war nicht dafür bekannt, vor allem elend lang­sam zu sein. Mehr noch: Nicht sel­ten fand ich auf mei­nen Systemen nach einem Pythonupgrade man­che Anwendungssoftware nicht mehr lauf­fä­hig vor, meist wegen inkom­pa­ti­bler Abhängigkeiten. Meine letz­te eige­ne Pythonsoftware - die Kuckucksuhr - ist des­halb inzwi­schen auch in Rust (dazu unten mehr) geschrie­ben. Je mehr Programme, die ich ein­set­ze, sta­tisch gelinkt wer­den, desto weni­ger wahr­schein­lich geht nach einem grö­ße­ren Update irgend­was kaputt.

piko sah als Go-Anwendung daher inter­es­sant aus, hat von youtube-dl aber die bei­den Designärgernisse abge­guckt, dass es erstens nicht nur Video-, son­dern auch Bilderplattformen unter­stüt­zen will, was die Komplexität unnö­tig erhöht, und zwei­tens - für mich selbst ganz inter­es­sant - kei­ne ein­heit­li­che Möglichkeit anbie­tet, nach dem Download nur noch die Audiodaten zu behal­ten. Der zusätz­li­che Befehl kann bei häu­fi­ger Nutzung doch recht lästig werden.

In einem Anflug gei­sti­ger Umnachtung habe ich daher laut gedacht, so was könn­te ich auch. Leider woll­te es dann auch jemand haben. Schade.

Die wesent­li­chen Funktionen soll­ten fol­gen­de sein:

  1. Keine unnö­ti­gen Spielereien. Es sol­len Videos (optio­nal: nur die Audiostreams) in der besten ver­füg­ba­ren Qualität her­un­ter­ge­la­den wer­den kön­nen. Keine Bilder. Keine GIFs.
  2. Kein Python. Aus Gründen.
  3. Einfache Erweiterbarkeit. Zwar muss natür­lich YouTube unter­stützt wer­den, aber spä­te­re Erweiterungen um ande­re Seiten soll­ten so wenig dop­pel­ten Code wie mög­lich erfordern.

Ich habe also yaydl in Rust pro­gram­miert, einer Sprache, mit der ich - schon wegen des beacht­lich guten cargo-Systems - sowie­so mal mehr machen woll­te als bloß ein biss­chen Text aus­zu­ge­ben. Zwar nut­ze ich in letz­ter Zeit vor allem Go (und Perl), aber das wäre ja kei­ne Herausforderung. Das trait-Konzept ist auch recht über­zeu­gend: Um eine wei­te­re Website neben YouTube hin­zu­zu­fü­gen, muss in yaydl nur ein Interface mit jeweils sechs Funktionen imple­men­tiert wer­den. Das soll­te schaff­bar sein.

Über Vor- und Nachteile von Go und Rust, auch gegen­über ande­ren von mir gemoch­ten Sprachen, möch­te ich an die­ser Stelle nicht dis­ku­tie­ren, das über­las­se ich irgend­wel­chen Quatschblogs, die mit so was ihr Geld ver­die­nen. Stattdessen möch­te ich die ein­gangs gestell­te Frage selbst beant­wor­ten: YouTube macht es einem wirk­lich nicht leicht, Videos her­un­ter­zu­la­den, denn direk­te URLs gibt es nicht.

Daher muss man zu einem Video erst die get_video_info-Datei her­un­ter­la­den, dort das JSON-Objekt mit den Videodaten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten Formaten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Meine erste Version macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schritten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von YouTube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklingen mei­ner Kopfschmerzen mög­li­cher­wei­se ent­spre­chend erweitern.

Immerhin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alternativen gab.

Senfecke:

  1. Stattdessen möch­te ich die ein­gangs gestell­te Frage selbst beant­wor­ten: YouTube macht es einem wirk­lich nicht leicht, Videos her­un­ter­zu­la­den, denn direk­te URLs gibt es nicht.

    Daher muss man zu einem Video erst die get_­vi­deo_­in­fo-Datei her­un­ter­la­den, dort das JSON-Objekt mit den Videodaten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten Formaten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Meine erste Version macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schritten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von YouTube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklingen mei­ner Kopfschmerzen mög­li­cher­wei­se ent­spre­chend erweitern.
    Na dann auch viel Spaß, beim regel­mä­ßi­gen Rückwärts-inge­nieu­ren und Nachpflegen, wenn YouTube wie­der mal klei­ne oder grö­ße­re Änderungen ein­baut. Es hat schon sei­nen Grund, war­um bei you­tube-dl so häu­fi­ge Updates kom­men und ande­re Projekte kei­nen Bock mehr hatten.

    Immerhin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alternativen gab.
    Na dann wol­len wir mal hof­fen, dass Du doch bald noch in ein Alter kommst, in dem Du am Anfang dann mal nicht mehr so groß die Klappe auf­reißt. Mit Deiner „Nur ich allein hab den abso­lu­ten Durchblick“-Attitüde wärst Du übri­gens auch ein per­fek­ter Verschwörungsschwurbler (btw. wür­de das Deinen Vermögensverhältnissen viel­leicht auch ganz gut tun, so wie es bei den Anderen da abgeht…).

    • Mit Deiner „Nur ich allein hab den abso­lu­ten Durchblick“-Attitüde wärst Du übri­gens auch ein per­fek­ter Verschwörungsschwurbler

      Was ist los? Ich ver­mis­se noch die Nie-Na-Nazivorwürfe, weil jemand eine nütz­li­che Software ver­öf­fent­licht und eine Andeutung der Probleme macht, die er wegen der Downloadverhinderungsstrategien (von mir auch gern »Technikverhinderung« genannt) von Googles YouTube hat. Denn ohne die­se Technikverhinderung wäre es wirk­lich kein gro­ßes Problem, son­dern im Idealfall ein Shellskript um curl.

      Der Lauffähigkeit von Software ist die Persönlichkeit des Proggers völ­lig egal. Zum Glück! ;)

      Und ich ver­mis­se die Zeiten damals, als das Internet mehr ein Plätschern als ein jede Vernunft und Zurückhaltung mit sich rei­ßen­der Strom war; damals, als ich ein­fach ein YouTube-Video pau­sie­ren konn­te, der Download wäh­rend­des­sen wei­ter­ging, so dass ich­ab war­ten konn­te, bis es kom­plett im loka­len Buffer war und es dann ohne Nachladepausen abspie­len konn­te. Na gut, ich ver­mis­se die Zeiten nicht wirk­lich. Aber so sieht das eben ohne Technikverhinderung aus. Das Problem ist hier eine hirn­los-geschäfts­tüch­tig agie­ren­de Unternehmung, die einer­seits einen Download ermög­li­chen muss (damit der »Stream« in den Browser kommt), die ande­rer­seits aber einen Download erschwe­ren oder ver­hin­dern will – und dass die­se Unternehmung auch noch sehr will­kür­lich zen­siert und dass wert­vol­le Inhalte (ich mei­ne damit nicht die Einlassungen von KenFM und Konsorten, die gute Klickbringer und Reklamevermarkter für YouTube sind) aus Bullshitgründen ver­schwin­den, macht die Sache nicht bes­ser. Für mich ist jeden­falls klar, auf wel­cher Seite die­ses absur­den Theaters das Arschloch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…

      • Für mich ist jeden­falls klar, auf wel­cher Seite die­ses absur­den Theaters das Arschloch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…
        Wie bit­te? Ich soll jetzt Teil der gro­ßen YouTube-Verschwörung sein oder was?

        Ich kri­ti­sier­te ledig­lich, in wel­chem groß­kot­zi­gen Tonfall der Autor sich mal wie­der äußer­te und alle ande­ren sinn­ge­mäß als doof und Idioten beschimpf­te, und er weiß mal wie­der alles bes­ser, natür­lich auch als Projekte, die sich ca. 15 Jahre schon mit dem Thema herumschlagen.

        Und ich bemerk­te, dass er sei­ne immer zur Schau gestell­te Großkotz-Attitüde (zusam­men mit Dunning-Kruger-Effekt, zu belie­bi­gen Themen) eben mit Verschwörungsschwurblern gemein­sam hat.

        Warum soll­te ich Etwas gegen sei­ne Eigenentwicklung haben? Mein Hinweis ging ledig­lich in die Richtung, dass er bes­ser Viele bei der Entwicklung um sich scha­ren soll­te (bzw. sich schon exi­stie­ren­den Gruppen anschlie­ßen soll­te, die auch schon regel­mä­ßig das Reverse-Engineering betrei­ben, etc.), denn als Ein-Mann-Projekt ist es wegen der vie­len und auch umfang­rei­che­ren Änderungen bei den Protokollen (die auch mit der Zeit immer kom­ple­xer wur­den, sie­he auch HLS, etc.) der Portale ziem­lich auf­wän­dig, die Software funk­ti­ons­fä­hig zu halten.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr...
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <span style=""> <strike>

Datenschutzhinweis: Ihre IP-Adresse wird nicht gespeichert. Details finden Sie hier.

Senf hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr...
 

Du willst deinen Senf dazugeben, dir ist aber der Senf ausgegangen? Dann nutz den SENFOMATEN! Per einfachem Klick kannst du fertigen Senf in das Kommentarfeld schmieren, nur dazugeben musst du ihn noch selbst.