# -*- coding: ISO-8859-15 -*-
'''
o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
A modifier Ligne 52 Chemin de la database
Ligne 53 Repertoire racine des fichiers photos
Ligne 54 Extensions
Ligne 69 Fichier "Ficout" Tailles des fichiers et doublons
Ligne 70 Fichier "Ficren" fichier commande RENAME
Ligne 79 Requete SQL
Ligne 81 a 92 Appel de la requete SQL
Paramètres dossier = dossier à examiner
o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o
'''
import os, sys, sqlite3
def Alloc_Database(database):
global cur, db
db = sqlite3.connect(database)
cur = db.cursor()
def Requete_Select(SQL):
try:
cur.execute(SQL)
return cur
except sqlite3.Error as e: print("ERREUR ", SQL, e.args[0])
def scan_dossier(repertoire,extensions):
cpt_fichier = 0
lst_repertoire = os.listdir(repertoire)
for fichier in lst_repertoire:
chemin = os.path.join(repertoire, fichier)
if os.path.isfile(chemin):
ext = os.path.splitext(fichier)
if ext[1].lower() in extensions:
cpt_fichier += 1
lst_fichiers.append(os.path.normpath(os.path.join(repertoire, fichier)))
if os.path.isdir(chemin):
scan_dossier(chemin, extensions)
print (cpt_fichier,"Photos dans", repertoire)
def controle_unicode(nom):
#Si Python V2.xx
if sys.version_info[0] == 2:
nom = os.path.normpath(nom)
if isinstance(nom, unicode): nom = nom.encode('ISO-8859-15')
return nom
#===================================================
#Initialisations
database = "G:\\Sqlite\\Databases\\MaDatabase.db3"
repertoire = "D:\\Photos\\TESTS" #Répertoire racine
extensions = (".jpg")
#extensions = (".jpg", ".tif", ".tiff", ".png", ".cr2")
global lst_fichiers
lst_fichiers = []
lst_tailles = []
msg = ""
#Allocation de la database
Alloc_Database(database)
#Collecte du chemin des fichiers
scan_dossier(repertoire, extensions)
#Ecriture du résultat dans un fichier
ficout = open("G:\\Dossier\\Tests\\Tailles_fichiers.txt", "w")
ficren = open("G:\\Dossier\\Tests\\Rename_fichiers.txt", "w")
for chemin in lst_fichiers:
info_taille = os.stat(chemin).st_size
if info_taille not in lst_tailles:
lst_tailles.append(info_taille)
## #Si zoriginalfilesize est de type integer
## SQL = "SELECT zoriginalfilename FROM MaTable WHERE zoriginalfilesize = " + str(info_taille)
## #Si zoriginalfilesize est de type text
## SQL = 'SELECT zoriginalfilename FROM MaTable WHERE zoriginalfilesize = "' + str(info_taille) + '"'
## cur = Requete_Select(SQL)
##
## for row in cur:
## chemin_ = os.path.split(chemin)[0]
## extent = os.path.splitext(chemin_)[1]
## nom = controle_unicode(row[0])
## cmd = "RENAME " + chemin + " " + chemin_ + "\\" + nom + extent
## ficren.write(cmd + "\n")
else:
msg = " !!!DOUBLON"
ficout.write(chemin.strip().ljust(90, " ") + str(info_taille) + msg + "\n")
msg = ""
ficout.close()
ficren.close()
cur.close()
db.close()
print("\nFin du traitement")