Depuis un peu plus d'un an, l'interface web de Google YouTube ne m'affiche plus les vidéos au motif que je devrais me connecter pour prouver que je ne suis pas un robot.
Il s'agit d'un blocage fondé sur une notation arbitraire et opaque des adresses IP. À ce stade et vu le peu d'infos dont je dispose, la responsabilité semble être partagée entre les géants du Net (car il n'y a pas que Google) et mon Fournisseur d'accès à Internet associatif.
Au début, j'utilisais yt-dlp avec un tmpfs (= un ramdisk) comme destination.
Un tmpfs se vide à chaque redémarrage de l'ordinateur. Comme le consigne sa doc, le paramètre -o de yt-dlp crée les dossiers qui n'existent pas, donc j'utilisais yt-dlp -o /tmp/ytd/%(title)s.%(ext)s via un fichier de configuration (j'vais y revenir).
Puis Google YouTube a aussi appliqué le blocage par IP aux flux vidéo eux-mêmes.
J'utilisais donc yt-dlp et la fonctionnalité mandataire SOCKS de SSH via un alias dans mon terminal (alias ytd='yt-dlp --proxy socks5://127.0.0.1:6666').
Bien souvent, le son est séparé de l'image, donc avant de regarder une vidéo, il faut attendre le téléchargement entier des deux pistes et leur fusion par yt-dlp (via ffmpeg).
Du coup, pour accélérer les choses, je me suis mis à restreindre la définition des vidéos à 720p max via le paramètre -f de yt-dlp : ytd -f 247+ba (piste vidéo dont l'identifiant est 247 et piste audio de la meilleure qualité disponible). L'identifiant 247 était stable, à part quelques exceptions, de vieilles vidéos, par ex.
Depuis quelques jours, l'identifiant de piste vidéo a changé, et il n'est plus identique entre les chaînes.
yt-dlp ne pourrait-il pas identifier automatiquement la « bonne » piste vidéo ? Bien sûr que si : -f 'bv[height<=720]+ba'. Plusieurs autres filtres (critères) sont disponibles. C'est via un article de Lord que j'ai découvert cette syntaxe.
Certaines chaînes doublent la bande son de leurs vidéos. Pour avoir la meilleure piste vidéo tant que la définition est inférieure ou égale à 720p et la meilleure piste audio tant qu'elle est en français ou la meilleure piste audio sans étiquette de langue : -f 'bv[height<=720]+(ba[language=fr]/ba)'.
yt-dlp accepte d'être configuré via un fichier.
Ce fichier de configuration est cherché dans plusieurs emplacements.
Le plus pratique, car il peut être caché tout en étant à côté des autres fichiers de conf personnels, me semble être ~/.yt-dlp/config. C'est celui que j'utilise.
La syntaxe du fichier est donnée dans la doc précitée. Dans mon cas :
-f 'bv[height<=720]+(ba[language=fr]/ba)'
-o /tmp/ytd/%(title)s.%(ext)s
(Je ne mets pas le proxy, car je ne l'utilise pas en dehors de Google YouTube, donc un alias dans mon terminal est plus adapté).