Ceci est une ancienne révision du document !
Table des matières
https://github.com/yt-dlp/yt-dlp/, Archive 2020.09.20, les Microsoft Visual C++ 2010 Redistributable Package (x86) et la librairie de conversion libav Archive x86_64-w64-mingw32-20170415
Choix de la qualité
Sans spécifier la qualité, il peut arriver que le téléchargement s'effectue en 720p alors que le format en 1080p existe.
Récupérer la liste des formats disponibles d'une vidéo.
yt-dlp -F https://www.youtube.com/watch?v=XXXXXXX
Télécharger le format spécifique d'une vidéo :
yt-dlp -f 22 http://www.youtube.com/watch?v=XXXXXXX
Certains formats ne contiennent que la vidéo (video only
) ou que la musique (audio only
). Notamment pour les vidéos de qualité supérieure à 720p. Pour les récupérer, il faut sélectionner les deux formats en les séparant par un +
et toujours mettre en premier la vidéo.
yt-dlp -f 137+140 http://www.youtube.com/watch?v=XXXXXXX
Les formats désignant la qualité semblent respecter un certain standard :
- Nombre à deux chiffres : contient la vidéo et la musique,
- Nombre à trois chiffres : contient uniquement la vidéo ou la musique,
- Les nombres commençant par 1 sont au format mp3 et/ou mp4,
- Les nombres commençant par 2 sont au format webm.
Pour ces raisons, il est préférable lors de la sélection des deux formats (audio+video) de choisir deux nombres à trois chiffres commençant tous les deux par le même chiffre. De toute façon, si vous ne le faites pas yt-dlp
ne manquera pas de vous le rappeler.
Il est aussi possible de forcer l'utilisation de la meilleure qualité
yt-dlp -f bestvideo+bestaudio http://www.youtube.com/watch?v=XXXXXXX
Options
- Sous-titre :
--all-subs
. Télécharge tous les sous-titres. - Ignorer les erreurs :
--ignore-errors
. Peut-être utile pour télécharger une playlist qui contient quelques vidéos privées ou ayant été retirées. - Sauter les N premières vidéos :
--playlist-start X
. Peut-être utile pour reprendre le téléchargement d'une playlist en ignorant lesX
premiers. - Limiter le débit :
-r 50K
Playlist
Dans le cas où on souhaite récupérer une longue playlist de Youtube, il va falloir ajouter des arguments
--retries 100 --fragment-retries 100 --playlist-start 1800
--retries 100 --fragment-retries 100
va être nécessaire car Youtube va volontairement faire jusqu'à 10 échecs (valeur par défaut du programme) mais rarement plus.
--playlist-start
car il faudra peut-être recommencer après un ban de Youtube avec des messages du genre WARNING: unable to download video info webpage: HTTP Error 429: Too Many Requests
Authentification par cookie
How to download your Udemy course videos using youtube-dl Archive du 14/02/2018 le 06/01/2020
- Installer le plugin cookies.txt pour Chrome.
- Se connecter à udemy,
- Enregistre le cookie :
.udemy.com TRUE / TRUE 1234567890 XXXX YYYY www.udemy.com FALSE / FALSE 1850531135 ZZZZ AAAA
- Télécharger avec la commande
yt-dlp --cookies cookies.txt -f best -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s' https://www.udemy.com/cours-complet-ios10-swift-3-creez-15-applications/
Il est aussi possible de se passer de cookie.txt en mettant le nom d'utilisateur et le mot de passe directement dans yt-dlp
.
yt-dlp -u <username> -p <password> -f best -o '%(playlist)s/%(chapter_number)s - %(chapter)s/%(playlist_index)s. %(title)s.%(ext)s' https://www.udemy.com/cours-complet-ios10-swift-3-creez-15-applications/
Fusion des sous-titres avec la vidéo
On converti le format vtt en ass :
ffmpeg -i subtitle.en.vtt subtitle.en.ass
On fusionne la vidéo et le sous-titre :
ffmpeg -i input.mkv -f ass -i subtitle.ass -map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy -c:s ass -metadata:s:s:0 language=eng output.mkv
Suppression des vidéos en double
Quand on relance le téléchargement d'une playlist, certaines vidéos peuvent être téléchargée à nouveau mais dans un meilleur format.
Ce n'est pas parfait mais ça fait le job.
ls -1 *.mp4 *.mkv *.webm | sed 's/\(.*\)\..*/\1/' | uniq -d > /tmp/delete.sh # cat /tmp/delete.sh | while read line ; do ls -rt "$line".*m* | head -1 | tr -d "\n" | xargs -0 -I{} rm "{}" ; done
Attention, cela prend en compte la date de modification, pas la date de création.
Ne pas faire : yt-dlp va mettre comme date de modification, celle du serveur Youtube. Donc, si la nouvelle vidéo est la même qu'à l'upload de la vidéo d'origine mais dans un format différent, les deux dates vont être presque identiques et la suppression sera donc aléatoire et potentiellement mauvaise.