Youtube-dl ou l'alternative au plugin flash pour télécharger des vidéos

Utilisateur ravi et convaincu d'OpenBSD sur mon serveur perso et ceux du boulot depuis quelques années, j'ai récemment sauté le pas pour enfin installer également l'OS au poisson qui pique sur ma station de glandouille à la maison. Seulement voilà, pas de plugin "Flash pourri" pour OpenBSD en 64 bits...

Je me moque complètement de cette techno-crado et m'en passerais volontier mais étant aussi passionné par la musique, je passe quand même pas mal de temps à explorer Youtube à la recherche de jolies vidéos de grateux écœurants de virtuosité ou de concerts en tout genre. Je me suis donc mis en quête d'un petit outil simple comme je les aime et je suis tombé sur le fabuleux Youtube-dl.

C'est un outil écrit en Python qui s'utilise en ligne de commande et qui permet de télécharger les vidéos des sites suivants:

$ ./youtube-dl --list-extractors
youtube:playlist
youtube:channel
youtube:user
youtube:search
youtube
metacafe
dailymotion
video.google
video.google:search
photobucket
video.yahoo
video.yahoo:search
DepositFiles
facebook
blip.tv:user
blip.tv
vimeo
myvideo
comedycentral
escapist
collegehumor
xvideos
soundcloud
infoq
mixcloud
stanfordoc
mtv
Youku
xnxx
plus.google
arte.tv
generic

Et oui il sait gérer les playlists ! Ce qui veut dire que vous pouvez lui demander de télécharger l'ensemble des vidéos d'une playlist ou simplement les vidéos numéro n jusqu'à n+5.

Il s'utilise de la façon suivante: Pour une vidéo donnée, on commence par lui demander d'afficher la liste des formats et tailles disponibles:

$ ./youtube-dl -F "http://www.youtube.com/watch?v=IOvFXAg3oXQ"
[youtube] Setting language
[youtube] IOvFXAg3oXQ: Downloading video webpage
[youtube] IOvFXAg3oXQ: Downloading video info webpage
[youtube] IOvFXAg3oXQ: Extracting video information
Available formats:
44      :       webm    [480x854]
35      :       flv     [480x854]
43      :       webm    [360x640]
34      :       flv     [360x640]
18      :       mp4     [360x640]
5       :       flv     [240x400]
17      :       mp4     [144x176]

On peut alors télécharger la vidéo au format voulu:

$ ./youtube-dl -f 44 -t "http://www.youtube.com/watch?v=IOvFXAg3oXQ"

L'option -f permet, vous l'aurez compris, de spécifier le format et la taille désirés tandis que l'option -t indique que l'on souhaite nommer notre fichier final avec le titre de la vidéo.

Pour une playlist complète, j'utilise cette commande:

$ ./youtube-dl -A --prefer-free-formats \\
   -t -c  "http://www.youtube.com/playlist?list=PLB88BBE39FAF18365"

L'option -A numérote chaque fichier vidéo suivant l'ordre de la playlist, --prefer-free-formats vous permettra, comme son nom l'indique, de télécharger les vidéos dans un format libre de préférence, si disponible. Et enfin -c reprend le téléchargement là où il l'avait laissé en cas d'arrêt volontaire ou non (très pratique). A noter que par défaut, youtube-dl télécharge toujours la taille de vidéo la plus élevée pour le format choisi, sauf si elle est précisée.

Cet outil possède une pléthore d'options et je vous encourage à y jeter un œil via la commande:

 $ ./youtube-dl -h

Il est également possible de créer un petit fichier de config contenant les options les plus couramment utilisées dans ~/.config/youtube-dl.conf et listées comme ceci:

-t
--prefer-free-formats
--console-title

Alors là, c'est le moment où vous me dites: "Oui c'est bien joli tout ça mais c'est pénible de devoir télécharger la vidéo en entier avant de pouvoir la lire, au moins avec "flash pourri" on pouvait la voir en streaming...".

Vous avez parfaitement raison, et c'est pourquoi je vais vous donner une petite astuce. Vous allez avoir besoin d'installer yad, une alternative avantageuse à Xdialog et Zenity, ainsi que du très connu VLC. Ensuite, copier/coller le script suivant dans un fichier que vous appelez comme vous voulez. Je l'ai appelé yt:

#!/bin/sh
PLAYER="cvlc --play-and-exit --key-quit q --no-video-title-show --network-caching=8192"
YTDL_PATH="${HOME}/apps/youtube-dl"

MYURL=`yad --geometry=360x104 --title="Youtube-dl" --entry --entry-label="Entrez l'URL:"`
if [ -n "$MYURL" ]; then
    ${YTDL_PATH} -t --max-quality 44 --prefer-free-formats \\
    -g $MYURL | xargs $PLAYER 
fi

Rendez-moi tout ça exécutable à grand coup de :

$ chmod +x yt

Exécutez-le et vous verrez une petite fenêtre apparaître vous demandant de coller l'URL de la vidéo. Validez par Ok et attendez quelques secondes. Vous visionnerez alors votre vidéo via VLC et le tout en streaming. Vous pouvez bien sûr, associer l'exécution de ce script à un raccourci clavier pour plus de souplesse.

Voilà ! en espérant vous avoir rendu service ;)

PS: ah oui j'oubliais, youtube-dl marche sur les systèmes d'exploitation du bien (*BSD, Linux...) mais aussi sur l'OS aux fenêtres sales ainsi que l'OS à la pomme pourrie (oui je sais c'était petit et mesquin...désolé...) ;)

Vus : 2897
Publié par Comète : 152