Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-12-2016 06:53:31

otyugh
Membre
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016

Un truc bête avec youtube-dl

Youtube-dl c'est bien. Mais c'est jamais à jour !

#1 : La solution : ne pas installer youtube-dl via le gestionnaire de paquet sauf si vous êtes sur une rolling release (pas jessie ou stretch, donc).
Si vous êtes dans ce cas-là copier le script python manuellement :

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl



Mais même là, par les mises à jour avec la commande "youtube-dl -U" dans crontab (ou plutôt anachron pour les non serveurs), histoire de maintenir le bidzouf à jour, ça marche pas super bien.
Pourquoi ? Il faut parfois 5/6 tentatives avant qu'il parvienne à se synchroniser.

#2 : La solution est toute bête : "tant que ça ne retourne pas 0, on essaye encore" ;

while true; do youtube-dl -U && break; done


Mon entrée dans /etc/anacrontab

bash -c "while true; do youtube-dl -U && break; done"


(note : si internet est coupé, youtube-dl renvoit aussi 0, donc on tourne pas à l'infini o/)


Pour ceux qui avaient le problème. Je vais probablement poster à la suite un petit script bash pour avoir un GUI (il me semble que ça existe déjà en python - vous connaissez ?).

Dernière modification par otyugh (13-12-2016 07:02:41)


Agenda du libre : se faire dépanner/dépanner IRL ! Le libre n'est pas qu'un phénomène internet.
Framapad sur les balados : Emissions audio pro/amateur, votre radio sur-mesure !

Hors ligne

#2 01-01-2017 00:39:56

guillaume22
Membre
Inscription : 26-04-2015

Re : Un truc bête avec youtube-dl

Si je puis rajouter un truc, on peut l'installer aussi par pip install, on a une version récente mais en mode plus automatique.

Bonne nuit

La connaissance est pour l'humanité un magnifique moyen pour s'anéantir elle-même.       Nietzsche  (1844-1900)

Hors ligne

#3 18-01-2017 05:20:39

otyugh
Membre
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016

Re : Un truc bête avec youtube-dl

Ce script de MàJ + un deuxième script plus gros pour faire un "frontend" où mettre la vidéo et on obtient... Un truc Michuesque ! Plus besoin de plugin à la con pour télécharger des vidéos sur firefox !
Je crois que ça existait déjà dans une véritable application en python. Mais j'ai fait la mienne, <3
https://b2aeaa58a57a200320db-8b65b95250 … encast.ogv

(la vidéo est pas bien fluide, j'ai un trop vieux coucou pour screencaster en HD yikes)
- j'ai aussi fait que par défaut il cherche dans le presse papier. Comme on voit au début ça pose problème. Puis une fois qu'on a l'habitude, on selectionne bêtement l'url, et hop, c'est partit.

#!/bin/bash

#Depends : youtube-dl, avconv, xclip, bash, wget

path_tmp="/tmp/ytdl/" #where the file is downloaded first
path_sav="${HOME}/Bureau" #where the downloaded file ends
ytdl="/usr/local/bin/youtube-dl" #where the binary is

name="%(title)s.%(ext)s"
exec="mv '{}' ${path_sav}; exit 0"  

[ -d "$path_sav" ] || exit 1
[ -x "$ytdl" ] || exit 2
mkdir -p "$path_tmp"
cd "$path_tmp"

#
#find the target : as argument, in clipboard, ask
#
url="$1"
[ -z "$url" ] && url="$(xclip -o 2>/dev/null)"

while true; do
  if [ ! -z "$url" ]; then
    wget --spider "$url" 2>/dev/null && break || zenity --warning --text "La page $url est introuvable" 2>/dev/null
  fi
  url=$(zenity --entry --title "Youtube-dl GUI" --text "Entrez un lien web contenant une/des vidéo(s)" --entry-text="$url" 2>/dev/null)
  [ $? -ne 0 ] && exit 10
done

#ASK user FORMAT
a=""
while [ -z "$a" ]; do
  a=$(zenity --list --hide-column=1 --text "Choix d'extraction $url" --title "Youtube-dl GUI" \
  --column "ID" --column "Format" --column "Détails" \
  "hd" "Vidéo HD" "1080p ou inférieur" \
  "sd" "Vidéo SD" "480p ou inférieur" \
  "mp3+" "Audio HQ" "Meilleur qualité" \
  "mp3" "Audio LQ" "Plus léger" 2>"/dev/null")
  [ $? -ne 0 ] && exit 20

  #translation
  case "$a" in
  "mp3") format="mp3/worstaudio"; audio="-x --audio-format mp3"
  ;;
  "mp3+") format="bestaudio"; audio="-x --audio-format mp3"
  ;;
  "hd") format="best"
  ;;
  "sd") format="best[height<480]/worst[height<=480]/best"
  ;;
  esac
  [ -z "$a" ] && zenity --warning --text "Vous n'avez pas selectionné de choix"
done

#
#START DOWNLOAD
#

coproc zen { zenity --progress --auto-close --text "Recherche du flux vidéo" --title "Téléchargement de ${url:0:43}..." --width=300 2>"/dev/null"; }
pid_zen=$!

echo $ytdl \""$url"\" -f \""$format"\" --newline --restrict-filenames -o \""$name"\" --exec \""$exec"\" $audio
coproc ydl { $ytdl "$url" -f "$format" --newline --restrict-filenames -o "$name" --exec "$exec" $audio 2>"./err" \
|sed -ur "s/\[download\] +([^%]+)% of ([^ ]+) at ([^ ]+) ETA (.*)/#\2 téléchargé (débit \3, ETA \4) \n\1/" \
|sed -u "s/100.0/#Extraction.../">&${zen[1]}; exit ${PIPESTATUS[0]}; }
pid_ytdl=$!

wait -n $pid_ytdl $pid_zen
#store the pid of the exited process : in the case that zenity quit first, abort.
r_ytdl=$?
kill -0 $pid_ytdl 2>/dev/null && kill $pid_ytdl && echo "Extraction" && exit 1

#
#YTDL finished his job or failed
#

if [ $r_ytdl -ne 0 ]; then
  a=$(cat "./err" | sed "s/\. .*//")
  echo "#Echec du téléchargement de $url\n\n$a" >&${zen[1]}
else
  echo "100" >&${zen[1]}
fi
 

Dernière modification par otyugh (18-01-2017 05:37:21)


Agenda du libre : se faire dépanner/dépanner IRL ! Le libre n'est pas qu'un phénomène internet.
Framapad sur les balados : Emissions audio pro/amateur, votre radio sur-mesure !

Hors ligne

#4 18-01-2017 09:16:29

sogal
Black Metal Modo
Lieu : Nord Isère
Distrib. : openSUSE Leap 42.3
Noyau : Linux 4.4.76
(G)UI : GNOME
Inscription : 09-05-2013
Site Web

Re : Un truc bête avec youtube-dl

Stylé ! yes.gif

1485418338.png Hello IT ! Have you tried turning it off and on again ?

Hors ligne

#5 18-01-2017 10:49:02

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Stretch
Noyau : Linux 4.9.0-3-amd64
(G)UI : Gnome
Inscription : 16-03-2012
Site Web

Re : Un truc bête avec youtube-dl

il existe un interface graphique: http://mrs0m30n3.github.io/youtube-dl-gui/
mais j'ai jamais testé.

Hors ligne

#6 20-01-2017 16:22:17

phlinux
Membre
Lieu : S-M
Distrib. : Jessie
Noyau : 4.6
(G)UI : Openbox (+Rox+Feh)
Inscription : 10-05-2009

Re : Un truc bête avec youtube-dl

@otyugh : Ouais bon petit script simple et léger; adopté

Pages perso : feh, omegat, udisks, sa station de travail comme passerelle

Hors ligne

#7 20-01-2017 16:40:22

otyugh
Membre
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016

Re : Un truc bête avec youtube-dl

Ahm, par contre y a des petites choses que j'ai découvert en le testant que j'ai corrigé au vol depuis. Si tu vois un bug, donne le lien et je corrige (développeur du dimanche o/)

#!/bin/bash

#Depends : youtube-dl, avconv, xclip, bash

path_tmp="/tmp/ytdl/" #where the file is downloaded first
path_sav="${HOME}/Bureau" #where the downloaded file ends
ytdl="/usr/local/bin/youtube-dl" #where the binary is (MUST BE UPDATED, anacron daily is a great tool for that)

name="%(title)s.%(ext)s" #naming file pattern
exec="mv '{}' ${path_sav}; exit 0"  #move

[ -d "$path_sav" ] || exit 1
[ -x "$ytdl" ] || exit 2
mkdir -p "$path_tmp"
cd "$path_tmp"

#
#find the target : as argument, in clipboard, ask
#
url="$1"
[ -z "$url" ] && url="$(xclip -o 2>/dev/null)"

while true; do
  if [ ! -z "$url" ]; then
    wget --spider "$url" 2>/dev/null && break || zenity --warning --text "La page $url est introuvable" 2>/dev/null
  fi
  url=$(zenity --entry --title "Youtube-dl GUI" --text "Entrez un lien web contenant une/des vidéo(s)" --entry-text="$url" 2>/dev/null)
  [ $? -ne 0 ] && exit 10
done

#ASK user FORMAT
a=""
while [ -z "$a" ]; do
  a=$(zenity --list --hide-column=1 --text "Choix d'extraction $url" --title "Youtube-dl GUI" \
  --column "ID" --column "Format" --column "Détails" \
  "hd" "Vidéo HD" "1080p ou inférieur" \
  "sd" "Vidéo SD" "480p ou inférieur" \
  "mp3+" "Audio HQ" "Meilleur qualité" \
  "mp3" "Audio LQ" "Plus léger" 2>"/dev/null")
  [ $? -ne 0 ] && exit 20

  #translation
  case "$a" in
  "mp3") format="mp3/worstaudio/worst"; audio="-x --audio-format mp3"
  ;;
  "mp3+") format="bestaudio/best"; audio="-x --audio-format mp3"
  ;;
  "hd") format="best"
  ;;
  "sd") format="best[height<480]/worst[height<=480]/best"
  ;;
  esac
  [ -z "$a" ] && zenity --warning --text "Vous n'avez pas selectionné de choix"
done

#
#START DOWNLOAD
#

coproc zen { zenity --progress --auto-close --text "Recherche du flux vidéo" --title "Téléchargement de ${url:0:43}..." --width=300 2>"/dev/null"; }
pid_zen=$!

echo $ytdl \""$url"\" -f \""$format"\" --newline --restrict-filenames -o \""$name"\" --exec \""$exec"\" $audio
coproc ydl { $ytdl "$url" -f "$format" --newline --restrict-filenames -o "$name" --exec "$exec" $audio 2>"./err" \
|sed -ur "s/\[download\] +([^%]+)% of ([^ ]+) at ([^ ]+) ETA (.*)/#\2 téléchargé (débit \3, ETA \4) \n\1/" \
|sed -u "s/100.0/#Extraction.../">&${zen[1]}; exit ${PIPESTATUS[0]}; }
pid_ytdl=$!

wait -n $pid_ytdl $pid_zen
#store the pid of the exited process : in the case that zenity quit first, abort.
r_ytdl=$?
kill -0 $pid_ytdl 2>/dev/null && kill $pid_ytdl && echo "Extraction" && exit 1


#
#YTDL finished his job or failed
#
if [ $r_ytdl -ne 0 ]; then
  a=$(cat "./err" | sed "s/\. .*//")
  echo "#Echec du téléchargement de $url\n\n$a" >&${zen[1]}
  sleep 600
#else
#        echo "#Téléchargement terminé\n$urlx" >&${zen[1]}
# echo "100" >&${zen[1]}
fi
 

Dernière modification par otyugh (20-01-2017 16:46:02)


Agenda du libre : se faire dépanner/dépanner IRL ! Le libre n'est pas qu'un phénomène internet.
Framapad sur les balados : Emissions audio pro/amateur, votre radio sur-mesure !

Hors ligne

Pied de page des forums