Advertisement
Guest User

FCM 71 - cherche_fichiers_tv.py​​

a guest
May 28th, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.95 KB | None | 0 0
  1. import os
  2. from os.path import join, getsize, exists
  3. import sys
  4. import apsw
  5. import re
  6.  
  7. #=========================================
  8. def RecupereSaisonEpisode(nomfic):
  9.     nomfic = nomfic.upper()
  10.     rep = re.search(r'(.*).S\d\dE\d\d(\.*)', nomfic, re.M|re.I)  
  11.     if rep:
  12.         nomEmission = rep.group(1)
  13.         longueurNomEmission = len(nomEmission) + 1
  14.         se = nomfic[longueurNomEmission:longueurNomEmission+6]
  15.         saison = se[1:3]
  16.         episode = se[4:6]
  17.         nomEmission = nomEmission.replace("."," ")
  18.         ret = [nomEmission,saison,episode]
  19.         return True,ret
  20.     else:
  21.         ret = ["",-1,-1]
  22.         return False,ret
  23.  
  24. #=========================================
  25. def FabriquerBase():
  26.     # SI la table n'existe pas, on la cree
  27.     # Sinon, on ignore ceci grace a la clause IF NOT EXISTS
  28.     sql = 'CREATE TABLE IF NOT EXISTS EmissionsTV (pkID INTEGER PRIMARY KEY, Serie TEXT, CheminRacine TEXT, NomFichier TEXT, Saison TEXT, Episode TEXT);'
  29.     curseur.execute(sql)
  30.  
  31. #=========================================    
  32. def ParcourirChemin(chemin):
  33.  
  34.     nomEmission = ""
  35.     # ouvre le fichier de log pour les erreurs
  36.     ficerr = open('erreurs.log',"w")
  37.     for racine, reps, fichiers in os.walk(chemin,topdown=True):
  38.         for fic in [f for f in fichiers if f.endswith (('.avi','mkv','mp4','m4v'))]:
  39.             # Combine chemin et nom de fichier pour creer une seule variable
  40.             fn = join(racine,fic)  
  41.             NomFicOriginal,ext = os.path.splitext(fic)
  42.             fl = fic
  43.             estok,donnees = RecupereSaisonEpisode(fl)
  44.             if estok:
  45.                 nomEmission = donnees[0]
  46.                 saison = donnees[1]
  47.                 episode = donnees[2]
  48.                 print("Saison {0} Episode {1}".format(saison,episode))
  49.             else:
  50.                 print("Pas de Saison/Episode")
  51.                 ficerr.writelines('---------------------------\n')
  52.                 ficerr.writelines('{0} ne contient aucune information de serie/episode\n'.format(fic))
  53.                 ficerr.writelines('---------------------------\n\n')
  54.            
  55.             requetesql = 'SELECT count(pkid) as nbLignes from EmissionsTV where NomFichier = "%s";' % fl
  56.             print(requetesql)
  57.             try:
  58.                 for x in curseur.execute(requetesql):
  59.                     nombreLignes = x[0]
  60.                 if nombreLignes == 0:  # vide, donc on ajoute
  61.                     try:
  62.                         sql = 'INSERT INTO EmissionsTV (Serie,CheminRacine,NomFichier,Saison,Episode) VALUES (?,?,?,?,?)'
  63.                         curseur.execute(sql,(nomEmission,racine,fl,saison,episode))
  64.                     except:
  65.                         print("Erreur")
  66.                         ficerr.writelines('---------------------------\n')
  67.                         ficerr.writelines('Erreur ecriture dans la base...\n')
  68.                         ficerr.writelines('nomfic = {0}\n'.format(fic))
  69.                         ficerr.writelines('---------------------------\n\n')
  70.             except:
  71.                 print("Erreur")
  72.             print('Serie - {0} Fichier - {1}'.format(nomEmission,fic))
  73.  
  74.         # ferme le fichier de log
  75.         ficerr.close
  76.     # Fin de ParcourirChemin
  77.    
  78. #=========================================    
  79. def main():
  80.     global connection
  81.     global curseur  
  82.  
  83.     # on cree la connexion et le curseur
  84.     connection = apsw.Connection("EmissionsTV.db3")
  85.     curseur = connection.cursor()
  86.     FabriquerBase()
  87.     #==========================================
  88.     # regle les chemins vers vos fichiers video
  89.     #==========================================
  90.     dossierDepart = ["/extramedia/tv_files","/media/freeagnt/tv_files_2"]
  91.     for cptr in range(0,2):
  92.         ParcourirChemin(dossierDepart[cptr])
  93.     # ferme le curseur et la base de donnees
  94.     curseur.close()
  95.     connection.close()
  96.  
  97.     print("Fin")
  98.  
  99. #=======================================
  100. if __name__ == '__main__':
  101.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement