Vendredi 23 novembre 2018

youtube-dl: télécharger les vidéos Youtube

nIQnutn 05 décembre 2017

Installation

On installe avec notre gestionnaire de paquet préféré:

$ sudo apt install youtube-dl #debian
$ yaourt -S youtube-dl #archlinux

Vérifier la version utilisée

$ youtube-dl --version

Utilisation

On décide de télécharger la vidéo: “Alladech - Shaïning - Les Kassos #41” https://www.youtube.com/watch?v=7iMr0DzAXaQ

Télécharger une vidéo

La solution la plus facile pour télécharger une vidéo:

$ youtube-dl https://www.youtube.com/watch?v=7iMr0DzAXaQ

Le problème avec cette commande, c’est qu’on ne choisit pas grand chose. Dans ce cas, j’ai téléchargé la vidéo en 1080p (c’est pas toujours utile) et si vous n’avez pas beaucoup de place ni de bande passante ça va être pénible.

La solution, c’est de choisir quel format télécharger.

Télécharger une vidéo (méthode avancée)

D’abord, on va voir qu’elles sont les formats et les qualités disponibles:

$ youtube-dl -F https://www.youtube.com/watch?v=7iMr0DzAXaQ
[youtube] 7iMr0DzAXaQ: Downloading webpage
[youtube] 7iMr0DzAXaQ: Downloading video info webpage
[youtube] 7iMr0DzAXaQ: Downloading MPD manifest
[info] Available formats for 7iMr0DzAXaQ:
format code  extension  resolution note
139          m4a        audio only DASH audio   48k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 526.91KiB
249          webm       audio only DASH audio   57k , opus @ 50k, 569.12KiB
250          webm       audio only DASH audio   71k , opus @ 70k, 708.14KiB
171          webm       audio only DASH audio  108k , vorbis@128k, 1.07MiB
251          webm       audio only DASH audio  127k , opus @160k, 1.24MiB
140          m4a        audio only DASH audio  128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 1.37MiB
160          mp4        256x144    DASH video   47k , avc1.4d400c, 25fps, video only, 288.10KiB
278          webm       256x144    144p   81k , webm container, vp9, 25fps, video only, 640.82KiB
133          mp4        426x240    DASH video   98k , avc1.4d4015, 25fps, video only, 527.64KiB
242          webm       426x240    240p  154k , vp9, 25fps, video only, 999.95KiB
134          mp4        640x360    DASH video  206k , avc1.4d401e, 25fps, video only, 1.11MiB
243          webm       640x360    360p  285k , vp9, 25fps, video only, 1.82MiB
135          mp4        854x480    DASH video  370k , avc1.4d401e, 25fps, video only, 2.03MiB
244          webm       854x480    480p  477k , vp9, 25fps, video only, 3.06MiB
136          mp4        1280x720   DASH video  651k , avc1.4d401f, 25fps, video only, 3.91MiB
247          webm       1280x720   720p 1157k , vp9, 25fps, video only, 8.19MiB
137          mp4        1920x1080  DASH video 1258k , avc1.640028, 25fps, video only, 8.47MiB
248          webm       1920x1080  1080p 2373k , vp9, 25fps, video only, 21.62MiB
17           3gp        176x144    small , mp4v.20.3, mp4a.40.2@ 24k
36           3gp        320x180    small , mp4v.20.3, mp4a.40.2
43           webm       640x360    medium , vp8.0, vorbis@128k
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

Cette commande ne télécharge rien.

Télécharger une vidéo en choisissant son format

Je décide maintenant de télécharger la vidéo dans un autre format, par exemple en .mp4 avec la résolution 640x360.

code  extension  resolution note
18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k

Il suffit de récupérer le code de la vidéo qui correspond et de lancer la commande:

$ youtube-dl -f 18 https://www.youtube.com/watch?v=7iMr0DzAXaQ

De la même manière, je peux aussi combiner le format audio et le format vidéo. Par exemple, si c’est un clip, on peut choisir une qualité audio élevée et une qualité vidéo faible.

$ youtube-dl -f 160+140  https://www.youtube.com/watch?v=7iMr0DzAXaQ

Télécharger les sous-titre de la vidéo

On commence par lister les sous-titre disponible pour cette vidéo:

$ youtube-dl --list-subs  https://www.youtube.com/watch?v=7iMr0DzAXaQ
...
Available subtitles for 7iMr0DzAXaQ:
Language formats
fr       vtt, ttml
be       vtt, ttml
it       vtt, ttml
es       vtt, ttml
en       vtt, ttml
ja       vtt, ttml
de       vtt, ttml

Pour télécharger uniquement les sous-titre en français

$ youtube-dl --write-sub --sub-lang fr --skip-download https://www.youtube.com/watch?v=7iMr0DzAXaQ

On peut aussi récupérer les sous-titres dans plusieurs langues:

$ youtube-dl --write-sub --sub-lang be,de,ja --skip-download https://www.youtube.com/watch?v=7iMr0DzAXaQ

Pour télécharger la vidéo et intégrer les fichiers de sous-titre dans le fichier:

$ youtube-dl -f 160+140 --write-sub --sub-lang fr --embed-subs  https://www.youtube.com/watch?v=7iMr0DzAXaQ

Télécharger une playlist

Je veux récupérer la saison 1 de Kassos, elle disponible sous forme de playlist ici: https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM
Une solution simple consiste à utiliser uniquement le lien de la playlist comme on l’a fait pour une vidéo:

$ youtube-dl https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM

Ici, on récupère toutes les vidéos de la playlist (22 vidéos au total).

Dans le cas où je ne souhaite récupérer que les 16 épisodes (donc pas de teaser ni trailer):

$ youtube-dl --playlist-start 1 --playlist-end 16  https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM
  • –playlist-start : pour indiquer la première vidéo à télécharger
  • –playlist-end : pour indiquer la dernière vidéo à télécharger

si on indique pas de numéro après –playlist-start ou –playlist-end, le téléchargement commencera par la première vidéo et se terminera à la dernière.

Télécharger plusieurs vidéos

Pour télécharger plusieurs vidéos (hors playlist), il est possible de faire ça grâce une seule commande.
Dans cet exemple, on récupère un épisode de chaque saison.
On commence par créer un fichier texte avec tous les liens des vidéos à télécharger:

$ nano liste.txt
https://www.youtube.com/watch?v=43ehs06IxlA
https://www.youtube.com/watch?v=pLVtpMqTUSI
https://www.youtube.com/watch?v=FD3i31DGAMI

Ensuite on lance notre commande:

$ youtube-dl -a liste.txt

Définir le nom du fichier de sortie

Plutôt que de s’embêter à renommer les fichiers après le téléchargement, on peut indiquer dans la commande ce qui doit être mis comme nom de fichier. Ici, le titre de la vidéo et son extension:

$ youtube-dl https://www.youtube.com/watch?v=7iMr0DzAXaQ -o "%(title)s.%(ext)s"

Pour les infos complémentaires lire la section “OUTPUT TEMPLATE” du man.

Récupérer le lien de la vidéo

Pour obtenir l’URL de la vidéo, et l’ouvrir en streaming dans VLC ou mplayer:

$ youtube-dl -g -f 43  https://www.youtube.com/watch?v=Un2yBgIAxYs
https://r8---sn-n4g-atok.googlevideo.com/videoplayback?ei=_oYlWtsglN1w0a6byAg&ms=au&ipbits=0&pl=23&mv=m&source=youtube&mt=1512408704&id=o-AG4rJwtEp9i5733-6z6v2NOL7b6haeaQd7QlLR--tzGg&mm=31&expire=1512430430&itag=43&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&mn=sn-n4g-atok&signature=A097A1E939EB0568D66B4C900906F6CA29D27CFF.3952EF1EA8D9E9F61FBC1AF2D10C00361B24EBF1&requiressl=yes&initcwndbps=1798750&ip=77.130.135.150&mime=video%2Fwebm&gir=yes&key=yt6&clen=62659982&ratebypass=yes&dur=0.000&lmt=1469203314069116

Divers

Pour mieux comprendre les URLs sur Youtube. Dans l’URL on peut retrouver différente informations:

https://www.youtube.com/watch?v=o6xHCmQOuXc&index=10&list=PLPkQoAsYuIp3FU9dPoa2WLHssuU9WuZAQ

  • v=o6xHCmQOuXc : identifiant de la vidéo
  • list=PLPkQoAsYuIp3FU9dPoa2WLHssuU9WuZAQ : identifiant de la playlist

Ressources

Aide

$ man youtube-dl
$ youtube-dl --help