You-get: ein einfacher Downloader zum Auslesen des Webs
(github.com/soimort)- You-Get ist ein kleines Kommandozeilen-Utility zum Herunterladen von Medieninhalten wie Videos, Audio und Bildern aus dem Web und wird verwendet, wenn es keine andere einfache Methode gibt
- Von vielen Websites wie YouTube, Youku, niconico, Tumblr, SoundCloud, Instagram, bilibili und TikTok lassen sich Videos, Bilder und Audio herunterladen oder Online-Videos in einen Media-Player streamen
- Mit
--infolassen sich verfügbare Qualitäten und Formate prüfen und mit--itagauswählen, aber die Formatauswahl ist auf den meisten unterstützten Websites im Allgemeinen nicht implementiert; Standard ist die höchste Qualität - Die Installation ist über
pip, GitHub-Download oder -Klon, Homebrew, FreeBSD-pkg, Flox usw. möglich; empfohlene Abhängigkeiten sind Python 3.7.4 oder höher, FFmpeg 1.0 oder höher und optional RTMPDump - Es bietet direkten URL-Download, Webpage-Scraping, Download auf Basis der Google-Videos-Suche, Pausieren und Fortsetzen, Proxy-Unterstützung, Laden von Cookies sowie Ausgabe extrahierter URLs und JSON, aber einige Funktionen sind noch experimentell oder nicht stabilisiert
Was You-Get macht
- You-Get ist ein kleines Kommandozeilen-Utility zum Herunterladen von Medieninhalten aus dem Web
- Zielinhalte sind Videos, Audio und Bilder
- Es wird verwendet, wenn es im Web keine andere einfache Download-Möglichkeit gibt
- Als Gründe für die Nutzung werden persönliches Herunterladen zum eigenen Genuss, Kontrolle über Online-Videos mit blockierter Speicherung, das Umgehen geschlossener Technologien oder proprietärem JavaScript bzw. Flash sowie eine Orientierung an Hacker-Kultur und freier Software genannt
- Die Hauptfunktionen sind wie folgt
- Video- und Audio-Downloads von populären Websites wie YouTube, Youku und Niconico
- Streaming von Online-Videos in einem Media-Player ohne Webbrowser
- Auslesen von Webseiten zum Herunterladen interessanter Bilder
- Download beliebiger nicht-HTML-Inhalte wie Binärdateien
Installation und Laufzeitumgebung
- Empfohlene Abhängigkeiten sind Python 3.7.4 oder höher, FFmpeg 1.0 oder höher und optional RTMPDump
- Laut Mitteilung vom 30. Mai 2022 wird die Unterstützung für Python 3.5, 3.6 und 3.7 letztlich eingestellt
- Es gibt mehrere Installationswege
- Auf PyPI mit
pip install you-get - Für Zsh-Nutzer mit Antigen via
antigen bundle soimort/you-get - Download des stabilen
master-Branches oder desdevelop-Branches von GitHub - Für Entwickler empfohlen:
git clone git://github.com/soimort/you-get.git - Unter macOS mit
brew install you-get - Unter FreeBSD mit
pkg install you-get - Auf Mac, Linux und Windows WSL mit
flox install you-get
- Auf PyPI mit
- Shell-Autovervollständigungen für Bash, Fish und Zsh finden sich unter
contrib/completion - Je nach Installationsmethode ist ein Upgrade mit
pip install --upgrade you-get, durch Herunterladen des neuesten Releases oder durch erzwungene Neuinstallation desdevelop-Branches möglich
Grundlegender Download-Ablauf
- Beim Herunterladen eines Videos kann man mit
you-get -i URLoder--infozunächst die verfügbaren Qualitäten und Formate prüfen- Die Ausgabe enthält Website, Titel, Stream, Container, Qualität, Größe und ein Beispiel für das beim Download zu verwendende
--itag - Der Standard-Download verwendet den obersten Eintrag in der Liste
- Die Ausgabe enthält Website, Titel, Stream, Container, Qualität, Größe und ein Beispiel für das beim Download zu verwendende
- Wenn ein anderes Format gewünscht ist, wird der in der Ausgabe angezeigte
--itag-Wert verwendet- Im Beispiel des YouTube-Videos
Me at the zookann mit--itag=18mp4 ausgewählt werden
- Im Beispiel des YouTube-Videos
- Falls ein YouTube-Video Untertitel hat, werden diese zusammen mit der Videodatei im SubRip-Untertitelformat heruntergeladen
- Die Formatauswahl ist auf den meisten unterstützten Websites noch nicht als allgemeine Funktion implementiert
- In diesem Fall ist das Standard-Downloadformat die höchste Qualität
- FFmpeg wird für das Herunterladen und Zusammenführen von Videos benötigt, die in mehrere Segmente gestreamt werden, sowie für hochauflösende YouTube-Videos ab 1080p
- Wenn die Segmente nach dem Download nicht zusammengeführt werden sollen, verwendet man
--no-mergeoder-n
- Wenn die Segmente nach dem Download nicht zusammengeführt werden sollen, verwendet man
Download per URL, Webseite oder Suche
- Wenn die genaue Ressourcen-URL bekannt ist, kann direkt mit
you-get URLheruntergeladen werden- Gibt man zum Beispiel eine JPEG-Bild-URL ein, werden Website, Titel, Typ und Größe angezeigt und die Datei gespeichert
- Wird statt der genauen Ressourcen-URL eine Webseiten-URL angegeben, versucht das Tool, die Seite auszulesen und interessante Elemente zu finden
- Diese Funktion ist experimentell und nicht perfekt
- Sie funktioniert am besten beim Scraping großer Bilder auf populären Websites wie Tumblr oder Blogger
- Es gibt kein universelles Muster, das auf alle Websites im Internet anwendbar ist
- Wird statt einer URL eine Zeichenkette übergeben, sucht das Tool bei Google Videos und lädt das relevanteste Video herunter
- Es ist möglicherweise nicht exakt das Gewünschte, soll aber mit hoher Wahrscheinlichkeit ein sehr plausibles Ergebnis liefern
Download-Steuerung und Ausführungsoptionen
- Während des Downloads kann mit
Ctrl+Cabgebrochen werden; im Ausgabeverzeichnis bleibt dann eine temporäre.download-Datei zurück- Bei erneutem Ausführen mit denselben Argumenten wird fortgesetzt und zwar ab der letzten Sitzung
- Wenn bereits eine vollständige Datei ohne die temporäre Erweiterung vorhanden ist, wird der Download übersprungen
--forceoder-ferzwingt einen erneuten Download und überschreibt vorhandene Dateien oder temporäre Dateien mit demselben Namen
- Mit
--output-diroder-olässt sich der Speicherpfad festlegen und mit--output-filenameoder-Oder Dateiname- Das ist nützlich, wenn der Standard-Videotitel Sonderzeichen enthält, die nicht zur aktuellen Shell, zum Betriebssystem oder Dateisystem passen
- Ebenso ist es nützlich in Batch-Download-Skripten, wenn in einem bestimmten Ordner mit einem bestimmten Namen gespeichert werden soll
- Mit
--http-proxyoder-xkann ein HTTP-Proxy angegeben werden- Standardmäßig wird die System-Proxy-Einstellung über die Umgebungsvariable
http_proxyverwendet - Zum Deaktivieren des Proxys dient
--no-proxy - Für einige Websites wie Youku kann
--extractor-proxyoder-yverwendet werden, um Videoinformationen zu extrahieren, die nur vom chinesischen Festland aus zugänglich sind
- Standardmäßig wird die System-Proxy-Einstellung über die Umgebungsvariable
--playeroder-pübergibt das Video statt des Downloads an einen Media-Player wiempvodervlc- Wenn ein Browser als Player angegeben wird, kann das Video dort ohne Werbung oder Kommentarbereich angesehen werden
- Es kann auch zum Starten anderer Download-Manager verwendet werden, passt aber womöglich nicht gut dazu
Authentifizierung, Extraktionsdaten und unterstützte Websites
- Für Inhalte, die eine Kontenanmeldung erfordern, etwa nicht öffentliche Videos, müssen Browser-Cookies mit
--cookiesoder-cübergeben werden- Aktuell unterstützte Cookie-Formate sind Mozilla
cookies.sqliteund Netscapecookies.txt
- Aktuell unterstützte Cookie-Formate sind Mozilla
--urloder-ugibt eine Liste der aus der Seite extrahierten herunterladbaren Ressourcen-URLs aus--jsongibt eine Zusammenfassung der extrahierten Daten im JSON-Format aus- Diese Funktion ist noch nicht stabilisiert, und das JSON-Schema kann künftig Breaking Changes enthalten
- Die Liste unterstützter Websites umfasst unter anderem YouTube, X(Twitter), VK, Vimeo, Tumblr, SoundCloud, Pinterest, Internet Archive, Instagram, Facebook, Dailymotion, Bandcamp, niconico, bilibili, Youku, Naver, TikTok und Zhihu
- Je nach Website unterscheidet sich die Unterstützung für Video, Bild und Audio
- Für Websites, die nicht in der Liste stehen, sucht der generische Extractor auf der Seite nach interessanten Ressourcen und lädt sie herunter
Fehlermeldungen und Lizenz
- Wenn sich gewünschte Inhalte nicht herunterladen lassen, sollte zuerst Known Bugs geprüft werden
- Vor dem Melden neuer Probleme oder dem Beitragen sollte die Beitragsrichtlinie gelesen werden
- Kurze Fragen können im Gitter-Kanal #soimort/you-get gestellt werden
- Die Software wird unter der MIT license vertrieben
- Die Software wird ohne Gewähr „wie besehen“ bereitgestellt
- Für Urheberrechtsverletzungen oder andere rechtswidrige Nutzungszwecke übernehmen die Autoren keine Verantwortung
- Das Repository stellt nur den Code bereit; die Art der Nutzung liegt im Ermessen der Nutzer
1 Kommentare
Meinungen auf Hacker News
Eine Zeit lang war Internet teuer und die Bandbreite gering, aber ich hörte gern Musik und Vorlesungen auf YouTube. Irgendwann wurde mir klar, dass man 90 % der Bandbreitenkosten sparen kann, wenn man nur den Audiostream lädt.
youtube-dlundyt-dlphatten ein-G-Flag, das die URL für das angeforderte Format/die angeforderte Qualität ausgibt; am Computer holte ich mir die URL per Kommandozeile und spielte sie in VLC ab.Auf dem Handy nutzte ich anfangs einen umständlichen Umweg: erst per SSH die Datei auf einen VPS laden und dann wieder aufs Telefon herunterladen. Später merkte ich, dass der Browser auf dem Telefon die URL direkt abspielen kann, und baute ein PHP-Frontend für
youtube-dl -G -f bestaudio {url}.Es ist inzwischen nicht mehr online und den Code habe ich auch verloren, aber im Grunde war es ein Einzeiler.
you-getscheint mit--url/-udenselben Zweck zu unterstützen, deshalb wollte ich darauf hinweisen, wie nützlich diese Funktion ist.Wenn man mit ausgeschaltetem Bildschirm abspielt, spart man außerdem 80 % Akku. YouTube weiß das ebenfalls, weshalb sie Hintergrundwiedergabe, die nur den Audiostream abruft, wohl zu einem Bezahl-Feature gemacht haben.
youtube-dlscheint nicht mehr richtig zu funktionieren; ich musste den Fork yt-dlp verwenden. So ein Projektwechsel fühlt sich immer unsicher an, aber immerhin scheint es weit verbreitet zu sein.node-redeinen Telegram-Bot gebaut, der YouTube-Links verarbeitet, wenn man sie teilt.Links werden in eine FIFO geschickt, und ein kleiner Daemon lädt sie der Reihe nach herunter und speichert sie in einem dedizierten Incoming-Ordner. Der Bot kann nur Audio oder auch das komplette Video laden; für die Telegram-ID meiner Mutter habe ich eingestellt, dass nur Audio geladen wird.
Jellyfin überwacht diesen Ordner, sodass meine Mutter die Dateien herunterladen oder direkt anhören kann. In zwei Jahren hat sie über 1 TB Hörbücher heruntergeladen und ist sehr zufrieden damit.
Daemon-Code: https://gist.github.com/entropie/d265e94136b9777cc6b3190189b...
144p-Video ist auf seltsame Weise friedlich und angenehm. Man wird nicht von leuchtenden Farben oder komplexen Details abgelenkt und kann sich einfach aufs Zuhören konzentrieren.
Ich nutze das hauptsächlich für Mitglieder-exklusive Videos, die selbst mit YouTube Premium nicht im Hintergrund laufen. Bei jedem iOS-Update hoffe ich, dass Apple diesen „Glitch“ nicht schließt.
Dieses Projekt scheint nicht zu wollen, dass man nur Issues meldet, ohne einen Fix-PR einzureichen.
Dort steht sinngemäß: „Um ein Problem zu melden, das Sie bei der Nutzung von you-get entdeckt haben, müssen Sie einen Pull Request öffnen …“ So etwas habe ich vorher noch nicht gesehen.
Gefordert sind eine ausführliche Beschreibung des Problems und mindestens ein Commit, der dieses Problem als Unit-Test behandelt. Das Wort „addressing“ ist hier nicht ideal; „demonstrating“ wäre wohl besser gewesen.
you-getexperimentiere derzeit mit einem aggressiven Ansatz für die Issue-Bearbeitung, und Bugreports müssten über Pull Requests im Code behandelt werden.https://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
Vermutlich gab es einfach zu viel Spam. Nebenbei:
tests/test.pyscheint die Extractors direkt gegen mehrere Websites auszuführen, und ich konnte nicht finden, wo Netzwerk-Requests und -Responses gemockt werden. Vielleicht soll das den Prozess für PR-Ersteller einfacher machen.you-getnicht, also weiß ich nicht, womit sie zu kämpfen haben.Es könnte eine wirksame Methode sein, eine Flut wiederholter Issues von Leuten herauszufiltern, die ein Kommandozeilenprogramm nicht richtig ausführen können.
Wenn das die Wartung des Projekts erleichtert und es dadurch länger weiterbesteht, finde ich das in Ordnung.
Nur anhand des Titels und des Anfangs der Beschreibung dachte ich, es sei ein heuristisches Tool, das versucht, irgendetwas von einer Seite herauszufischen. Also ein Tool, das nützlich ist, wenn es keine Unterstützung für eine bestimmte Website gibt – meist also „wenn yt-dlp sie nicht unterstützt“.
Tatsächlich ist es aber eine Extractor-basierte Architektur mit separaten Extractors für jede halbwegs populäre Quelle. Am Ende wirkt es damit eher wie ein einfacherer yt-dlp-Klon.
Ich frage mich, ob noch jemand ständig diesen Fehler bekommt.
Er beginnt mit
you-get: [error] oops, something went wrong.und weist darauf hin, Netzwerkprobleme zu prüfen, auf die neueste Version zu aktualisieren, bekannte Bugs zu prüfen und die Option--debugauszuführen.Das Debug-Flag hat auch nicht wirklich geholfen; bei
pattern = str(pattern, 'latin1')kamTypeError: decoding to str: need a bytes-like object, NoneType found.Ich wollte sehen, ob sich eine Altersbeschränkung umgehen lässt, aber derselbe Fehler trat auch bei Videos ohne Altersbeschränkung auf.
Man kann mit einem Tool wie Pyenv auf eine aktuelle Python-Version wechseln oder ein Docker-Image starten, etwa
docker run -it -v $(pwd):/mnt python:3.13 bash, und das Utility darin ausprobieren.Kann jemand erklären, warum das besser sein soll als yt-dlp?
Zum Beispiel fand ich es überraschend, dass es einen eigenen mp4-Joiner gibt. Wenn ffmpeg bereits vorhanden ist, dürfte es kaum eine Möglichkeit geben, das selbst besser zu machen.
https://github.com/soimort/you-get/blob/develop/src/you_get/...
Es ist zwar schwierig, einen Media-Downloader im ytdl-Stil mit sitespezifischen Extraktoren und Transcoder-Libraries wirklich als „dummes“ Tool zu bezeichnen, aber mehr Projekte wie ytdl sind trotzdem gut.
Ich verstehe nicht ganz, warum Bandcamp in der Liste der unterstützten Sites steht. Bei Bandcamp kann man die Dateien einfach herunterladen, wenn man den Künstlern vorher Geld bezahlt.
Was man mit diesem Tool herunterladen kann, ist nur das, was Künstler vor dem Kauf kostenlos anhören lassen. Das mit diesem Tool herunterzuladen wirkt völlig unnötig und ein bisschen respektlos. Auf Bandcamp sind vor allem kleine unabhängige Künstler und Labels.
Auch ich persönlich möchte oder muss Medien manchmal offline konsumieren, wegen instabiler oder langsamer Netze oder teurer Provider. Das heißt nicht, dass ich später nicht bezahlen würde, wenn mir etwas gefällt.
Sieht gut gemacht aus. Aus Verbrauchersicht frage ich mich aber, warum man statt yt-dlp
you-getverwenden sollte.Welche Vorteile hat es gegenüber yt-dlp, das auf einer riesigen Zahl von Sites ziemlich gut funktioniert?
[1] https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....
In der Dokumentation steht: „Auf Google Videos suchen und herunterladen:
$ you-get "Richard Stallman eats"“.Ich lese Dokumentation nicht oft, aber diesmal habe ich sie gelesen und ein ziemlich widerliches Easter Egg gefunden.
Gefällt mir. Ich stelle mir vor, dass es schön wäre, wenn es eine Begleiterweiterung für Chrome/Firefox gäbe, die
you-getals Backend nutzt und sauber integriert ist.Noch einen Schritt weiter gedacht könnte man sich eine
you-get-Erweiterung vorstellen, die beim Aufruf von YouTube den YouTube-Player umgeht und Inhalte direkt ohne Werbung abspielt. Das ließe sich nicht nur auf YouTube, sondern auch auf andere Plattformen anwenden.https://addons.mozilla.org/en-US/firefox/addon/faststream/?u...