xmltv-fr.appspot.com est en ligne !
Par Olivier Mengué le dimanche 28 septembre 2008, 00:10 - XMLTV - Lien permanent
J'annonce xmltv-fr.appspot.com, mon grabber XMLTV qui diffuse la grille de programmes de télévision au format XMLTV.
J'avais déjà développé une solution à base de scripts shell et de feuille de style XSLT, puis un proxy en PHP il y a 6 mois, mais j'avais des problèmes de fiabilité en raison de l'hébergement chez Free.fr : un appel sur trois au service échouait. J'ai donc fait en une journée le portage en Python pour l'héberger sur Google AppEngine. Grâce à l'infrastructure de Google je ne devrait pas avoir de soucis du même type.
Pour l'instant, le flux récupéré ne correspond qu'à un seul appel au site Télérama et donc ne récupère que 3h de programmes des 6 chaînes analogiques nationales. Mais je compte bien poursuivre le portage pour arriver à l'équivalent de la version PHP puis éventuellement utiliser le stockage Google pour améliorer les performances grâce à un cache.
Pour vous faire patienter, voici un peu de doc sur l'interface du grabbber PHP :
/xmltv/telerama.xmltv
: 3h de programme à partir de maintenant sur les 6 chaînes (c'est la seule chose qui fonctionne sur xmltv-fr.appspot.com pour l'instant)./xmltv/telerama.xmltv?start=20080927220000
: 3h de programme à partir du samedi 27 à 22:00 (heure de Paris)/xmltv/telerama.xmltv?channels=192,4,80,34,47,118,111,445,119,195,446,444,234,78,226,481,458,482
: 3h de programme de la TNT
J'ai écrit cette semaine une feuille de style XSLT pour faire plusieurs appels au service et combiner les résultats en un seul fichier XMLTV :
xsltproc -o tv.xml http://o.mengue.free.fr/xmltv/telerama-full.xslt http://o.mengue.free.fr/xmltv/TNT.xml
Dès que j'aurais implémenté les paramètres start
et channels
la même feuille de style pourra aussi fonctionner pour xml-fr.appspot.com
.
MàJ 2008-09-29 : le portage est complet, l'API complète (start
, channels
) est disponible, donc vous pouvez utiliser la même feuille de style simplement en changeant l'URL du service. Voici un exemple où je récupère le programme des 5 prochains jours (voir le format du paramètre duration
) :
xsltproc -o tv.xml -stringparam xmltv-url http://xmltv-fr.appspot.com/telerama.xmltv -stringparam duration P5D http://o.mengue.free.fr/xmltv/telerama-full.xslt http://o.mengue.free.fr/xmltv/TNT.xml
Malheureusement, je m'aperçois que je rencontre les mêmes problèmes d'accès au service : je ne peux qu'en déduire que cela vient en fait du site Télérama. À suivre…
Commentaires
C'est une belle application. L'interface est bien.
J'ai écrit un bot Jabber qui publie le morceau en cours d'une radio sous la forme de <presence/> [1] et je voudrais écrire un bot qui afficherait les programmes TV en cours de la même façon - il y a même un format standard [2]. Le bot pourrait aussi envoyer un <message/> pour notifier du début d'un programme, probablement avec Pubsub.
J'ai commencé à jeter un oeil à python-xmltv, mais je n'ai pas encore trouvé comment parser le flux XMLTV de façon à en extraire le programme en cours.
Peut-être que l'idée pourrait t'intéresser.
Et autrement, l'URL de xmltv-fr.appspot.com pointe vers cette page.
[1] www.flickr.com/photos/kae...
[2] xmpp.org/extensions/xep-0...
Merci Kael. J'ai corrigé le lien.
Tu parles d'une interface. Si tu parles de la page de consultation en HTML, je n'ai aucun mérite puisqu'il s'agit de XSLTv Grid. Je produit juste le fichier tv.xml utilisé par XSLTv.
Pour afficher le programme en cours avec python-xmltv, voici un petit exemple :
Pour aller plus loin, il vaut mieux convertir les membres
start
/stop
d'un programme en objets datetime :