Différentes méthodes d’installation d’yt-dlp sont possibles, soit directement en provenance de github, ou par paquet Debian. Une mauvaise installation peut empêcher l’usage correct de nombreuses options, source de confusion.
L’installation d’yt-dlp de Debian offre quelques avantages:
• résolution plus rapide puisque les extracteurs sont décompressés à l’installation à /usr/lib/python3/dist-packages/yt_dlp/extractor/
.
L’exécutable de GIT, sans préparation, doit décompresser les extracteurs à chaque utilisation.
time yt-dlp -s EngW7tLk6R8
github: 5s
Debian: 4s
• le paquet Debian installe exclusivement une version release d’yt-dlp de github, et iinstalle son manuel (man yt-dlp
)
• permet un contrôle de version directement par apt (pas indispensable, mais pratique)
Fréquence de mise à jour:
yt-dlp contient plus de mille extracteurs video.
Chercher à chaque utilisation la dernière version nightly qui concerne peut-être uniquement le site ‹ OnDemandKoreaProgram › présente peu d’intérêt, et peut aussi apporter des régressions. Le « dernier » paquet yt-dlp disponible de Debian filtre correctement la fréquence utile de mise à jour (observation statistique)
Le problème rencontré pour Debian stable est que yt-dlp n’est mis à jour que dans le dépôt debian-backports. L’ajoût d’un dépôt supplémentaire pour un paquet de 2MB n’est techniquement pas optimum, la mise à jour d’un dépôt étant une opération apt lourde.
Le script dash suivant permet d’obtenir la version du paquet yt-dlp de Debian la plus à jour, indépendamment des sources de dépôts.
Pré-requis, installation de:
python3-{certifi,mutagen,pycryptodome,requests,urllib3,websockets} ffmpeg curl
/usr/local/bin/yt-dlp_update [20250630]
#!/usr/bin/dash
# yt-dlp_update : Recherche versions yt-dlp GIT+Debian # 20250630 #
# Depends: curl ffmpeg
# python3-{certifi,mutagen,pycryptodome,requests,urllib3,websockets}
y=`command -v yt-dlp` && C=`$y --version`
R='http://ftp.fr.debian.org/debian/pool/main/y/yt-dlp/'
P=`curl -sL $R | awk -F\" '/^[^~]*b</{x=$2}END{print x}'`
N=`expr substr ${P:--} 8 10` || exit 1
vck() { [ x$N = x$C ] && exit; }
upd() { wget -qO ${F:=/tmp/$P} $R$P &&
[ `dpkg -I $F |awk 'NR==2{print $2}'` = `stat -c%s $F` ] && $sd dpkg -i $F
[ $? -eq 0 ] && [ ${#y} -gt 15 ] && $sd rm $y ; }
# ---------
case $(id -u) in
0) vck ; sd=""; upd ;;
*) echo "Installé : ${C:---} $(readlink -e ${y:-x})"
echo "Disponible: $N [debian]"
G=`curl -s https://raw.githubusercontent.com/yt-dlp/yt-dlp/master/Changelog.md |
awk -F'[ *]' '/ 20/{printf $2};/ Ext/{x=1}{if(x==1){if(/^$/)exit}if(($1~"^-")&&
($4~"egr|fra|gen|owd|itc|vim|vk|wit|tok|utu|rum|bry|le[fm]")){printf " "$4}}'`
echo "Github : $G"; vck ; echo
read -p "Installation yt-dlp $N ? [↲ | n] " -r q; [ x$q = xn ] && exit
sd=$(command -v doas please sudo run0 |sed -n 1p); upd
[ $(yt-dlp --version) = $N ] && echo "\v ✔ yt-dlp $N installé"
[ -w ${L:=$HOME/.local/share/yt-dlp/yt-dlp.log} ] || install -DT /dev/null $L
[ "$G" ] && sed -n "/^$N/q1" $L && sed -i "1i$G\n" $L ;;
esac
exit
$ sudo chmod +x /usr/local/bin/yt-dlp_update
En usage user:
• information versions yt-dlp installée + dernière possible (debian) + release github
• information + log des extracteurs modifiés: ~/.local/share/yt-dlp/yt-dlp.log
• demande de confirmation avant installation
En usage root:
• exclusivement mise à jour si disponible, sans demande de confirmation, ni information, ni log extracteurs video.
$ yt-dlp_update
installé : 2025.06.09 /usr/bin/yt-dlp
Disponible: 2025.06.25 [debian]
Github : 2025.06.25 youtube
✔ yt-dlp 2025.06.25 installé
Information complémentaire / test yt-dlp
Test:
$ yt-dlp 'https://www.youtube.com/watch?v=EngW7tLk6R8' --get-title --get-id
Sample Videos / Dummy Videos For Demo Use
EngW7tLk6R8
Taille de la video EngW7tLk6R8
$ yt-dlp EngW7tLk6R8 --quiet --skip-download --exec-before-download 'size=$(numfmt --to=iec-i --suffix=B --format="%.2f" $(( %(requested_formats.0.filesize+requested_formats.1.filesize|0)d + %(filesize|0)d ))); echo "Size: $size"'
Size: 770,11KiB
Sans option, la vidéo est téléchargée, format par défaut: ‹ bestvideo*+bestaudio/best
›
mpv utilise directement yt-dlp, si correctement accesssible dans un chemin défini par la variable $PATH
.
$ mpv 'ytdl://ytsearch:fKFbnhcNnjE' --ytdl-format='bv[height<800]+ba/best'
# ou directement:
$ mpv 'https://www.youtube.com/watch?v=fKFbnhcNnjE'
Les options d’yt-dlp:
man yt-dlp
; GitHub - yt-dlp: Options
Une configuration par défaut d’yt-dlp peut être écrite dans ~/.config/yt-dlp/config
exemple:
--no-mtime
--geo-bypass
--youtube-skip-dash-manifest
--user-agent='Mozilla/5.0 (Linux;)'
Les options de format video d’yt-dlp pour mpv peuvent être écrites dans ~/.config/mpv/mpv.conf
exemple:
ytdl-format='bestvideo[height<800]+bestaudio/best'