Télécharger des vidéos sur Noovo avec youtube-dl

Ayant reçu plusieurs messages concernant le téléchargement des vidéos sur noovo.ca, j’ai finalement décidé de boucler la boucle plusieurs mois plus tard. Voici donc comment s’y prendre pour extraire les vidéos de la platforme de Noovo avec l’outil youtube-dl.

Un petit pull request pour activer Noovo avec youtube-dl

L’outil en ligne de commande youtube-dl est un programme permettant d’extraire et télécharger des fichiers médias sur Youtube mais aussi plusieurs autres sites, et Noovo fait partit de cette longue liste. La raison qui eplique pourquoi ce programme permet de l’utiliser sur un si grand nombre de sites est sa communauté, qui lui ajoute ce que le projet appelle des extractors.

En somme, pour activer noovo.ca avec youtube-dl, je n’ai eu qu’à coder un extractor (noovo.py) qui télécharge les pages web sur le site et trouve l’information à propos des médias à télécharger. Une fois ceci finalisé et testé, j’ai envoyé un pull request au projet. Ce dernier a été revu, quelques modifications apportées et mergées. L’historique peut être trouvé ici sur Github : github.com/ytdl-org/youtube-dl/pull/12792.

Installation de youtube-dl

Je ne vais pas vous expliquer comment installer l’outil mais simplement vous rediriger vers des gens qu’ils l’ont déjà fait.

Téléchargement en mode simple et avancé

Mode simple

En mode simple, sans paramètre, youtube-dl va tenter de télécharger la meilleure qualité possible.

Tout ce que vous avez à faire est de taper la commande youtube-dl https://site.com/video/url sur bash ou le command prompt de windows.

Prenons en example le vidéo que se trouve sur la page:
https://noovo.ca/videos/rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h

$ youtube-dl https://noovo.ca/videos/rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h

        [Noovo] rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h: Downloading webpage
        [brightcove:new] 6099476502001: Downloading webpage
        [brightcove:new] 6099476502001: Downloading JSON metadata
        [brightcove:new] 6099476502001: Downloading m3u8 information
        [brightcove:new] 6099476502001: Downloading m3u8 information
        [brightcove:new] 6099476502001: Downloading MPD manifest
        [brightcove:new] 6099476502001: Downloading MPD manifest
        [hlsnative] Downloading m3u8 manifest
        [hlsnative] Total fragments: 5
        [download] Destination: 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fhls-2884-1.mp4
        [download] 100% of 13.93MiB in 00:12
        [dashsegments] Total fragments: 9
        [download] Destination: 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fdash-c4362ff8b608-1.m4a
        [download] 100% of 730.27KiB in 00:03
        [ffmpeg] Merging formats into "1899  - La première voiture à atteindre les 100 km_h-6099476502001.mp4"
        Deleting original file 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fhls-2884-1.mp4
        Deleting original file 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fdash-c4362ff8b608-1.m4a

Mode avancé

En mode avancé, avec certains paramètres, il est possible de sélectionner quelle qualité audio et visuelle on veut sélectionner. En example ci-dessous

  1. youtube-dl -F https://site.com/video/url
  2. youtube-dl -f videoFormatID+audioFormatID https://site.com/video/url

Plus précisément, tout d'abord on utilise le paramètre -F pour obtenir une liste de formats possibles…

$ youtube-dl -F https://noovo.ca/videos/rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h

[Noovo] rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h: Downloading webpage
[brightcove:new] 6099476502001: Downloading webpage
[brightcove:new] 6099476502001: Downloading JSON metadata
[brightcove:new] 6099476502001: Downloading m3u8 information
[brightcove:new] 6099476502001: Downloading m3u8 information
[brightcove:new] 6099476502001: Downloading MPD manifest
[brightcove:new] 6099476502001: Downloading MPD manifest
[info] Available formats for 6099476502001:
format code                                  extension  resolution note
hls-audio-0-fr-CA__Main_-0                   mp4        audio only [fr-CA]
hls-audio-0-fr-CA__Main_-1                   mp4        audio only [fr-CA]
hls-audio-1-fr-CA__Main_-0                   mp4        audio only [fr-CA]
hls-audio-1-fr-CA__Main_-1                   mp4        audio only [fr-CA]
hls-audio-2-fr-CA__Main_-0                   mp4        audio only [fr-CA]
hls-audio-2-fr-CA__Main_-1                   mp4        audio only [fr-CA]
dash-cbbcaab3-43a9-4c3c-af47-75512387fa39-0  m4a        audio only [fr-CA] DASH audio   64k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-cbbcaab3-43a9-4c3c-af47-75512387fa39-1  m4a        audio only [fr-CA] DASH audio   64k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-67a70e24-52f9-41f5-8c0f-fb547ee103b8-0  m4a        audio only [fr-CA] DASH audio   96k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-67a70e24-52f9-41f5-8c0f-fb547ee103b8-1  m4a        audio only [fr-CA] DASH audio   96k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-c5d5f6df-45f6-429b-81f0-c4362ff8b608-0  m4a        audio only [fr-CA] DASH audio  128k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-c5d5f6df-45f6-429b-81f0-c4362ff8b608-1  m4a        audio only [fr-CA] DASH audio  128k , m4a_dash container, mp4a.40.2 (44100Hz)
dash-5af86bed-ac0e-430a-9347-b26181b1ecd8-0  mp4        480x270    DASH video  446k , mp4_dash container, avc1.420015, video only
dash-5af86bed-ac0e-430a-9347-b26181b1ecd8-1  mp4        480x270    DASH video  446k , mp4_dash container, avc1.420015, video only
hls-561-0                                    mp4        480x270     561k , avc1.420015, video only
hls-561-1                                    mp4        480x270     561k , avc1.420015, video only
dash-abe9173b-3086-4404-a8c5-789292009897-0  mp4        640x360    DASH video  694k , mp4_dash container, avc1.42001e, video only
dash-abe9173b-3086-4404-a8c5-789292009897-1  mp4        640x360    DASH video  694k , mp4_dash container, avc1.42001e, video only
hls-869-0                                    mp4        640x360     869k , avc1.42001e, video only
hls-869-1                                    mp4        640x360     869k , avc1.42001e, video only
dash-eb339c9c-dbd5-442c-a1cf-4116fbc5a846-0  mp4        640x360    DASH video  895k , mp4_dash container, avc1.4d001e, video only
dash-eb339c9c-dbd5-442c-a1cf-4116fbc5a846-1  mp4        640x360    DASH video  895k , mp4_dash container, avc1.4d001e, video only
hls-1125-0                                   mp4        640x360    1125k , avc1.4d001e, video only
hls-1125-1                                   mp4        640x360    1125k , avc1.4d001e, video only
dash-580f6a19-41d4-4a0f-a242-5612c4edbd20-0  mp4        960x540    DASH video 1199k , mp4_dash container, avc1.4d001f, video only
dash-580f6a19-41d4-4a0f-a242-5612c4edbd20-1  mp4        960x540    DASH video 1199k , mp4_dash container, avc1.4d001f, video only
hls-1459-0                                   mp4        960x540    1459k , avc1.4d001f, video only
hls-1459-1                                   mp4        960x540    1459k , avc1.4d001f, video only
dash-922a1ca7-b504-4521-9ec4-44ec1b9979f2-0  mp4        960x540    DASH video 1701k , mp4_dash container, avc1.4d001f, video only
dash-922a1ca7-b504-4521-9ec4-44ec1b9979f2-1  mp4        960x540    DASH video 1701k , mp4_dash container, avc1.4d001f, video only
hls-2011-0                                   mp4        960x540    2011k , avc1.4d001f, video only
hls-2011-1                                   mp4        960x540    2011k , avc1.4d001f, video only
dash-cc0684c4-73e7-4f16-8a11-5f5722c0ae92-0  mp4        1280x720   DASH video 2494k , mp4_dash container, avc1.4d001f, video only
dash-cc0684c4-73e7-4f16-8a11-5f5722c0ae92-1  mp4        1280x720   DASH video 2494k , mp4_dash container, avc1.4d001f, video only
hls-2884-0                                   mp4        1280x720   2884k , avc1.4d001f, video only
hls-2884-1                                   mp4        1280x720   2884k , avc1.4d001f, video only (best)

Ensuite, on sélectionne quels formats on veut, vidéo et audio (video+audio), comme ceci…

$ youtube-dl -f hls-1459-0+dash-67a70e24-52f9-41f5-8c0f-fb547ee103b8-0 https://noovo.ca/videos/rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h

[Noovo] rpm/1899-la-premiere-voiture-a-atteindre-les-100-km-h: Downloading webpage
[brightcove:new] 6099476502001: Downloading webpage
[brightcove:new] 6099476502001: Downloading JSON metadata
[brightcove:new] 6099476502001: Downloading m3u8 information
[brightcove:new] 6099476502001: Downloading m3u8 information
[brightcove:new] 6099476502001: Downloading MPD manifest
[brightcove:new] 6099476502001: Downloading MPD manifest
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 5
[download] Destination: 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fhls-1459-0.mp4
[download] 100% of 6.78MiB in 00:06
[dashsegments] Total fragments: 9
[download] Destination: 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fdash-67a70e24-52f9-41f5-8c0f-fb547ee103b8-0.m4a
[download] 100% of 551.85KiB in 00:01
[ffmpeg] Merging formats into "1899  - La première voiture à atteindre les 100 km_h-6099476502001.mp4"
Deleting original file 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fhls-1459-0.mp4 (pass -k to keep)
Deleting original file 1899  - La première voiture à atteindre les 100 km_h-6099476502001.fdash-67a70e24-52f9-41f5-8c0f-fb547ee103b8-0.m4a (pass -k to keep)

FFMpeg, un outil indispensable

Vous aurez vite remarqué que FFMpeg est utilisé par youtube-dl pour muxer les fichiers vidéos et audios ensemble. Il est donc important de s'assurer d'avoir FFMpeg installé sur votre système.