Advertisement
Guest User

Full Circle Magazine 70 - TvRage partie 3

a guest
May 12th, 2013
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.34 KB | None | 0 0
  1. """
  2. Filename        : tvragetest.py
  3. Author          : G.D. Walters
  4. Purpose         : Cherche sur TVRage.com des informations sur des emissions TV
  5. """
  6. #=============================================================
  7. #                        IMPORTS
  8. #=============================================================
  9. from xml.etree import ElementTree as ET
  10. import urllib
  11. import sys
  12.  
  13. #=============================================================
  14. #                   Classe principale
  15. #=============================================================
  16.  
  17. class TvRage:
  18.     def __init__(self):
  19.         self.CleAPI = "Itnl8IyY1hsR9n0IP6zI"
  20.         self.ChaineRechercheSerie = "http://services.tvrage.com/myfeeds/search.php?key="
  21.         self.ChaineInformationEmission = "http://services.tvrage.com/myfeeds/showinfo.php?key="
  22.         self.ChaineListeEpisodes = "http://services.tvrage.com/myfeeds/episode_list.php?key="
  23.         self.ListeEmissions = []
  24.         self.InfosEmissions = []
  25.         self.ListeEpisodes = []
  26.         self.ElementEpisode = []
  27.  
  28.  
  29.     def TrouverIdParNom(self,nomEmission,debug = 0):
  30.         chaine = self.ChaineRechercheSerie + self.CleAPI + "&show=" + nomEmission
  31.         urllib.socket.setdefaulttimeout(8)
  32.         usock = urllib.urlopen(chaine)
  33.         resultat = ET.parse(usock).getroot()
  34.         usock.close()
  35.         compteurTrouves = 0
  36.         self.listeEmissions = []
  37.         for noeud in resultat.findall('show'):
  38.             infosEmissions = []
  39.             chaineGenre = None
  40.             dict = {}
  41.             for n in noeud:
  42.                 if n.tag == 'showid':
  43.                     idemission = n.text
  44.                     dict['ID'] = idemission
  45.                 elif n.tag == 'name':
  46.                     nomEmission = n.text
  47.                     dict['Nom'] = nomEmission
  48.                 elif n.tag == 'link':
  49.                     showlink = n.text
  50.                     dict['Lien'] = showlink
  51.                 elif n.tag == 'country':
  52.                     showcountry = n.text
  53.                     dict['Pays'] = showcountry
  54.                 elif n.tag == 'started':
  55.                     showstarted = n.text
  56.                     dict['Debut'] = showstarted
  57.                 elif n.tag == 'ended':
  58.                     showended = n.text
  59.                     dict['Fin'] = showended
  60.                 elif n.tag == 'seasons':
  61.                     showseasons = n.text
  62.                     dict['Saisons'] = showseasons
  63.                 elif n.tag == 'status':
  64.                     showstatus = n.text
  65.                     dict['Etat'] = showstatus
  66.                 elif n.tag == 'classification':
  67.                     showclassification = n.text
  68.                     dict['Classification'] = showclassification
  69.                 elif n.tag == 'genres':
  70.                     for sousElement in n:
  71.                         if sousElement.tag == 'genre':
  72.                             if sousElement.text != None:
  73.                                 if chaineGenre == None:
  74.                                     chaineGenre = sousElement.text
  75.                                 else:
  76.                                     chaineGenre += " | " + sousElement.text
  77.                     dict['Genres'] = chaineGenre
  78.             compteurTrouves += 1
  79.             self.listeEmissions.append(dict)
  80.         return self.listeEmissions
  81. #========================================================
  82.  
  83.     def AfficheResultatsEmission(self, ListeEmissionsDict):
  84.         tailleListe = len(ListeEmissionsDict)
  85.         print "%d resultat(s)" % tailleListe
  86.         print "------------------------"
  87.         compteur = 1
  88.         for c in ListeEmissionsDict:
  89.             print "%d - %s - %s" % (compteur,c['Nom'],c['ID']) #,c['Fin'],c['Lien']
  90.             compteur += 1
  91.         sel = raw_input("Choisir un nombre ou 0 pour quitter -> ")
  92.         return sel
  93.  
  94.  
  95. #========================================================
  96.     """
  97.       TrouveInfoEmission(idemission,debug)
  98.       Balises autorisees :
  99.       ID,Name,Link,Country,Seasons,Image,Started,StartDate,Ended,
  100.       Status,Classification,Summary,Genres,Runtime,NetworkCountry,
  101.       Network,Airtime,Airday,Timezone
  102.   """
  103.     def TrouveInfoEmission(self,idemission,debug=0):
  104.         idemissionchaine = str(idemission)
  105.         chaine = self.ChaineInformationEmission + self.CleAPI + "&sid=" + idemissionchaine
  106.         urllib.socket.setdefaulttimeout(8)
  107.         usock = urllib.urlopen(chaine)
  108.         arbre = ET.parse(usock).getroot()
  109.         usock.close()
  110.         dict = {}
  111.         for enfant in arbre:
  112.             if enfant.tag == 'showid':
  113.                 dict['ID'] = enfant.text
  114.             elif enfant.tag == 'showname':
  115.                 dict['Nom'] = enfant.text
  116.             elif enfant.tag == 'showlink':
  117.                 dict['Lien'] = enfant.text
  118.             elif enfant.tag == 'origin_country':
  119.                 dict['Pays'] = enfant.text
  120.             elif enfant.tag == 'seasons':
  121.                 dict['Saisons'] = enfant.text
  122.             elif enfant.tag == 'image':
  123.                 dict['Image'] = enfant.text
  124.             elif enfant.tag == 'started':
  125.                 dict['Debut'] = enfant.text
  126.             elif enfant.tag == 'startdate':
  127.                 dict['DateDebut'] = enfant.text
  128.             elif enfant.tag == 'ended':
  129.                 dict['Fin'] = enfant.text
  130.             elif enfant.tag == 'status':
  131.                 dict['Etat'] = enfant.text
  132.             elif enfant.tag == 'classification':
  133.                 dict['Classification'] = enfant.text
  134.             elif enfant.tag == 'summary':
  135.                 dict['Resume'] = enfant.text
  136.             elif enfant.tag == 'genres':
  137.                 chainegenre = None
  138.                 for souselement in enfant:
  139.                     if souselement.tag == 'genre':
  140.                         if souselement.text != None:
  141.                             if chainegenre == None:
  142.                                 chainegenre = souselement.text
  143.                             else:
  144.                                 chainegenre += " | " + souselement.text
  145.                 dict['Genres'] = chainegenre                
  146.             elif enfant.tag == 'runtime':
  147.                 dict['Diffusion'] = enfant.text
  148.             elif enfant.tag == 'network': # a un attribut
  149.                 #print enfant.attrib['country'],enfant.text
  150.                 dict['PaysDiffusion'] = enfant.attrib['country']
  151.                 dict['Chaine'] = enfant.text
  152.             elif enfant.tag == 'airtime':
  153.                 dict['HeureDiffusion'] = enfant.text
  154.             elif enfant.tag == 'airday':
  155.                 dict['JourDiffusion'] = enfant.text
  156.             elif enfant.tag == 'timezone':
  157.                 dict['FuseauHoraire'] = enfant.text
  158.  
  159.         return dict    
  160.  
  161.     def AfficheInfoEmission(self,dict):
  162.         print "Emission : %s" % dict['Nom']
  163.         print "ID : %s  Debut : %s  Fin : %s  Date debut : %s  Saisons : %s" % (dict['ID'],dict['Debut'],dict['Fin'],dict['DateDebut'],dict['Saisons'])
  164.         print "Lien : %s" % dict['Lien']
  165.         print "Image : %s" % dict['Image']
  166.         print "Pays : %s  Etat : %s   Classification : %s" % (dict['Pays'],dict['Etat'],dict['Classification'])
  167.         print "Diffusion : %s  Chaine : %s   Jour diffusion : %s   Heure diffusion : %s" % (dict['Diffusion'],dict['Chaine'],dict['JourDiffusion'],dict['HeureDiffusion'])
  168.         print "Genres : %s" % dict['Genres']
  169.         print "Resume : \n%s" % dict['Resume']
  170.  
  171.  
  172.     def TrouveListeEpisodes(self,idemission,debug=0):
  173.         idemissionchaine = str(idemission)
  174.         chaine = self.ChaineListeEpisodes + self.CleAPI + "&sid=" + idemissionchaine
  175.         urllib.socket.setdefaulttimeout(8)
  176.         usock = urllib.urlopen(chaine)
  177.         arbre = ET.parse(usock).getroot()
  178.         usock.close()
  179.     NomEmission = ""
  180.     SaisonsTotal = ""
  181.         for enfant in arbre:
  182.             if enfant.tag == 'name':
  183.                 NomEmission = enfant.text
  184.             elif enfant.tag == 'totalseasons':
  185.                 SaisonsTotal = enfant.text
  186.             elif enfant.tag == 'Episodelist':
  187.                 for c in enfant:
  188.                     if c.tag == 'Season':
  189.                         dict = {}
  190.                         numsaison = c.attrib['no']
  191.                         for el in c:
  192.                             if el.tag == 'episode':
  193.                                 dict={}
  194.                                 dict['Saison'] = numsaison                                
  195.                                 for ep in el:
  196.                                     if ep.tag == 'epnum':
  197.                                         dict['NumeroEpisode'] = ep.text
  198.                                     elif ep.tag == 'seasonnum':
  199.                                         dict['NumeroEpisodeSaison'] = ep.text
  200.                                     elif ep.tag == 'prodnum':
  201.                                         dict['ProductionNumber'] = ep.text
  202.                                     elif ep.tag == 'airdate':
  203.                                         dict['DateDiffusion'] = ep.text
  204.                                     elif ep.tag == 'link':
  205.                                         dict['Lien'] = ep.text
  206.                                     elif ep.tag == 'title':
  207.                                         dict['Titre'] = ep.text
  208.                                     elif ep.tag == 'summary':
  209.                                         dict['Resume'] = ep.text
  210.                                     elif ep.tag == 'rating':
  211.                                         dict['Notation'] = ep.text
  212.                                     elif ep.tag == 'screencap':
  213.                                         dict['CaptureEcran'] = ep.text
  214.                                 self.ElementEpisode.append(dict)
  215.                                            
  216.         return NomEmission,SaisonsTotal,self.ElementEpisode
  217.        
  218. #========================================================
  219.  
  220.  
  221. #========================================================        
  222.  
  223.     def AfficheListeEpisodes(self,NomSerie,NombreSaisons,ListeEpisodes):
  224.         print "--------------------------------------"
  225.         print "Nom de la serie : %s" % NomSerie
  226.         print "Nombre total de saisons : %s" % NombreSaisons
  227.         print "Nombre total episodes : %d" % len(ListeEpisodes)
  228.         print "--------------------------------------"
  229.         for e in ListeEpisodes:
  230.             print "Saison : %s" % e['Saison']
  231.             print "   Numero Episode Saison : %s - Numero Episode Serie : %s" % (e['NumeroEpisodeSaison'],e['NumeroEpisode'])
  232.             print "   Titre: %s" % e['Titre']
  233.             if e.has_key('Notation'):
  234.                 print "   Date Diffusion : %s   Notation : %s" % (e['DateDiffusion'],e['Notation'])
  235.             else:
  236.                 print "   Date Diffusion : %s   Notation : NONE" % e['DateDiffusion']
  237.             if e.has_key('Resume'):
  238.                 print "   Resume : \n%s" % e['Resume']
  239.             else:
  240.                 print "   Resume : NA"
  241.             print "==========================="
  242.         print "------------ Fin de liste episodes ------------"
  243.        
  244.  
  245. def main():
  246.     tr = TvRage()
  247.     #--------------------
  248.     # Chercher une serie par son nom
  249.     #--------------------
  250.     nom = raw_input("Entrer le nom de la serie -> ")
  251.     if nom != None:
  252.         liste = tr.TrouverIdParNom(nom)
  253.         choix = tr.AfficheResultatsEmission(liste)
  254.         if int(choix) == 0:
  255.             sys.exit()
  256.         else:
  257.             option = int(choix)-1
  258.             id = liste[option]['ID']
  259.             print "Le ShowID choisi est %s" % id
  260.  
  261.     #------------------------------
  262.     # Recupere les informations
  263.     #------------------------------
  264.     infoemission = tr.TrouveInfoEmission(id)
  265.     #------------------------------
  266.     # Affiche les informations
  267.     #------------------------------
  268.     tr.AfficheInfoEmission(infoemission)
  269.     #-----------------------------
  270.     # recupere la liste des episodes
  271.     #-----------------------------
  272.     NomSerie,SaisonsTotal,listeepisodes = tr.TrouveListeEpisodes(id)
  273.     #-----------------------------
  274.     # Affiche la liste des episodes
  275.     #-----------------------------
  276.     tr.AfficheListeEpisodes(NomSerie,SaisonsTotal,listeepisodes)
  277.     #-----------------------------
  278.  
  279. #===========================================================
  280. #       Boucle principale
  281. #===========================================================
  282. if __name__ == "__main__":
  283.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement