Bonjour à tous,
Depuis le début de l'été, ma playlist "Watch Later"/"À regarder plus tard" n'a cessé de grandir. À une certaine période il y avait plus de 1000 vidéos en attente.
Afin de savoir combien de temps je devrais passer devant un écran si je regardais toutes ces vidéos, j'ai voulu extraire des informations sur cette playlist.
En particulier :
- Combien de chaines YouTube y sont présentes + quel est le nombre d'occurences de chacune ?
- Quelle est la durée totale de la playlist ?
- Combien y-a-t-il de vidéos qui durent moins de X minutes ?
youtube-dl est un outil en ligne de commande qui vous permet de télécharger des vidéos youtube, des playlists, extraire des métadonnées, ...
Étape 1 : récupérer les liens
Autrefois, youtube-dl était capable d'extraire toutes les informations de la playlist en une seule fois. Depuis que YouTube a changé son design, vous avez peut-être remarqué (si vous avez comme moi un grand nombre de vidéos en attente) que youtube les chargent 100 par 100.
Il nous faut donc un autre outil pour extraire l'ensemble des liens sur la page.
Nous allons utiliser "Link Gopher", une extension de navigateur.
Ensuite il faut vous rendre sur la page de votre playlist et scroller vers le bas afin de charger l'ensemble des vidéos.
Vous pouvez ensuite cliquer sur l'icone de l'extension "Link Gopher" puis choisir "Extract Links by Filter" et entrer ce filtre :
&list=WL&index=
Il vous restera à coller le résultat dans un fichier links.txt
Étape 2 : récupérer les infos sur les vidéos
Pour extraire les informations de la liste de vidéo, on va passer le fichier dernièrement créé à youtube-dl avec une commande de cette forme :
youtube-dl -a links.txt -j --ignore-errors > dump-ydl.json
-a links.txt
lui dit que le fichier links.txt contient une liste de vidéos.
-j
que nous voulons les données au format JSON (format de données facilement exploitable par la suite)
--ignore-errors
youtube-dl remontera les erreurs/warnings mais ne s'arretera pas au premier problème
> dump-ydl.json
le résultat sera stocké dans un fichier nommé dump-ydl.json
Pour voir la progression :
Youtube-dl ne permet pas de suivre la progression. Pour cela vous pouvez utiliser la commande suivante :
wc -l dump-ydl.json
Elle vous retournera le nombre de vidéos ayant été traitées. Vous n'avez qu'à faire une soustraction pour savoir combien de vidéos il reste.
Étape 3 : Exploiter les données
Pour exploiter les données contenues dans le fichier dump-ydl.json, nous allons utiliser l'outil en ligne de commande jq
(pour l'installer : sudo apt install jq
).
Cet outil permet de traiter des fichiers contenant des données JSON facilement.
Je vous laisse découvrir l'outil par vous même.
Voici deux exemples de commandes possibles pour extraire des informations :
Liste des vidéos de - de 5 minutes :
jq 'select(.duration <= 300) | .id' dump-ydl.json
Tri & ordre des chaines :
jq '.channel' dump-ydl.json| sort | uniq -c | sort -nr