PageRenderTime 52ms CodeModel.GetById 30ms app.highlight 6ms RepoModel.GetById 14ms app.codeStats 1ms

/plugins/FranceInter.py

https://code.google.com/p/tvdownloader/
Python | 80 lines | 38 code | 21 blank | 21 comment | 6 complexity | 3dee6743f4d45ff151844189e925c8e9 MD5 | raw file
 1#!/usr/bin/env python
 2# -*- coding:Utf-8 -*-
 3
 4#########################################
 5# Licence : GPL2 ; voir fichier COPYING #
 6#########################################
 7
 8# 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).
 9# 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.
10# 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.
11
12###########
13# Modules #
14###########
15
16import re
17import os
18import os.path
19#~ import pickle
20import xml.sax
21
22from Podcasts import PodcastsHandler
23
24from Fichier import Fichier
25from Plugin import Plugin
26
27###########
28# Classes #
29###########
30
31class FranceInter( Plugin ):
32	
33	ulrListeEmission     = "http://www.franceinter.fr/podcasts/liste-des-emissions"
34	listeEmissions       = {} # { Nom emission, URL fichier XML }
35	pageRegEx            = re.compile( 'class="visuel" title="([^"]*?)".+?href="(http://radiofrance-podcast.net/podcast09/.+?.xml)', re.DOTALL )
36	
37	def __init__( self ):
38		Plugin.__init__( self, "France Inter", "http://www.franceinter.fr/podcasts", 30 )
39		
40		if os.path.exists( self.fichierCache ):
41			self.listeEmissions = self.chargerCache()
42		
43	def rafraichir( self ):
44		self.afficher( u"Récupération de la liste des émissions..." )
45		
46		# On remet a 0 la liste des emissions
47		self.listeEmissions.clear()
48		# On recupere la page web
49		page = self.API.getPage( self.ulrListeEmission )
50		# Extraction des emissions
51		self.listeEmissions = dict( re.findall( self.pageRegEx, page ) )
52		
53		self.sauvegarderCache( self.listeEmissions )
54		self.afficher( u"Liste des émissions sauvegardées" )
55		
56	def listerChaines( self ):
57		self.ajouterChaine( self.nom )
58	
59	def listerEmissions( self, chaine ):
60		for emission in self.listeEmissions.keys():
61			self.ajouterEmission( chaine, emission )
62				
63	def listerFichiers( self, emission ):
64		
65		if( self.listeEmissions.has_key( emission ) ):
66			# On recupere la page web qui liste les fichiers
67			pageXML = self.API.getPage( self.listeEmissions[ emission ] )
68			
69			# On extrait les fichiers
70			listeFichiers = []
71			handler = PodcastsHandler( listeFichiers )
72			try:
73				xml.sax.parseString( pageXML, handler )
74			except:
75				return
76			
77			# On ajoute les fichiers
78			for fichier in listeFichiers:
79				self.ajouterFichier( emission, fichier )
80