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. Le projet est un fork de youtube-dl basé sur le youtube-dlc désormais inactif.
INSTALLATION
Instructions détaillées
Fichiers de sortie
Mise à jour
Dépendances
Compiler
UTILISATION ET OPTIONS
Options générales
Options réseau
Géo-restriction
Sélection vidéo
Options de téléchargement
Options du système de fichiers
Options des vignettes
Options de raccourci Internet
Options de verbosité et de simulation
Solutions de contournement
Options de format vidéo
Options de sous-titres
Options d'authentification
Options de post-traitement
Options du bloc de parrainage
Options de l'extracteur
CONFIGURATION
Encodage du fichier de configuration
Authentification avec netrc
Remarques sur les variables d'environnement
MODÈLE DE SORTIE
Exemples de modèles de sortie
SÉLECTION DU FORMAT
Formats de filtrage
Formats de tri
Exemples de sélection de format
MODIFIER LES MÉTADONNÉES
Exemples de modification de métadonnées
ARGUMENTS DE L'EXTRACTEUR
PLUGINS
Installation de plugins
Développement de plugins
INTÉGRATION DE YT-DLP
Exemples d'intégration
CHANGEMENTS DEPUIS YOUTUBE-DL
Nouvelles fonctionnalités
Différences de comportement par défaut
Options obsolètes
CONTRIBUER
Ouverture d'un numéro
Instructions pour le développeur
Wiki
FAQ
Vous pouvez installer yt-dlp à l'aide des binaires, pip ou à l'aide d'un gestionnaire de packages tiers. Voir le wiki pour des instructions détaillées
Déposer | Description |
---|---|
yt-dlp | Binaire zipimport indépendant de la plate-forme. Nécessite Python (recommandé pour Linux/BSD ) |
yt-dlp.exe | Binaire x64 autonome Windows (Win8+) (recommandé pour Windows ) |
yt-dlp_macos | Exécutable autonome universel MacOS (10.15+) (recommandé pour MacOS ) |
Déposer | Description |
---|---|
yt-dlp_x86.exe | Windows (Win8+) binaire x86 (32 bits) autonome |
yt-dlp_linux | Linux binaire x64 autonome |
yt-dlp_linux_armv7l | Linux autonome armv7l (32 bits) binaire |
yt-dlp_linux_aarch64 | Linux autonome aarch64 (64 bits) binaire |
yt-dlp_win.zip | Exécutable Windows non packagé (pas de mise à jour automatique) |
yt-dlp_macos.zip | Exécutable MacOS (10.15+) non empaqueté (pas de mise à jour automatique) |
yt-dlp_macos_legacy | MacOS (10.9+) exécutable x64 autonome |
Déposer | Description |
---|---|
yt-dlp.tar.gz | archive tar source |
SHA2-512SUMS | Sommes SHA512 de style GNU |
SHA2-512SUMS.sig | Fichier de signature GPG pour les sommes SHA512 |
SHA2-256SOMME | Sommes SHA256 de style GNU |
SHA2-256SUMS.sig | Fichier de signature GPG pour les sommes SHA256 |
La clé publique qui peut être utilisée pour vérifier les signatures GPG est disponible ici Exemple d'utilisation :
curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import gpg --verify SHA2-256SUMS.sig SHA2-256SUMS gpg --verify SHA2-512SUMS.sig SHA2-512SUMS
Remarque : Les pages de manuel, les fichiers de complétion du shell (complétion automatique), etc. sont disponibles dans l'archive tar source.
Vous pouvez utiliser yt-dlp -U
pour mettre à jour si vous utilisez les binaires de la version
Si vous avez installé avec pip, réexécutez simplement la même commande que celle utilisée pour installer le programme
Pour les autres gestionnaires de packages tiers, consultez le wiki ou référez-vous à leur documentation
Il existe actuellement trois canaux de publication pour les binaires : stable
, nightly
et master
.
stable
est le canal par défaut, et bon nombre de ses modifications ont été testées par les utilisateurs des canaux nightly
et master
.
La chaîne nightly
propose des versions programmées chaque jour vers minuit UTC, pour un instantané des nouveaux correctifs et modifications du projet. Il s'agit du canal recommandé pour les utilisateurs réguliers de yt-dlp. Les versions nightly
sont disponibles à partir de yt-dlp/yt-dlp-nightly-builds ou en tant que versions de développement du package yt-dlp
PyPI (qui peut être installé avec l'indicateur --pre
de pip).
Le canal master
propose des versions qui sont construites après chaque poussée vers la branche principale, et celles-ci auront les tout derniers correctifs et ajouts, mais peuvent également être plus sujettes aux régressions. Ils sont disponibles sur yt-dlp/yt-dlp-master-builds.
Lors de l'utilisation --update
/ -U
, une version binaire sera uniquement mise à jour vers son canal actuel. --update-to CHANNEL
peut être utilisé pour passer à un autre canal lorsqu'une version plus récente est disponible. --update-to [CHANNEL@]TAG
peut également être utilisé pour mettre à niveau ou rétrograder des balises spécifiques à partir d'un canal.
Vous pouvez également utiliser --update-to
(
) pour mettre à jour vers un canal sur un référentiel complètement différent. Soyez prudent avec le référentiel vers lequel vous effectuez la mise à jour, aucune vérification n'est effectuée pour les binaires provenant de différents référentiels.
Exemple d'utilisation :
yt-dlp --update-to master
passer au canal master
et mettre à jour vers sa dernière version
yt-dlp --update-to [email protected]
mise à niveau/rétrogradation pour publier vers la balise de canal stable
2023.07.06
yt-dlp --update-to 2023.10.07
mise à niveau/rétrogradation vers la balise 2023.10.07
si elle existe sur la chaîne actuelle
yt-dlp --update-to example/[email protected]
mise à niveau/rétrogradation vers la version à partir du référentiel example/yt-dlp
, balise 2023.09.24
Important : tout utilisateur rencontrant un problème avec la version stable
doit installer ou mettre à jour la version nightly
avant de soumettre un rapport de bug :
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python3 -m pip install -U --pre "yt-dlp[default]"
Les versions Python 3.9+ (CPython) et 3.10+ (PyPy) sont prises en charge. D'autres versions et implémentations peuvent ou non fonctionner correctement.
Bien que toutes les autres dépendances soient facultatives, ffmpeg
et ffprobe
sont fortement recommandés
ffmpeg et ffprobe - Nécessaires pour fusionner des fichiers vidéo et audio séparés, ainsi que pour diverses tâches de post-traitement. La licence dépend de la version
Il existe des bogues dans ffmpeg qui provoquent divers problèmes lorsqu'il est utilisé avec yt-dlp. Étant donné que ffmpeg est une dépendance très importante, nous fournissons des versions personnalisées avec des correctifs pour certains de ces problèmes sur yt-dlp/FFmpeg-Builds. Consultez le fichier Lisez-moi pour plus de détails sur les problèmes spécifiques résolus par ces versions.
Important : ce dont vous avez besoin est le binaire ffmpeg, PAS le package Python du même nom
certifi * - Fournit l'ensemble de certificats racine de Mozilla. Sous licence MPLv2
brotli * ou brotlicffi - Prise en charge de l'encodage de contenu Brotli. Tous deux sous licence MIT 1 2
websockets * - Pour télécharger via websocket. Sous licence BSD-3-Clause
requêtes * - Bibliothèque HTTP. Pour la prise en charge du proxy HTTPS et des connexions persistantes. Sous licence Apache-2.0
Les éléments suivants fournissent une prise en charge pour l'usurpation d'identité des requêtes du navigateur. Cela peut être nécessaire pour certains sites qui utilisent les empreintes digitales TLS.
curl_cffi (recommandé) - Liaison Python pour curl-usurpation d'identité. Fournit des cibles d’usurpation d’identité pour Chrome, Edge et Safari. Licence sous MIT
Peut être installé avec le groupe curl-cffi
, par exemple pip install "yt-dlp[default,curl-cffi]"
Actuellement inclus dans les versions yt-dlp.exe
, yt-dlp_linux
et yt-dlp_macos
mutagen * - Pour --embed-thumbnail
dans certains formats. Sous licence GPLv2+
AtomicParsley - Pour --embed-thumbnail
dans les fichiers mp4
/ m4a
lorsque mutagen
/ ffmpeg
ne le peut pas. Sous licence GPLv2+
xattr , pyxattr ou setfattr - Pour écrire des métadonnées xattr ( --xattr
) sur Mac et BSD . Sous licence MIT, LGPL2.1 et GPLv2+ respectivement
pycryptodomex * - Pour décrypter les flux AES-128 HLS et diverses autres données. Licence sous la clause BSD-2
phantomjs - Utilisé dans les extracteurs où javascript doit être exécuté. Sous licence BSD-3-Clause
secretstorage * - Pour que --cookies-from-browser
accède au trousseau de clés Gnome tout en déchiffrant les cookies des navigateurs basés sur Chromium sous Linux . Sous licence BSD-3-Clause
Tout téléchargeur externe que vous souhaitez utiliser avec --downloader
avconv et avprobe - Alternative désormais obsolète à ffmpeg. La licence dépend de la version
sponskrub - Pour utiliser les options sponsorkrub désormais obsolètes . Sous licence GPLv3+
rtmpdump - Pour télécharger des flux rtmp
. ffmpeg peut être utilisé à la place avec --downloader ffmpeg
. Sous licence GPLv2+
mplayer ou mpv - Pour télécharger des flux rstp
/ mms
. ffmpeg peut être utilisé à la place avec --downloader ffmpeg
. Sous licence GPLv2+
Pour utiliser ou redistribuer les dépendances, vous devez accepter leurs conditions de licence respectives.
Les binaires de la version autonome sont construits avec l'interpréteur Python et les packages marqués d'un * sont inclus.
Si vous ne disposez pas des dépendances nécessaires pour une tâche que vous tentez, yt-dlp vous en avertira. Toutes les dépendances actuellement disponibles sont visibles en haut de la sortie --verbose
Pour créer l'exécutable autonome, vous devez disposer de Python et pyinstaller
(plus l'une des dépendances facultatives de yt-dlp si nécessaire). L'exécutable sera construit pour la même architecture CPU que le Python utilisé.
Vous pouvez exécuter les commandes suivantes :
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
Sur certains systèmes, vous devrez peut-être utiliser py
ou python
au lieu de python3
.
python -m bundle.pyinstaller
accepte tous les arguments qui peuvent être transmis à pyinstaller
, tels que --onefile/-F
ou --onedir/-D
, qui sont documentés plus en détail ici.
Remarque : les versions de Pyinstaller inférieures à 4.4 ne prennent pas en charge Python installé à partir du Windows Store sans utiliser d'environnement virtuel.
Important : exécuter pyinstaller
directement au lieu d' utiliser python -m bundle.pyinstaller
n'est pas officiellement pris en charge. Cela peut fonctionner correctement ou non.
Vous aurez besoin des outils de build python
(3.9+), zip
, make
(GNU), pandoc
* et pytest
*.
Après les avoir installés, exécutez simplement make
.
Vous pouvez également exécuter make yt-dlp
à la place pour compiler uniquement le binaire sans mettre à jour aucun des fichiers supplémentaires. (Les outils de build marqués d' un * ne sont pas nécessaires pour cela)
devscripts/install_deps.py
- Installer les dépendances pour yt-dlp.
devscripts/update-version.py
- Mettez à jour le numéro de version en fonction de la date actuelle.
devscripts/set-variant.py
- Définit la variante de construction de l'exécutable.
devscripts/make_changelog.py
- Créez un journal des modifications markdown à l'aide de courts messages de validation et mettez à jour le fichier CONTRIBUTORS
.
devscripts/make_lazy_extractors.py
- Créer des extracteurs paresseux. L'exécuter avant de créer les binaires (n'importe quelle variante) améliorera leurs performances de démarrage. Définissez la variable d'environnement YTDLP_NO_LAZY_EXTRACTORS
sur quelque chose de non vide pour désactiver de force le chargement paresseux de l'extracteur.
Remarque : consultez leur --help
pour plus d'informations.
Si vous forkez le projet sur GitHub, vous pouvez exécuter le workflow de construction de votre fork pour créer automatiquement la ou les versions sélectionnées en tant qu'artefacts. Vous pouvez également exécuter le workflow de publication ou activer le workflow nocturne pour créer des (pré-)versions complètes.
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
est ton ami :D
-h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to the latest version --no-update Do not check for updates (default) --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master -i, --ignore-errors Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails --no-abort-on-error Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default) --abort-on-error Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors) --dump-user-agent Display the current user-agent and exit --list-extractors List all supported extractors and exit --extractor-descriptions Output descriptions of all supported extractors and exit --use-extractors NAMES Extractor names to use separated by commas. You can also use regexes, "all", "default" and "end" (end URL matching); e.g. --ies "holodex.*,end,youtube". Prefix the name with a "-" to exclude it, e.g. --ies default,-generic. Use --list-extractors for a list of extractor names. (Alias: --ies) --default-search PREFIX Use this prefix for unqualified URLs. E.g. "gvsearch2:python" downloads two videos from google videos for the search term "python". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching --ignore-config Don't load any more configuration files except those given to --config-locations. For backward compatibility, if this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-config) --no-config-locations Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous --config-locations defined in the current file --config-locations PATH Location of the main configuration file; either the path to the config or its containing directory ("-" for stdin). Can be used multiple times and inside other configuration files --plugin-dirs PATH Path to an additional directory to search for plugins. This option can be used multiple times to add multiple directories. Note that this currently only works for extractor plugins; postprocessor plugins can only be loaded from the default plugin directories --flat-playlist Do not extract the videos of a playlist, only list them --no-flat-playlist Fully extract the videos of a playlist (default) --live-from-start Download livestreams from the start. Currently only supported for YouTube (Experimental) --no-live-from-start Download livestreams from the current time (default) --wait-for-video MIN[-MAX] Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between retries --no-wait-for-video Do not wait for scheduled streams (default) --mark-watched Mark videos watched (even with --simulate) --no-mark-watched Do not mark videos watched (default) --color [STREAM:]POLICY Whether to emit color codes in output, optionally prefixed by the STREAM (stdout or stderr) to apply the setting to. Can be one of "always", "auto" (default), "never", or "no_color" (use non color terminal sequences). Use "auto-tty" or "no_color-tty" to decide based on terminal support only. Can be used multiple times --compat-options OPTS Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the changes made in yt-dlp. See "Differences in default behavior" for details --alias ALIASES OPTIONS Create aliases for an option string. Unless an alias starts with a dash "-", it is prefixed with "--". Arguments are parsed according to the Python string formatting mini-language. E.g. --alias get-audio,-X "-S=aext:{0},abr -x --audio-format {0}" creates options "--get-audio" and "-X" that takes an argument (ARG0) and expands to "-S=aext:ARG0,abr -x --audio-format ARG0". All defined aliases are listed in the --help output. Alias options can trigger more aliases; so be careful to avoid defining recursive options. As a safety measure, each alias may be triggered a maximum of 100 times. This option can be used multiple times
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme, e.g. socks5://user:[email protected]:1080/. Pass in an empty string (--proxy "") for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to --impersonate CLIENT[:OS] Client to impersonate for requests. E.g. chrome, chrome-110, chrome:windows-10. Pass --impersonate="" to impersonate any client. Note that forcing impersonation for all requests may have a detrimental impact on download speed and stability --list-impersonate-targets List available clients to impersonate. -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 --enable-file-urls Enable file:// URLs. This is disabled by default for security reasons.
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading --xff VALUE How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. One of "default" (only when known to be useful), "never", an IP block in CIDR notation, or a two-letter ISO 3166-2 country code
-I, --playlist-items ITEM_SPEC Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15 --min-filesize SIZE Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M --max-filesize SIZE Abort download if filesize is larger than SIZE, e.g. 50k or 44.6M --date DATE Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format [now|today|yesterday][-N[day|week|month|year]]. E.g. "--date today-2weeks" downloads only videos uploaded on the same day two weeks ago --datebefore DATE Download only videos uploaded on or before this date. The date formats accepted are the same as --date --dateafter DATE Download only videos uploaded on or after this date. The date formats accepted are the same as --date --match-filters FILTER Generic video filter. Any "OUTPUT TEMPLATE" field can be compared with a number or a string using the operators defined in "Filtering Formats". You can also simply specify a field to match if the field is present, use "!field" to check if the field is not present, and "&" to check multiple conditions. Use a "" to escape "&" or quotes if needed. If used multiple times, the filter matches if at least one of the conditions is met. E.g. --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)bcats & dogsb'" matches only videos that are not live OR those that have a like count more than 100 (or the like field is not available) and also has a description that contains the phrase "cats & dogs" (caseless). Use "--match-filters -" to interactively ask whether to download each video --no-match-filters Do not use any --match-filters (default) --break-match-filters FILTER Same as "--match-filters" but stops the download process when a video is rejected --no-break-match-filters Do not use any --break-match-filters (default) --no-playlist Download only the video, if the URL refers to a video and a playlist --yes-playlist Download the playlist, if the URL refers to a video and a playlist --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it --no-download-archive Do not use archive file (default) --max-downloads NUMBER Abort after downloading NUMBER files --break-on-existing Stop the download process when encountering a file that is in the archive --no-break-on-existing Do not stop the download process when encountering a file that is in the archive (default) --break-per-input Alters --max-downloads, --break-on-existing, --break-match-filters, and autonumber to reset per input URL --no-break-per-input --break-on-existing and similar options terminates the entire download queue --skip-playlist-after-errors N Number of allowed failures until the rest of the playlist is skipped
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1) -r,&n