Oh! lala! Noovo a encore modifié leur site donc ce processus est brisé, cependant un petit pull request a permis d’utiliser youtube-dl pour télécharger ceux-ci.
Voici un tutoriel simplifié expliquant comment télécharger les fichiers vidéos offerts sur Noovo.ca. Nous allons d'abord nous concentrer sur le comment avec une recette rapide et efficace. Ensuite, pour les intéressés, nous allons nous attarder sur le pourquoi du comment, les technicalités quoi.
Il vous suffit de glisser et déposer le bouton qui se trouve juste ici-bas intitulé Noovo DL
dans votre bar de bookmarks (signets).
Il faut désormais simplement choisir sa vidéo en se rendant sur une page offrant un player pour ensuite cliquer sur le bookmarlet. Une fois le bookmarklet exécuté, une liste de fichiers à télécharger s'offrira à vous en haut de la page. Ce n'est pas le plus beau design au monde, mais ça fonctionne.
Pour télécharger la résolution voulue, il ne suffit que de cliquer avec le bouton droit de la souris et Enregistrer sous...
Voilà! Pas plus compliqué que ça.
Noovo utilise encore et toujours BrigthCove comme fournisseur de diffusion de vidéos cependant ils ont changé la façon d'utiliser leur API. Brightcove offre désormais une protection supplémentaire en demandant au site tel que Noovo.ca d'injecter un token dans un header HTTP standard.
Le header en question est Accept
. C'est un peu étrange, mais ils expliquent la raison dans leur documentation.
$.getJSON('http://api.noovo.ca/api/v1/pages/single-episode/'+window.location.href.split('/').splice(-2).join('/'), function(resp) {
brightcoveId = resp.data.brightcoveId
if (brightcoveId == undefined) {
brightcoveId = resp.data.contents[0].brightcoveId
}
$.ajaxSetup({
headers : {
'Accept' : 'application/json;pk=super_long_secret_token'
}
});
$.getJSON('https://edge.api.brightcove.com/playback/v1/accounts/618566855001/videos/'+brightcoveId, function(resp) {
html = '<div style="background-color: white; padding-bottom: 30px"><h1>Download:</h1><ul>'
for (i in resp.sources) {
if (resp.sources[i].hasOwnProperty('src') && resp.sources[i].container == 'MP4') {
url = resp.sources[i].src
html += '<li>' + resp.sources[i].height + 'p: <a href="' + url + '">' + url + '</a></li>'
}
}
html += '</ul></div>'
$('body').prepend(html)
});
});
Quelques explications:
brightcoveId
nécessaire (grâce à l'API de Noovo)http://noovo.ca/videos/ca-va-brasser/riverbend-alma_89971
ca-va-brasser/riverbend-alma_89971
http://api.noovo.ca/api/v1/pages/single-episode/ca-va-brasser/riverbend-alma_89971
brightcoveId
(identifiant unique de la vidéo) dans le JSON retourné.Policy Key
dans le header Accept
brigthcoveId