NerdkramsProjekte
In eige­ner Sache: You­Tube – wie schwer kann es schon sein?

Als youtube-dl, ein bekann­tes Werk­zeug zum Off­line­gucken von lang­wei­li­gem Unsinn, vor zwei Wochen recht­li­che Pro­ble­me bekam, weil die RIAA anschei­nend der Ansicht ist, dass das Besor­gen urhe­ber­recht­lich geschütz­ten Pop­mülls kein legi­ti­mes Nut­zungs­bei­spiel sein soll­te, geriet das Netz wie­der ein­mal in hek­ti­sche Angst, was die Zukunft des Her­un­ter­la­dens betrifft. Ich habe der Situa­ti­on ver­gleichs­wei­se ent­spannt zuge­se­hen, denn mir war etwas aufgefallen:

Die ver­gleichs­wei­se oft genann­te Alter­na­ti­ve you-get teilt mit youtube-dl und vie­len ande­ren Optio­nen das wesent­li­che Pro­blem, dass sie in Python geschrie­ben ist. Python mag en vogue sein, weil es schnel­le Lösun­gen 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 Syste­men nach einem Pythonup­grade man­che Anwen­dungs­soft­ware nicht mehr lauf­fä­hig vor, meist wegen inkom­pa­ti­bler Abhän­gig­kei­ten. Mei­ne letz­te eige­ne Python­soft­ware – die Kuckucks­uhr – ist des­halb inzwi­schen auch in Rust (dazu unten mehr) geschrie­ben. Je mehr Pro­gram­me, 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-Anwen­dung daher inter­es­sant aus, hat von youtube-dl aber die bei­den Designär­ger­nis­se abge­guckt, dass es erstens nicht nur Video‑, son­dern auch Bil­der­platt­for­men unter­stüt­zen will, was die Kom­ple­xi­tät unnö­tig erhöht, und zwei­tens – für mich selbst ganz inter­es­sant – kei­ne ein­heit­li­che Mög­lich­keit anbie­tet, nach dem Down­load nur noch die Audio­da­ten zu behal­ten. Der zusätz­li­che Befehl kann bei häu­fi­ger Nut­zung doch recht lästig werden.

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

Die wesent­li­chen Funk­tio­nen soll­ten fol­gen­de sein:

  1. Kei­ne unnö­ti­gen Spie­le­rei­en. Es sol­len Vide­os (optio­nal: nur die Audio­streams) in der besten ver­füg­ba­ren Qua­li­tät her­un­ter­ge­la­den wer­den kön­nen. Kei­ne Bil­der. Kei­ne GIFs.
  2. Kein Python. Aus Gründen.
  3. Ein­fa­che Erwei­ter­bar­keit. Zwar muss natür­lich You­Tube unter­stützt wer­den, aber spä­te­re Erwei­te­run­gen um ande­re Sei­ten soll­ten so wenig dop­pel­ten Code wie mög­lich erfordern.

Ich habe also yaydl in Rust pro­gram­miert, einer Spra­che, 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 Her­aus­for­de­rung. Das trait-Kon­zept ist auch recht über­zeu­gend: Um eine wei­te­re Web­site neben You­Tube hin­zu­zu­fü­gen, muss in yaydl nur ein Inter­face mit jeweils sechs Funk­tio­nen imple­men­tiert wer­den. Das soll­te schaff­bar sein.

Über Vor- und Nach­tei­le von Go und Rust, auch gegen­über ande­ren von mir gemoch­ten Spra­chen, möch­te ich an die­ser Stel­le nicht dis­ku­tie­ren, das über­las­se ich irgend­wel­chen Quatsch­blogs, die mit so was ihr Geld ver­die­nen. Statt­des­sen möch­te ich die ein­gangs gestell­te Fra­ge selbst beant­wor­ten: You­Tube macht es einem wirk­lich nicht leicht, Vide­os 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 Video­da­ten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten For­ma­ten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Mei­ne erste Ver­si­on macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schrit­ten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von You­Tube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklin­gen mei­ner Kopf­schmer­zen mög­li­cher­wei­se ent­spre­chend erweitern.

Immer­hin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alter­na­ti­ven gab.

Senfecke:

  1. Statt­des­sen möch­te ich die ein­gangs gestell­te Fra­ge selbst beant­wor­ten: You­Tube macht es einem wirk­lich nicht leicht, Vide­os 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 Video­da­ten her­aus­su­chen und in die­sem in einer undo­ku­men­tier­ten Liste an num­me­rier­ten For­ma­ten das beste her­aus­su­chen und des­sen URL extra­hie­ren. Mei­ne erste Ver­si­on macht genau das, jedoch scheint es emp­foh­len zu sein, aus die­sen vier Schrit­ten (min­de­stens) zwölf zu machen. Ich ver­mu­te, die Macher von You­Tube haben sich etwas dabei gedacht, ich wer­de den Code nach Abklin­gen mei­ner Kopf­schmer­zen mög­li­cher­wei­se ent­spre­chend erweitern.
    Na dann auch viel Spaß, beim regel­mä­ßi­gen Rück­wärts-inge­nieu­ren und Nach­pfle­gen, wenn You­Tube wie­der mal klei­ne oder grö­ße­re Ände­run­gen 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 Pro­jek­te kei­nen Bock mehr hatten.

    Immer­hin: Ich begin­ne zu ver­ste­hen, war­um es bis­her so weni­ge gute Alter­na­ti­ven 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 Klap­pe auf­reißt. Mit Dei­ner „Nur ich allein hab den abso­lu­ten Durchblick“-Attitüde wärst Du übri­gens auch ein per­fek­ter Ver­schwö­rungs­schwur­b­ler (btw. wür­de das Dei­nen Ver­mö­gens­ver­hält­nis­sen viel­leicht auch ganz gut tun, so wie es bei den Ande­ren da abgeht…).

    • Mit Dei­ner „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-Nazi­vor­wür­fe, weil jemand eine nütz­li­che Soft­ware ver­öf­fent­licht und eine Andeu­tung der Pro­ble­me macht, die er wegen der Down­load­ver­hin­de­rungs­stra­te­gien (von mir auch gern »Tech­nik­ver­hin­de­rung« genannt) von Goo­g­les You­Tube hat. Denn ohne die­se Tech­nik­ver­hin­de­rung wäre es wirk­lich kein gro­ßes Pro­blem, son­dern im Ide­al­fall ein Shell­skript um curl.

      Der Lauf­fä­hig­keit von Soft­ware ist die Per­sön­lich­keit des Prog­gers völ­lig egal. Zum Glück! ;)

      Und ich ver­mis­se die Zei­ten damals, als das Inter­net mehr ein Plät­schern als ein jede Ver­nunft und Zurück­hal­tung mit sich rei­ßen­der Strom war; damals, als ich ein­fach ein You­Tube-Video pau­sie­ren konn­te, der Down­load wäh­rend­des­sen wei­ter­ging, so dass ich­ab war­ten konn­te, bis es kom­plett im loka­len Buf­fer war und es dann ohne Nach­la­de­pau­sen abspie­len konn­te. Na gut, ich ver­mis­se die Zei­ten nicht wirk­lich. Aber so sieht das eben ohne Tech­nik­ver­hin­de­rung aus. Das Pro­blem ist hier eine hirn­los-geschäfts­tüch­tig agie­ren­de Unter­neh­mung, die einer­seits einen Down­load ermög­li­chen muss (damit der »Stream« in den Brow­ser kommt), die ande­rer­seits aber einen Down­load erschwe­ren oder ver­hin­dern will – und dass die­se Unter­neh­mung auch noch sehr will­kür­lich zen­siert und dass wert­vol­le Inhal­te (ich mei­ne damit nicht die Ein­las­sun­gen von KenFM und Kon­sor­ten, die gute Klick­brin­ger und Rekla­me­ver­mark­ter für You­Tube sind) aus Bull­shit­grün­den ver­schwin­den, macht die Sache nicht bes­ser. Für mich ist jeden­falls klar, auf wel­cher Sei­te die­ses absur­den Thea­ters das Arsch­loch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…

      • Für mich ist jeden­falls klar, auf wel­cher Sei­te die­ses absur­den Thea­ters das Arsch­loch steht. Ein ziem­lich tech­no­kra­ti­sches Loch ist es…
        Wie bit­te? Ich soll jetzt Teil der gro­ßen You­Tube-Ver­schwö­rung sein oder was?

        Ich kri­ti­sier­te ledig­lich, in wel­chem groß­kot­zi­gen Ton­fall der Autor sich mal wie­der äußer­te und alle ande­ren sinn­ge­mäß als doof und Idio­ten beschimpf­te, und er weiß mal wie­der alles bes­ser, natür­lich auch als Pro­jek­te, die sich ca. 15 Jah­re schon mit dem The­ma herumschlagen.

        Und ich bemerk­te, dass er sei­ne immer zur Schau gestell­te Groß­kotz-Atti­tü­de (zusam­men mit Dun­ning-Kru­ger-Effekt, zu belie­bi­gen The­men) eben mit Ver­schwö­rungs­schwur­b­lern gemein­sam hat.

        War­um soll­te ich Etwas gegen sei­ne Eigen­ent­wick­lung haben? Mein Hin­weis ging ledig­lich in die Rich­tung, dass er bes­ser Vie­le bei der Ent­wick­lung um sich scha­ren soll­te (bzw. sich schon exi­stie­ren­den Grup­pen anschlie­ßen soll­te, die auch schon regel­mä­ßig das Rever­se-Engi­nee­ring betrei­ben, etc.), denn als Ein-Mann-Pro­jekt ist es wegen der vie­len und auch umfang­rei­che­ren Ände­run­gen bei den Pro­to­kol­len (die auch mit der Zeit immer kom­ple­xer wur­den, sie­he auch HLS, etc.) der Por­ta­le ziem­lich auf­wän­dig, die Soft­ware funk­ti­ons­fä­hig zu halten.

  2. Cool von dir, dass du die­se Lern­er­fah­rung in dei­nen Blog gepackt hat. Manch­mal muss man es halt erst wirk­lich bau­en um zu sehen war­um etwas kom­pli­ziert ist.

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...
 

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.

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

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.