youtube-dl + vlcopen
Lire directement les vidéos youtube (& cie) dans VLC
S’affranchir efficacement de flash pour lire les vidéos directement dans VLC
Vous le savez comme moi, flash c’est le mal. Et voici LA solution qui vous fera franchir le pas d’un bannissement (espérons permanent) du vil greffon sans pour autant faire une croix sur les vidéos des plateformes d’hébergement (youtube, dailymotion, vimeo, etc).
Cela consiste en l’emploi coordonné de deux scripts qui vont vous permettre de lire directement une vidéo distante dans votre lecteur habituel (VLC, mplayer ou autre).
1) Installation de youtube-dl
Sous GNU-Linux, la méthode que je trouve la plus simple est de passer par le gestionnaire d’environnement python pip.
- sudo apt-get install python-pip
- sudo pip install youtube-dl
Veillez à mettre à jour l’application de temps en temps, car les plugins de gestion par plateforme sont nombreux et les modifications fréquentes.
- sudo pip install -U youtube-dl
2) Lancement illico grâce à vlcopen.sh
youtude-dl est un super logiciel, efficace dans bien des situations, mais son utilisation en ligne de commande s’avère à la longue un peu rédhibitoire pour une utilisation en tant que simple utilisateur.
D’où le recours à un second script, mis à disposition par swarminglogic,qui va apporter un peu de souplesse d’utilisation et ouvrir la vidéo encore plus vite que si vous y aviez accédée directement depuis la page youtube, grâce à un raccourci clavier.
- #!/bin/bash
- if [ $# -eq 1 ] ; then
- path=$1
- else
- clipboard=$(xclip -selection clipboard -o)
- if [ $(<<<$clipboard grep -P "^http") ] ; then
- path=$clipboard
- else
- if [ -t 1 ] ; then
- echo "Bad clipboard path: $clipboard" >&2
- else
- notify-send "Bad clipboard path: $clipboard"
- fi
- exit 1
- fi
- fi
- #$1 processid, $2 tempdir $3 logfile
- function cleanup {
- echo "-------------------------------------------"
- echo "Cleaning up"
- kill -9 $1 &> /dev/null
- if [ -n "$2" ] ; then rm $2/* ; fi
- if [ -n "$2" ] ; then rmdir $2 ; fi
- if [ -n "$3" ] ; then rm $3 ; fi
- }
- echo "Opening $path"
- tmpvlcopen=/tmp/vlcopen/
- [ ! -d $tmpvlcopen ] && mkdir $tmpvlcopen
- tmpdir=$(mktemp -d --tmpdir=$tmpvlcopen)
- # If the tmpdir path doesn't include "/tmp/vlcopen" something went bad!
- if [ "${tmpdir/$tmpvlcopen}" = "$tmpdir" ] ; then
- echo "Aborting: failed to create proper temporary directories" >&2
- exit 1
- fi
- cd $tmpdir
- echo "Temporary directory: $tmpdir"
- echo "Getting video: $path"
- downloadlog=$(tempfile)
- (youtube-dl --restrict-filenames --no-part "$path" &> $downloadlog)&
- processId=$!
- echo "ProcessID: $processId"
- echo "Waiting for file creation"
- count=0
- while [ $(ls -1 | wc -l) -eq 0 ] ; do
- # check if process is done.
- if ! kill -0 $processId &>/dev/null ; then
- if [ -t 1 ] ; then
- echo "-------------------------------------------">&2
- echo "Error: youtube-dl finished without output." >&2
- echo "Error: Bad URL?" >&2
- echo "---------------- Download Log -------------">&2
- cat $downloadlog >&2
- else
- notify-send "Bad URL: $path $(cat $downloadlog)"
- fi
- cleanup $processId "$tmpdir" "$downloadlog"
- exit 0
- fi
- sleep 0.5
- ((count++))
- if [ $count -eq 20 ] ; then
- if [ -t 1 ] ; then
- echo "Timed out" >&2
- else
- notify-send "Timed out"
- fi
- exit 0
- fi
- done
- sleep 0.1
- echo "Opening file: $(ls -1 | head -n 1)"
- vlc "$(ls -1 | head -n 1)" &>/dev/null
- cleanup $processId "$tmpdir" "$downloadlog"
Ce script se comporte comme une capsule pour youtube-dl. Il va analyser le contenu du presse-papier, et s’il détecte une url prise en charge, va créer un répertoire temporaire, y télécharger la vidéo, l’ouvrir avec VLC après quelques instants et supprimer automatiquement tous les fichiers temporaires à la fermeture.
Il suffit d’enregistrer le script (sous le nom vlcopen.sh par exemple) dans un répertoire inclus dans votre $PATH, le rendre exécutable (chmod +x vlcopen.sh
) et d’associer un raccourci clavier à son exécution.
Typiquement sous openbox, j’ai rajouté une section comme suit à mon rc.xml.
- <keybind key="W-y">
- <action name="Execute">
- <startupnotify>
- <enabled>true</enabled>
- <name>vlcopen</name>
- </startupnotify>
- <command>vlcopen.sh</command>
- </action>
- </keybind>
Dès lors, dans les faits, lorsque je veux regarder une vidéo, je fais un clic-droit > copier l’url de la page soit sur la page courante, soit sur le lien à analyser, puis super + y (oui j’ai choisi y pour "youtube" mais à vous d’adapter au besoin), et voilà !
Seul bémol, si la vidéo est longue et que vous êtes impatient, vous ne pourrez pas avancer directement la lecture à un point qui n’a pas encore été téléchargé.
source github.com/swarminglogic