Script python de lecture automatique de podcasts sur VLC sous linux

2017-03-06

Je passe pas mal de temps à suivre l’actualité sur twitter, et depuis un moment le compte de Ouest France me fournissait l’actualité générale. Sauf qu’entre deux actus pertinentes, on a le droit à une masse d’infos désuètes et de doubles tweets qui m’ont forcé à me désabonné de ce compte. Devant la difficulté de trouver un média généraliste politiquement neutre qui ne tweet pas plusieurs fois par heure, j’ai préféré revenir à un média plus traditionnel : la radio.

L’occasion de m’essayer à coder un humble premier script sérieux en python. Le but étant de parser les flux RSS de France Inter pour avoir l’url du dernier flash info, et de lancer sa lecture automatiquement dans VLC.

Je pensais que l’écriture de ce script me prendrait plus de temps. Voir beaucoup plus. Mais cette première version opérationnelle s’est faite sans trop de difficulté. Elle ne m’a demandé qu’un peu de lecture sur les bases de python que je n’avais pas.

Le principe est simple. J’ai fait le tour des flux RSS de France Inter pour y trouver les flashs info les plus intéressants. C’est à dire, suffisamment espacés dans la journée et d’une durée aussi faible que possible pour avoir un contenu pertinent et efficace.

La récupération de l’url du podcast se fait donc en fonction de l’heure à laquelle le script est lancé, grâce au parser FeedPaser pour python. Vous trouverez peut être que les plages horaires ne correspondent pas vraiment avec les heures des flashs infos désirés. Ce décalage est nécessaire car j’ai constaté que France Inter peut mettre 40mn avant la mise en ligne du dernier flash info.

Pour finir, le script lance la lecture du fichier MP3 en streaming de la façon la plus discrète possible, sans log ni interface. VLC se fermant comme un grand à la fin de la lecture.

Le script en question :


#!/usr/bin/python
# -*-coding:utf-8 -*

#Script d'écoute des journaux d'information de France Inter en fonction de l'heure sur VLC sous linux
#    By Tom23
# Testé sous Python 3,6 et nécessite python-feedparser 


#Import des modules nécessaires
from subprocess import *
import feedparser
from datetime import datetime

#Récupération de l'heure à laquelle le script est lancé (uniqument l'heure, pas les minutes)
now = datetime.now()
h = now.hour

#Définition des plages horaires définissant l'url du flux rss contenant l'adresse du flux audio
if h < 8: rss = "http://radiofrance-podcast.net/podcast09/rss_12628.xml" 
if h >= 8 and h < 14: rss = "http://radiofrance-podcast.net/podcast09/rss_12494.xml" 
if h >= 14 and h < 19: rss = "http://radiofrance-podcast.net/podcast09/rss_11673.xml" 
if h >= 19: rss = "http://radiofrance-podcast.net/podcast09/rss_11731.xml"


#Récupération du contenu du fichier xml du flux rss
feeds = feedparser.parse(rss)
syndication_number = 1

#Définition du parsing dans le seul dernier article du flux rss
for i in range(0, syndication_number):
    #Récupération du contenu de la valeur de "guid" dans cet article. Cette valeur étant l'url du flux audio
    url = feeds.entries[i]['guid']
    
    
#Lancement de VLC sans interface ni log (cvlc -q) et ouverture du flux audio défini avant (url). Fermeture de VLC à la fin de la lecture.    
vlclaunch = Popen(["cvlc", "-q", url, "cvlc://quit"])

Je pense que ce script est facilement adaptable à tout type de net-radio. Il suffit de lire le contenu du fichier xml pour trouver la valeur contenant l’url du fichier audio. Couplé à un alias dans mon .bashrc, je peux écouter simplement les dernières infos sans passer par un lecteur annexe ou l’ouverture une page web. Un vrai bonheur !


Saisissez votre adresse d'instance