Un script pratique utilisant Youtube-dl

Posté le 13 août 2013

Dans un article précédent, je vous proposais, à la fin, un petit bout de code permettant, grâce à Youtube-dl, de regarder les vidéos de youtube, dailymotion et autres sites du genre, en streaming via votre lecteur préféré.

Si je rédige ce court billet aujourd'hui, c'est pour partager avec vous une petite amélioration de ce script. A la suggestion d'un lecteur, j'y ai ajouté la possibilité de conserver la vidéo visualisée en cochant une simple checkbox.

Les dépendances restent les mêmes: Youtube-dl évidement et yad une alternative à Xdialog et Zenity.

#!/bin/sh
DOWNLOAD_DIR="${HOME}/videos"
PLAYER="vlc --play-and-exit --key-quit q --no-video-title-show --network-caching=8192"
YTDL_PATH="${HOME}/apps/youtube-dl -c --max-quality 44 --prefer-free-formats"
WAIT="sleep 6"

#############

FORM=`yad --geometry=360x104 --title="Youtube-dl" --form --field="Entrez l'URL:" \
    --field="Conserver la vidéo dans $DOWNLOAD_DIR ?":CHK`

MYURL=`echo $FORM | cut -d '|' -f 1`
KEEPVID=`echo $FORM | cut -d '|' -f 2`

mkdir -p $DOWNLOAD_DIR
if [ -n "$MYURL" -a "$KEEPVID" == "FALSE" ]; then
    echo "Patientez quelques secondes votre vidéo va démarrer..."
    ${YTDL_PATH} -g $MYURL | xargs $PLAYER 
elif [ -n "$MYURL" -a "$KEEPVID" == "TRUE" ]; then
    echo "Vous avez choisi de conserver cette vidéo dans $DOWNLOAD_DIR après
    visualisation.\nPatientez quelques secondes votre vidéo va démarrer..."
    FILENAME=`$YTDL_PATH -t --get-filename $MYURL`
    $YTDL_PATH -o "$DOWNLOAD_DIR/%(title)s-%(id)s.%(ext)s" \
        --no-part $MYURL & $WAIT && $PLAYER "$DOWNLOAD_DIR/$FILENAME"
fi

Vous pouvez télécharger le code ici

Sur ce, bon vent et à une prochaine ! ;)

Commentaires

#1

enebre, le 13 août 2013 à 08:18 :

Bonjour, merci pour ton suivi ce serait exactement le script idéal, pour l'instant j'ai encore un petit soucis...
$ ▶ sh yt-K
yt-K: 27: [: FALSE: unexpected operator
yt-K: 30: [: FALSE: unexpected operator

#2

Comète, le 13 août 2013 à 10:50 :

Tu n'aurais pas fait un copier/coller malencontreux ou modifié le script ?

Essaye de le télécharger avec le lien que je donne à la fin de l'article. C'est exactement celui-ci que j'utilise et je n'ai aucune erreur comme celle-ci.

#3

enebre, le 13 août 2013 à 11:58 :

j'ai juste changé l'adresse du path pour youtube-dl, il me manquerait une lib ?

#4

Comète, le 13 août 2013 à 13:05 :

As-tu installé "yad" comme précisé dans l'article ?

#5

enebre, le 14 août 2013 à 09:07 :

Oui yad est déjà installé, mon OS est Xubuntu xfce, version Voyager 12.10.
Je ne comprend pas, puisque ton autre script fonctionne bien. j'ai encore retéléchargé le script pour être certain...
A l'essai ce matin je reçois plus d'infos du terminal :
▶ sh yt-K
Traceback (most recent call last):
File "/usr/bin/youtube-dl", line 6, in <module>
youtube_dl.main()
File "/usr/lib/python2.7/dist-packages/youtube_dl/__init__.py", line 639, in main
_real_main(argv)
File "/usr/lib/python2.7/dist-packages/youtube_dl/__init__.py", line 623, in _real_main
retcode = ydl.download(all_urls)
File "/usr/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 573, in download
videos = self.extract_info(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 312, in extract_info
ie_result = ie.extract(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/common.py", line 96, in extract
return self._real_extract(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/generic.py", line 110, in _real_extract
new_url = self._test_redirect(url)
File "/usr/lib/python2.7/dist-packages/youtube_dl/extractor/generic.py", line 98, in _test_redirect
response = opener.open(HeadRequest(url))
File "/usr/lib/python2.7/urllib2.py", line 393, in open
protocol = req.get_type()
File "/usr/lib/python2.7/urllib2.py", line 255, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type:

#6

enebre, le 14 août 2013 à 09:23 :

excuse moi, mon dernier commentaire est une erreur, je me suis un peu emmêlé les pinceaux, je ne lançais pas le bon script,
je rectifies :

j'ai toujours le même retour du terminal

Je suis bien sur xfce

#7

enebre, le 14 août 2013 à 10:18 :

Sur le forum d'ubuntu on m'a suggéré de lancer le script en bash, et super le streaming fonctionne mais ça coince dès que je coche "conserver la vidéos.
▶ bash yt-K
Vous avez choisi de conserver cette vidéo dans $/home/marc/Videos/videos-yt après
visualisation.\nPatientez quelques secondes votre vidéo va démarrer...
Usage: youtube-dl [options] url [url...]

youtube-dl: error: using output template conflicts with using title, video ID or auto number
MPlayer svn r34540 (Ubuntu), built with gcc-4.7 (C) 2000-2012 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing $/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4.
File not found: '$/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4'
Failed to open $/home/marc/Videos/videos-yt/Jingle FUN Radio (2012)-UsOyZHCgMpM.mp4.

Exiting... (End of file)

#8

enebre, le 14 août 2013 à 12:48 :

Bon me revoila après des heures de recherche et j'ai trouvé que j'avais fait un fichier youtube-dl.conf et que c'était ça qui bloquait ton script.
Parfois quand même....
Super grand merci Comète pour ce script.
Ha ! je suis super content.

#9

enebre, le 15 août 2013 à 15:55 :

Bonjour Comète,
Crois-tu qu'il me serait possible de faire travailler ton script à la place de flash lorsque je veux regarder une vidéo depuis un site et avec Firefox.

#10

enebre, le 18 septembre 2013 à 21:39 :

Bonsoir Comete,
Il doit y avoir une erreur pour ubuntu car vois le retour du terminal, il dit ne pas trouver le fichier, pourtant le fichier est correctement téléchargé au bon endroit, mais vlc ne le trouve pas !!!
Merci de m'aider à résoudre ce dilemme ;)
$ ▶ sh /home/marc/Téléchargements/firefox/yt
Vous avez choisi de conserver cette vidéo dans /home/marc/yt17 après
visualisation.
Patientez quelques secondes votre vidéo va démarrer...
[youtube] Setting language
[youtube] P85Fj8m6v84: Downloading video webpage
[youtube] P85Fj8m6v84: Downloading video info webpage
[youtube] P85Fj8m6v84: Extracting video information
VLC media player 2.0.8 Twoflower (revision 2.0.8a-0-g68cf50b)
[download] Destination: /home/marc/yt17/What Is The Greatest Honor?-P85Fj8m6v84.mp4
[download] 8.5% of 5.86M at 225.81k/s ETA 00:24[0x8355920] main libvlc: Lancement de vlc avec l'interface par défaut. Utilisez « cvlc » pour démarrer VLC sans interface.
[download] 12.0% of 5.86M at 225.35k/s ETA 00:23[0xb5000fe8] filesystem access error: cannot open file /home/marc/yt17/What_Is_The_Greatest_Honor-P85Fj8m6v84.mp4 (No such file or directory)
[0xb5200560] main input error: open of `file:///home/marc/yt17/What_Is_The_Greatest_Honor-P85Fj8m6v84.mp4' failed
[0x83ed458] main playlist: end of playlist, exiting
[download] 15.7% of 5.86M at 210.59k/s ETA 00:24

Poster un commentaire