Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- from os.path import join, getsize, exists
- import sys
- import apsw
- import re
- #=========================================
- def RecupereSaisonEpisode(nomfic):
- nomfic = nomfic.upper()
- rep = re.search(r'(.*).S\d\dE\d\d(\.*)', nomfic, re.M|re.I)
- if rep:
- nomEmission = rep.group(1)
- longueurNomEmission = len(nomEmission) + 1
- se = nomfic[longueurNomEmission:longueurNomEmission+6]
- saison = se[1:3]
- episode = se[4:6]
- nomEmission = nomEmission.replace("."," ")
- ret = [nomEmission,saison,episode]
- return True,ret
- else:
- ret = ["",-1,-1]
- return False,ret
- #=========================================
- def FabriquerBase():
- # SI la table n'existe pas, on la cree
- # Sinon, on ignore ceci grace a la clause IF NOT EXISTS
- sql = 'CREATE TABLE IF NOT EXISTS EmissionsTV (pkID INTEGER PRIMARY KEY, Serie TEXT, CheminRacine TEXT, NomFichier TEXT, Saison TEXT, Episode TEXT);'
- curseur.execute(sql)
- #=========================================
- def ParcourirChemin(chemin):
- nomEmission = ""
- # ouvre le fichier de log pour les erreurs
- ficerr = open('erreurs.log',"w")
- for racine, reps, fichiers in os.walk(chemin,topdown=True):
- for fic in [f for f in fichiers if f.endswith (('.avi','mkv','mp4','m4v'))]:
- # Combine chemin et nom de fichier pour creer une seule variable
- fn = join(racine,fic)
- NomFicOriginal,ext = os.path.splitext(fic)
- fl = fic
- estok,donnees = RecupereSaisonEpisode(fl)
- if estok:
- nomEmission = donnees[0]
- saison = donnees[1]
- episode = donnees[2]
- print("Saison {0} Episode {1}".format(saison,episode))
- else:
- print("Pas de Saison/Episode")
- ficerr.writelines('---------------------------\n')
- ficerr.writelines('{0} ne contient aucune information de serie/episode\n'.format(fic))
- ficerr.writelines('---------------------------\n\n')
- requetesql = 'SELECT count(pkid) as nbLignes from EmissionsTV where NomFichier = "%s";' % fl
- print(requetesql)
- try:
- for x in curseur.execute(requetesql):
- nombreLignes = x[0]
- if nombreLignes == 0: # vide, donc on ajoute
- try:
- sql = 'INSERT INTO EmissionsTV (Serie,CheminRacine,NomFichier,Saison,Episode) VALUES (?,?,?,?,?)'
- curseur.execute(sql,(nomEmission,racine,fl,saison,episode))
- except:
- print("Erreur")
- ficerr.writelines('---------------------------\n')
- ficerr.writelines('Erreur ecriture dans la base...\n')
- ficerr.writelines('nomfic = {0}\n'.format(fic))
- ficerr.writelines('---------------------------\n\n')
- except:
- print("Erreur")
- print('Serie - {0} Fichier - {1}'.format(nomEmission,fic))
- # ferme le fichier de log
- ficerr.close
- # Fin de ParcourirChemin
- #=========================================
- def main():
- global connection
- global curseur
- # on cree la connexion et le curseur
- connection = apsw.Connection("EmissionsTV.db3")
- curseur = connection.cursor()
- FabriquerBase()
- #==========================================
- # regle les chemins vers vos fichiers video
- #==========================================
- dossierDepart = ["/extramedia/tv_files","/media/freeagnt/tv_files_2"]
- for cptr in range(0,2):
- ParcourirChemin(dossierDepart[cptr])
- # ferme le curseur et la base de donnees
- curseur.close()
- connection.close()
- print("Fin")
- #=======================================
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement