VideoDownloader est un programme de téléchargement de vidéos développé sur la base de la bibliothèque python yt-dlp
.
yt-dlp est un téléchargeur audio/vidéo en ligne de commande riche en fonctionnalités prenant en charge des milliers de sites Web. Ce projet est un fork de youtube-dl basé sur le youtube-dlc, aujourd'hui disparu.
yt-dlp prend essentiellement en charge tous les sites Web vidéo courants. Il s'agit d'un programme en ligne de commande doté de fonctions très puissantes et de paramètres riches. Ce projet est développé sur la base de la bibliothèque python de yt-dlp (yt_dlp). Il utilise la bibliothèque tkinter pour créer une application GUI pour le téléchargement de vidéos, éliminant ainsi le besoin de saisir de longues commandes sur la ligne de commande et vous offrant une expérience de téléchargement simple. .
L'environnement Windows est utilisé par défaut, j'utilise pycharm+Anaconda :
python>=3.8
ffmpeg est utilisé pour fusionner automatiquement l'audio et la vidéo après le téléchargement. Notez qu'il s'agit du fichier exécutable binaire de ffmpeg, pas de la bibliothèque python. N'oubliez pas de l'ajouter à la variable d'environnement, telle que : D:ffmpegbin
(1) Cloner ce projet
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Créez un nouvel environnement virtuel conda pour le projet, exemple :
conda create -n videodownload python=3.12
(3) Utilisez pip pour installer la bibliothèque yt_dlp :
conda activer le téléchargement vidéo pip installer yt-dlp
Sous Linux, prenez Ubuntu24.04 comme exemple, utilisez vim pour éditer, environnement virtuel python venv (vous pouvez également utiliser conda) :
(1) Cloner le projet localement
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Installer Python Venv
apt installer python3.12-venv
(3) Créer un environnement virtuel
python3 -m venv téléchargeur
(4) Activer l'environnement virtuel
téléchargeur de source/bin/activer
(5) Installer les bibliothèques associées
pip installer yt-dlp sudo apt installer python3-tk pip install Prettytable# Pour l'empaquetage, utilisez pip install pyinstaller
(6) Donnez les autorisations exécutables main.py
sudo chmod 775 main.py
(7) Exécution (notez le chemin)
python3 main.py
Modifications possibles : Si vous utilisez pour obtenir des fichiers cookies depuis le navigateur, vous devrez peut-être modifier le chemin et l'emplacement de stockage par défaut devra peut-être être modifié.
Fenêtres :
Installez la bibliothèque pyinstaller :
pip installer pyinstaller
Exemple de commande d'empaquetage, faites attention à chaque chemin. Le code suivant est exécuté dans le répertoire où se trouve main.py :
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Téléchargeur main.py
Ubuntu :
Un exemple simple :
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
Mac OS :
Ajouter le traitement et le téléchargement de listes de vidéos ;
Effectuez plusieurs tâches de téléchargement en même temps ;
Prend en charge plus de paramètres personnalisés ;
...
Il n'existe pas de manuel de référence spécial pour yt_dlp sur pypi. Les paramètres disponibles du programme de ligne de commande yt-dlp sont écrits à la fois sur github et pypi, mais vous pouvez lire l'implémentation spécifique de yt_dlp : YoutubeDL.py
pour obtenir les paramètres disponibles et leur signification. .
Voici principalement les paramètres pris en charge par yt_dlp.YoutubeDL(download_opts)
.
Les objets YoutubeDL acceptent beaucoup de paramètres. Afin de ne pas saturer le constructeur d'objets en arguments, il reçoit à la place un dictionnaire d'options. Ces options sont disponibles via l'attribut params pour que les InfoExtractors s'enregistrent également comme téléchargeur en charge des InfoExtractors. y sont ajoutés, il s'agit donc d'un "enregistrement mutuel". Options disponibles : nom d'utilisateur : nom d'utilisateur à des fins d'authentification. mot de passe : mot de passe à des fins d'authentification. mot de passe vidéo : mot de passe pour accéder à une vidéo.ap_mso : identifiant d'opérateur multi-système Adobe Pass.ap_username : nom d'utilisateur du compte d'opérateur multi-système.ap_password : mot de passe du compte d'opérateur multi-système.usenetrc : utiliser plutôt netrc pour l'authentification.netrc_location : emplacement par défaut du fichier netrc. ~/.netrc.netrc_cmd : utilisez une commande shell pour obtenir les informations d'identificationverbose : imprimez des informations supplémentaires sur stdout.quiet : n'imprimez pas de messages sur stdout.no_warnings : N'imprimez rien pour warns.forceprint : un dict avec des clés WHEN mappées à une liste de modèles à imprimer sur la sortie standard. Les clés autorisées sont la vidéo ou l'un des éléments de utils.POSTPROCESS_WHEN pour des raisons de compatibilité, une seule liste est également acceptéeprint_to_file. : Un dict avec les clés WHEN (identique à forceprint) mappé à une liste de tuples avec (modèle, nom de fichier)forcejson : forcer l'impression d'info_dict en tant que JSON.dump_single_json : force l'impression de l'info_dict de la liste de lecture entière (ou de la vidéo) sous la forme d'une seule ligne JSON.force_write_download_archive : force l'écriture de l'archive de téléchargement indépendamment de "skip_download" ou "simulate".simulate : ne télécharge pas les fichiers vidéo s'ils ne sont pas définis (. ou Aucun), simuler uniquement si listsubtitles, listformats ou list_thumbnails est utiliséformat : Code de format vidéo voir "FORMAT. SELECTION" pour plus de détails. Vous pouvez également passer une fonction. La fonction prend 'ctx' comme argument et renvoie les formats à télécharger. Voir "build_format_selector" pour une implémentationallow_unplayable_formats : Autoriser l'extraction et le téléchargement des formats illisibles.ignore_no_formats_error : Ignorer "Non erreur "formats vidéo". Utile pour extraire des métadonnées même si la vidéo n'est pas réellement disponible en téléchargement (expérimental) format_sort : A liste des champs par lesquels trier les formats vidéo. Voir « Formats de tri » pour plus de détails.format_sort_force : Forcer le format_sort donné, voir « Formats de tri » pour plus de détails.prefer_free_formats : S'il faut préférer les formats vidéo avec des conteneurs gratuits aux non-libres. ceux de même qualité.allow_multiple_video_streams : Autoriser la fusion de plusieurs flux vidéo en un seul fichierallow_multiple_audio_streams : Autoriser la fusion de plusieurs flux audio dans un seul fichiercheck_formats S'il faut tester si les formats sont téléchargeables. Peut être True (cocher tout), False (cocher aucun), Chemins 'selected' (vérifier les formats sélectionnés), ou None (vérifier uniquement si demandé par l'extracteur) : Dictionnaire des chemins de sortie autorisés sont 'home' 'temp' et les clés de OUTTMPL_TYPES (dans utils/_utils.py)outtmpl. : Dictionnaire de modèles pour les noms de sortie. Les clés autorisées sont « par défaut » et les clés de OUTTMPL_TYPES (dans utils/_utils.py pour des raisons de compatibilité). avec youtube-dl, une seule chaîne peut également être utiliséeouttmpl_na_placeholder : espace réservé pour les champs méta indisponibles.restrictfilenames : ne pas autoriser les "&" et les espaces dans le nom de fichiertrim_file_name : limiter la longueur du nom de fichier (extension exclue)windowsfilenames : forcer les noms de fichiers à être compatibles avec Windowsignorer les erreurs : Ne pas s'arrêter sur les erreurs de téléchargement/post-traitement. Peut être 'only_download' pour ignorer uniquement les erreurs de téléchargement. 'only_download' pour CLI, mais False pour APIskip_playlist_after_errors : nombre d'échecs autorisés jusqu'à ce que le reste de la liste de lecture soit ignoré.allowed_extractors : liste des expressions régulières à comparer aux noms d'extracteurs autorisés. overwrites : écraser tous les fichiers vidéo et de métadonnées si True, écraser uniquement les fichiers non vidéo fichiers si Aucun et n'écraser aucun fichier si Falseplaylist_items : Indices spécifiques de la playlist à télécharger.playlistrdom : Télécharger éléments de la liste de lecture dans un ordre aléatoire.lazy_playlist : traiter les entrées de la liste de lecture au fur et à mesure de leur réception.matchtitle : télécharger uniquement les titres correspondants.rejecttitle : rejeter les téléchargements pour les titres correspondants.logger : enregistrer les messages dans une instance de journalisation.Logger.logtostderr : imprimer tout sur stderr au lieu de stdout.consoletitle : Afficher la progression dans la barre de titre de la fenêtre de la console.writedescription : Écrire la description de la vidéo dans un fichier .descriptionwriteinfojson : Écrire la description de la vidéo dans un .info.json fileclean_infojson : supprimez les métadonnées internes de infojsongetcomments : extrayez les commentaires vidéo. Cela ne sera pas écrit sur le disque à moins que writeinfojson ne soit également fourni.writeannotations : écrivez les annotations vidéo dans un fichier .annotations.xmlwritethumbnail : écrivez l'image miniature dans un fichierallow_playlist_files : S'il faut également écrire la description des listes de lecture, les informations json, etc. sur le disque lors de l'utilisation de l'option 'write*' optionswrite_all_thumbnails : Écrivez tous les formats de vignettes dans des fichierswritelink : Écrivez un fichier de raccourci Internet, en fonction de la plate-forme actuelle (.url/.webloc/.desktop)writeurllink : Écrivez un fichier de raccourci Internet Windows (.url)writewebloclink : Écrivez un fichier de raccourci Internet macOS (.webloc)writedesktoplink : Écrivez un fichier de raccourci Internet Linux (.desktop)writesubtitles : Écrivez les sous-titres de la vidéo dans un fichierwriteautomaticsub : Écrivez les sous-titres générés automatiquement dans un fichierlistsubtitles : Liste tous les sous-titres disponibles pour la vidéosubtitlesformat : Le code de format des sous-titressubtitleslangs : Liste des langues des sous-titres à télécharger (peut être une regex La liste peut contenir « all » pour faire référence à tous). les sous-titres disponibles. La langue peut être préfixée par un "-" pour l'exclure des langues demandées, par exemple ['all', '-live_chat']keepvideo : Conservez le fichier vidéo après le post-traitementdaterange : Un objet utils.DateRange, téléchargez uniquement si upload_date est dans la plage.skip_download : Ignorez le téléchargement réel de la vidéo filecachedir : Emplacement des fichiers de cache dans le système de fichiers False pour désactiver le cache du système de fichiers. .noplaylist : téléchargez une seule vidéo au lieu d'une liste de lecture en cas de doute.age_limit : un nombre entier représentant l'âge de l'utilisateur en années. Les vidéos inappropriées pour l'âge donné sont. skipped.min_views : un nombre entier représentant le nombre minimum de vues</span