VideoDownloader ist ein Programm zum Herunterladen von Videos, das auf der Grundlage der Python-Bibliothek yt-dlp
entwickelt wurde.
yt-dlp ist ein funktionsreicher Befehlszeilen- Audio-/Video-Downloader, der Tausende von Websites unterstützt. Dieses Projekt ist eine Abzweigung von youtube-dl, die auf dem inzwischen nicht mehr existierenden youtube-dlc basiert.
yt-dlp unterstützt grundsätzlich alle gängigen Video-Websites. Es ist ein Befehlszeilenprogramm mit sehr leistungsstarken Funktionen und umfangreichen Parametern. Dieses Projekt basiert auf der Python-Bibliothek von yt-dlp (yt_dlp). Es nutzt die tkinter-Bibliothek, um eine GUI-Anwendung zum Herunterladen von Videos zu erstellen, wodurch die Eingabe langwieriger Befehle in der Befehlszeile entfällt und Ihnen ein einfaches Download-Erlebnis ermöglicht wird. .
Standardmäßig wird die Windows-Umgebung verwendet, ich verwende pycharm+Anaconda:
Python>=3.8
ffmpeg wird zum automatischen Zusammenführen von Audio und Video nach dem Herunterladen verwendet. Beachten Sie, dass es sich um die binäre ausführbare Datei von ffmpeg handelt, nicht um die Python-Bibliothek. Denken Sie daran, sie der Umgebungsvariablen hinzuzufügen, z. B. D:ffmpegbin
(1) Klonen Sie dieses Projekt
Git-Klon [email protected]:CQUPTLei/VideoDownloader.git
(2) Erstellen Sie eine neue virtuelle Conda-Umgebung für das Projekt, Beispiel:
conda create -n videodownload python=3.12
(3) Verwenden Sie pip, um die yt_dlp-Bibliothek zu installieren:
Conda Video-Download aktivieren pip installiere yt-dlp
Nehmen Sie unter Linux Ubuntu24.04 als Beispiel und bearbeiten Sie die virtuelle Umgebung mit vim und Python venv (Sie können auch conda verwenden):
(1) Klonen Sie das Projekt lokal
Git-Klon [email protected]:CQUPTLei/VideoDownloader.git
(2) Installieren Sie Python Venv
apt install python3.12-venv
(3) Erstellen Sie eine virtuelle Umgebung
python3 -m venv-Downloader
(4) Virtuelle Umgebung aktivieren
Quell-Downloader/bin/aktivieren
(5) Installieren Sie verwandte Bibliotheken
pip installiere yt-dlp sudo apt install python3-tk pip install Prettytable# Zum Verpacken verwenden Sie pip install pyinstaller
(6) Erteilen Sie main.py ausführbare Berechtigungen
sudo chmod 775 main.py
(7) Ausführung (Pfad beachten)
python3 main.py
Mögliche Änderungen: Wenn Sie Cookie-Dateien über den Browser abrufen, müssen Sie möglicherweise den Pfad und den Standardspeicherort ändern.
Windows:
Installieren Sie die Pyinstaller-Bibliothek:
Pip Installer Pyinstaller
Beispiel für einen Paketbefehl. Achten Sie auf jeden Pfad. Der folgende Code wird in dem Verzeichnis ausgeführt, in dem sich main.py befindet:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Downloader main.py
Ubuntu:
Ein einfaches Beispiel:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
MacOS:
Verarbeitung und Herunterladen von Videolisten hinzufügen;
Führen Sie mehrere Download-Aufgaben gleichzeitig aus.
Unterstützung weiterer benutzerdefinierter Parameter;
...
Es gibt kein spezielles Referenzhandbuch für yt_dlp auf pypi. Die verfügbaren Parameter des Befehlszeilenprogramms yt-dlp sind sowohl auf github als auch auf pypi geschrieben, aber Sie können die spezifische Implementierung von yt_dlp: YoutubeDL.py
lesen, um die verfügbaren Parameter und Bedeutungen zu erhalten .
Im Folgenden sind hauptsächlich die Parameter aufgeführt, die von yt_dlp.YoutubeDL(download_opts)
unterstützt werden.
YoutubeDL-Objekte akzeptieren viele Parameter, um den Objektkonstruktor nicht mit Argumenten zu überlasten. Diese Optionen stehen den InfoExtractors auch als Downloader zur Verfügung werden hinzugefügt, es handelt sich also um eine „gegenseitige Registrierung“. Verfügbare Optionen:Benutzername: Benutzername für Authentifizierungszwecke.Passwort: Passwort für Authentifizierungszwecke.Videopasswort: Passwort für Zugriff auf ein Video.ap_mso: Adobe Pass-Bediener-ID für mehrere Systeme.ap_username: Benutzername für mehrere Systeme-Betreiberkonten.ap_password: Passwort für mehrere System-Betreiberkonten.usenetrc: Verwenden Sie stattdessen netrc zur Authentifizierung.netrc_location: Standardmäßig ist der Speicherort der netrc-Datei ~/.netrc.netrc_cmd: Verwenden Sie einen Shell-Befehl, um Anmeldeinformationen abzurufen.verbose: Zusätzliche Informationen an stdout.quiet drucken: Keine Nachrichten an stdout.no_warnings drucken: Drucken Sie nichts für warnings.forceprint aus: Ein Diktat mit Schlüsseln, die einer Liste von Vorlagen zugeordnet sind, die auf stdout gedruckt werden sollen. Die zulässigen Schlüssel sind video oder eines der Elemente in utils.POSTPROCESS_WHEN. Aus Kompatibilitätsgründen wird auch eine einzelne Liste akzeptiertprint_to_file : Ein Diktat mit Schlüsseln WHEN (wie forceprint), das einer Liste von Tupeln mit (Vorlage, Dateiname) zugeordnet ist.forcejson: Drucken von info_dict erzwingen als JSON.dump_single_json: Erzwingen Sie das Drucken des info_dict der gesamten Wiedergabeliste (oder des Videos) als eine einzelne JSON-Zeile.force_write_download_archive: Erzwingen Sie das Schreiben des Download-Archivs unabhängig von „skip_download“ oder „simulate“.simulate: Laden Sie die Videodateien nicht herunter. Wenn nicht festgelegt (. oder Keine), nur simulieren, wenn listsubtitles, listformats oder list_thumbnails verwendet wirdformat: Videoformatcode siehe „FORMAT SELECTION“ für weitere Details. Sie können auch eine Funktion übergeben. Die Funktion verwendet „ctx“ als Argument und gibt die herunterzuladenden Formate zurück. Eine Implementierung finden Sie unter „build_format_selector“.allow_unplayable_formats: Ermöglicht das Extrahieren und Herunterladen nicht abspielbarer Formate.ignore_no_formats_error: „Nein“ ignorieren Fehler „Videoformate“. Nützlich zum Extrahieren von Metadaten, auch wenn das Video tatsächlich nicht zum Download verfügbar ist (experimentell)format_sort: A Liste der Felder, nach denen die Videoformate sortiert werden sollen. Weitere Informationen finden Sie unter „Formate sortieren“. format_sort_force: Erzwingen Sie die angegebene Formatsortierung. Weitere Informationen finden Sie unter „Formate sortieren“. Prefer_free_formats: Gibt an, ob Videoformate mit freien Containern gegenüber unfreien bevorzugt werden sollen solche mit gleicher Qualität.allow_multiple_video_streams: Ermöglicht das Zusammenführen mehrerer Videostreams zu einer einzigen Dateiallow_multiple_audio_streams: Erlaubt das Zusammenführen mehrerer Audiostreams ein einzelnes filecheck_formats Ob getestet werden soll, ob die Formate herunterladbar sind. Kann „True“ (alles markieren), „False“ (keine markieren) sein. „ausgewählt“ (ausgewählte Formate prüfen) oder Keine (nur prüfen, wenn vom Extraktor angefordert) Pfade: Wörterbuch der Ausgabepfade. Die zulässigen Schlüssel sind „home“, „temp“ und die Schlüssel von OUTTMPL_TYPES (in utils/_utils.py)outtmpl : Wörterbuch der Vorlagen für Ausgabenamen sind „default“ und die Schlüssel von OUTTMPL_TYPES (in utils/_utils.py). mit youtube-dl kann auch eine einzelne Zeichenfolge verwendet werdenouttmpl_na_placeholder: Platzhalter für nicht verfügbare Metafelder.restrictfilenames: „&“ und Leerzeichen in Dateinamen nicht zulassentrim_file_name: Länge des Dateinamens begrenzen (Erweiterung ausgeschlossen)windowsfilenames: Erzwingen Sie, dass die Dateinamen Windows-kompatibel sindignoreerrors : Bei Download-/Nachbearbeitungsfehlern nicht stoppen. Kann „only_download“ sein, um nur Download-Fehler zu ignorieren „only_download“ für CLI, aber False für APIskip_playlist_after_errors: Anzahl der zulässigen Fehler, bis der Rest der Wiedergabeliste übersprungen wirdallowed_extractors: Liste der regulären Ausdrücke, die mit zulässigen Extraktornamen abgeglichen werden sollenoverwrites: Alle Video- und Metadatendateien überschreiben, wenn True, nur Nicht-Videodateien überschreiben Dateien, wenn keine vorhanden sind, und keine Datei überschreiben, wenn Falseplaylist_items: Spezifische Indizes der herunterzuladenden Wiedergabeliste.playlistrandom: Herunterladen Playlist-Elemente in zufälliger Reihenfolge.lazy_playlist: Playlist-Einträge verarbeiten, sobald sie empfangen werden.matchtitle: Nur passende Titel herunterladen.rejecttitle: Downloads für passende Titel ablehnen.logger: Nachrichten in einer logging.Logger-Instanz protokollieren.logtostderr: Alles auf stderr drucken statt stdout.consoletitle: Zeigt den Fortschritt in der Titelleiste des Konsolenfensters an.writedescription: Schreiben Sie die Videobeschreibung in eine .description-Dateiwriteinfojson: Schreiben Sie die Videobeschreibung in eine .info.json-Dateiclean_infojson: Interne Metadaten aus infojsongetcomments entfernen: Videokommentare extrahieren, es sei denn, writeinfojson ist ebenfalls angegebenwriteannotations: Schreiben Sie die Videoanmerkungen in eine .annotations.xml-Dateiwritethumbnail: Schreiben Sie das Miniaturbild in eine Dateiallow_playlist_files: Ob die Playlist-Beschreibung, Infojson usw. auch auf die Festplatte geschrieben werden sollen, wenn die Funktion „write*“ verwendet wird. Optionenwrite_all_thumbnails: Alle Miniaturbildformate in Dateien schreibenwritelink: Eine Internet-Verknüpfungsdatei schreiben, abhängig von der aktuellen Plattform (.url/.webloc/.desktop)writeurllink: Eine Windows-Internet-Verknüpfungsdatei schreiben (.url)writewebloclink: Eine macOS-Internet-Verknüpfungsdatei schreiben (.webloc)writedesktoplink: Schreiben Sie eine Linux-Internet-Verknüpfungsdatei (.desktop)writesubtitles: Schreiben Sie die Videountertitel in eine Dateiwriteautomaticsub: Schreiben Sie die automatisch generierten Untertitel in eine Datei.listsubtitles: Listet alle verfügbaren Untertitel für das Video auf.subtitlesformat: Der Formatcode für subtitlessubtitleslangs: Liste der Sprachen der herunterzuladenden Untertitel (kann Regex sein). Den verfügbaren Untertiteln kann ein „-“ vorangestellt werden, um sie von den angeforderten Sprachen auszuschließen, z. B. ['all', '-live_chat']keepvideo: Behalten Sie die Videodatei nach der Nachbearbeitung bei.daterange: Ein utils.DateRange-Objekt, laden Sie es nur herunter, wenn das Upload-Datum im Bereich liegt.skip_download: Überspringen Sie den tatsächlichen Download der Videodatei.cachedir: Speicherort der Cache-Dateien im Dateisystem .noplaylist: Laden Sie im Zweifelsfall ein einzelnes Video anstelle einer Playlist herunter.age_limit: Eine Ganzzahl, die das Alter des Benutzers in Jahren angibt. Ungeeignete Videos für das angegebene Alter skipped.min_views: Eine Ganzzahl, die die minimale Anzahl der Aufrufe darstellt