Télécharger les podcasts de Radio France

Se culturer, c’est bien

Un jour, j’ai eu envie de réécouter une émission de France Culture. Les animateurs ne manquant jamais de rappeler, un brin de malice dans la voix, que leurs émissions sont disponibles en podcast - oups “ballado-diffusion” - je me suis rendu sur le site de France Culture. J’avais dans l’idée de télécharger rapidement ledit podcast sur mon téléphone portable. Mais, comme souvent en informatique, ce qui devait n’être l’affaire que de quelques minutes s’est vite transformé en soirée bidouille.

Déception brutale malgré le Drupal

Derrière le site de France Culture, comme en fait derrière les sites de toutes ses radios consoeurs du Groupe Radio France (France Info, France Inter, FIP, Le Mouv…), se cache un moteur Drupal. C’est le profiler BuiltWith qui m’a donné le tuyau, ici.

En cherchant un peu plus, j’ai appris que la plateforme a été construite par Open Web Solutions et est hébergée par Typhon (racheté fin 2012 par Claranet). C’est Bull qui a construit le data center interne convergent du Groupe Radio France, et l’agence La Netscouade a mis son grain de sel côté front Web. Bref, un workflow qui sent bon le Made in France et surtout le Made with Open Source. Pas mal !

Malheureusement, c’est un player Flash qui est été utilisé pour offrir aux auditeurs la réécoute d’une émission. Et surtout, on ne trouve sur la page aucun bouton Télécharger le podcast comme tout auditeur naïf pourrait spontanément s’y attendre. Il va falloir mettre les mains dans le cambouis.

Iframes, je vous aime

Analysons ce qui se passe, étape par étape, côté navigateur.

Je me rends sur la page de l’émission qui m’intéresse : http://www.franceculture.fr/emission-le-tete-a-tete-sophie-calle-rediffusion-de-l-emission-du-30-septembre-2012-2013-08-18

Page

Je clique sur le gros triangle, qui symbolise l’action Lecture.

Une nouvelle page s’ouvre : http://www.franceculture.fr/player/reecouter?play=4654404

Page

J’utilise le raccourci clavier Ctrl-u pour en voir la source.

Page

Cette page contient une iframe qui contient manifestement le player Flash.

Je clique sur l’url de l’iframe pour l’ouvrir : http://www.franceculture.fr/player/export-reecouter?content=4654404

Page

J’utilise le raccourci clavier Ctrl+Shift+i pour afficher la toolbar des Developer Tools. Je recharge la page (Ctrl+r) pour suivre précisement ce que fait le navigateur.

Page

Il semble que lorsque le player s’exécute, un flux réseau conséquent démarre : c’est le rapatriement du fichier mp3. En cliquant droit sur la ligne concernée, on peut en récupérer l’adresse : “Copy Link Adress” dans le menu. Bingo !

http://www.franceculture.fr/sites/default/files/sons/2013/08/s33/RF_257BABE0-01E9-449D-AFF8-3A771876A60A_GENE.MP3

Once a coder, always a coder

Mais on ne va pas s’arrêter là. Depuis le départ j’ai bien sûr dans l’idée d’automatiser ces étapes fastidieuses à l’aide d’un script.

Si on regarde de plus près la source HTML de cette iframe, on peut voir que des paramètres sont passés au player pour son initialisation. Parmi ces paramètres, movie contient l’url du fichier Shockwave (.swf) du player avec des variables GET dans l’url. Parmi ces variables GET accolées à l’url, on trouve la variable urlAOD qui contient le chemin relatif du fichier mp3. On trouve également la variable infos qui contient un dictionnaire au format json, avec des entrées qui nous seront utiles pour expliciter un peu le nom du fichier mp3 : media_section4 (slug du nom de l’émission) et media_name (slug du nom de l’épisode) notamment.

Page

Yaplukacoder !

La phase de recherche est terminée : on sait où trouver les informations qui nous intéressent. Il ne reste plus qu’à coder.

Le résultat de cette soirée bidouille est sur Github : https://gist.github.com/nilshamerlinck/5472929

Sortir du navigateur pour télécharger le podcast en ligne de commande, c’est pas très user-friendly. Lors d’une prochaine soirée bidouille j’envisage de recoder le script sous la forme d’un UserScript GreaseMonkey, pour qu’un bouton Télécharger le podcast apparaisse automagiquement sur la page de chaque émission.