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.videopassword : 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 : utilisez 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 : Imprimer des informations supplémentaires sur stdout.quiet : ne pas imprimer les messages sur stdout.no_warnings : ne rien imprimer pour les avertissements.forceprint : un dict avec des clés QUAND mappé sur une liste de modèles à imprimer sur la sortie standard. Les clés autorisées sont la vidéo ou n'importe quelle autre. des éléments dans utils.POSTPROCESS_WHEN. Pour des raisons de compatibilité, une seule liste est également acceptéeprint_to_file : un dict avec des clés WHEN (identiques à 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 : Forcer l'impression de l'info_dict de l'ensemble de la playlist (ou de la vidéo) en une seule ligne JSON.force_write_download_archive : Forcer l'écriture de l'archive de téléchargement indépendamment de 'skip_download' ou 'simulate'.simulate : Ne pas télécharger 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. pour une implémentationallow_unplayable_formats : Autoriser l'extraction et le téléchargement des formats illisibles.ignore_no_formats_error : Ignorer l'erreur « Aucun format vidéo » Utile pour extraire les métadonnées même si la vidéo n'est pas réellement disponible en téléchargement (expérimental)format_sort : Une liste de champs permettant de trier. les formats vidéo. Voir "Tri des formats" pour plus de détails.format_sort_force : Forcer le format_sort donné, voir "Tri des formats" pour plus de détails.prefer_free_formats : Préférer les formats vidéo avec des conteneurs gratuits aux non-libres 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 en 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, 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 fichier trim_file_name : Limiter la longueur du nom de fichier (extension exclue) windowsfilenames : Forcer les noms de fichiers à être compatibles avec Windows. . La valeur par défaut est « 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. Écrasez tous les fichiers vidéo et de métadonnées si True, écrasez uniquement. fichiers non vidéo si aucun et n'écrasez aucun fichier si Falseplaylist_items : indices spécifiques de la liste de lecture à télécharger.playlistrdom : télécharger les é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 logging.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 fichier .info.jsonclean_infojson : supprimez les métadonnées internes de l'infojsongetcomments : extrayez les commentaires vidéo. Ceux-ci ne seront pas écrits sur le disque à moins que writeinfojson ne soit également fourni.writeannotations : écrivez les annotations vidéo dans un fichier .annotations.xmlwritethumbnail : écrivez la vignette. image dans un fichierallow_playlist_files : s'il faut écrire la description des listes de lecture, les infojson, etc. également sur le disque lors de l'utilisation des options 'write*' write_all_thumbnails : écrire tous les formats de vignettes dans des fichierswritelink : écrire un fichier de raccourci Internet, en fonction de la plate-forme actuelle (.url/. webloc /.desktop)writeurllink : écrire un fichier de raccourci Internet Windows (.url)writewebloclink : écrire un fichier de raccourci Internet macOS (.webloc)writedesktoplink : écrire un fichier de raccourci Internet Linux (.desktop)writesubtitles : écrire les sous-titres de la vidéo dans un fichierwriteautomaticsub : Écrivez les sous-titres générés automatiquement dans un fichierlistsubtitles : Répertorie 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 « tout » auquel 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 : Conserver le fichier vidéo après post-traitementdaterange : Un objet utils.DateRange , téléchargez uniquement si la date de téléchargement est comprise 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 ignorées. min_views : un nombre entier représentant le nombre minimum de vues