PageRenderTime 285ms CodeModel.GetById 11ms RepoModel.GetById 4ms app.codeStats 0ms

/plugins/FranceInter.py

https://code.google.com/p/tvdownloader/
Python | 80 lines | 38 code | 21 blank | 21 comment | 5 complexity | 3dee6743f4d45ff151844189e925c8e9 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, LGPL-2.1
  1. #!/usr/bin/env python
  2. # -*- coding:Utf-8 -*-
  3. #########################################
  4. # Licence : GPL2 ; voir fichier COPYING #
  5. #########################################
  6. # Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
  7. # Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
  8. # Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.
  9. ###########
  10. # Modules #
  11. ###########
  12. import re
  13. import os
  14. import os.path
  15. #~ import pickle
  16. import xml.sax
  17. from Podcasts import PodcastsHandler
  18. from Fichier import Fichier
  19. from Plugin import Plugin
  20. ###########
  21. # Classes #
  22. ###########
  23. class FranceInter( Plugin ):
  24. ulrListeEmission = "http://www.franceinter.fr/podcasts/liste-des-emissions"
  25. listeEmissions = {} # { Nom emission, URL fichier XML }
  26. pageRegEx = re.compile( 'class="visuel" title="([^"]*?)".+?href="(http://radiofrance-podcast.net/podcast09/.+?.xml)', re.DOTALL )
  27. def __init__( self ):
  28. Plugin.__init__( self, "France Inter", "http://www.franceinter.fr/podcasts", 30 )
  29. if os.path.exists( self.fichierCache ):
  30. self.listeEmissions = self.chargerCache()
  31. def rafraichir( self ):
  32. self.afficher( u"Récupération de la liste des émissions..." )
  33. # On remet a 0 la liste des emissions
  34. self.listeEmissions.clear()
  35. # On recupere la page web
  36. page = self.API.getPage( self.ulrListeEmission )
  37. # Extraction des emissions
  38. self.listeEmissions = dict( re.findall( self.pageRegEx, page ) )
  39. self.sauvegarderCache( self.listeEmissions )
  40. self.afficher( u"Liste des émissions sauvegardées" )
  41. def listerChaines( self ):
  42. self.ajouterChaine( self.nom )
  43. def listerEmissions( self, chaine ):
  44. for emission in self.listeEmissions.keys():
  45. self.ajouterEmission( chaine, emission )
  46. def listerFichiers( self, emission ):
  47. if( self.listeEmissions.has_key( emission ) ):
  48. # On recupere la page web qui liste les fichiers
  49. pageXML = self.API.getPage( self.listeEmissions[ emission ] )
  50. # On extrait les fichiers
  51. listeFichiers = []
  52. handler = PodcastsHandler( listeFichiers )
  53. try:
  54. xml.sax.parseString( pageXML, handler )
  55. except:
  56. return
  57. # On ajoute les fichiers
  58. for fichier in listeFichiers:
  59. self.ajouterFichier( emission, fichier )