From 3974d667220d405014940975e84dd461c7a92389 Mon Sep 17 00:00:00 2001 From: yomguy Date: Thu, 21 Jan 2010 14:50:34 +0000 Subject: [PATCH] Many fixed bugs, first working version on caruso.lam.jussieu.fr git-svn-id: http://svn.parisson.org/svn/crem@140 3bf09e05-f825-4182-b9bc-eedd7160adf0 --- trunk/import/audio_import/crem_checker.py | 137 ++++++++++++++++++---- 1 file changed, 111 insertions(+), 26 deletions(-) diff --git a/trunk/import/audio_import/crem_checker.py b/trunk/import/audio_import/crem_checker.py index 28a0536..f1f9f3f 100755 --- a/trunk/import/audio_import/crem_checker.py +++ b/trunk/import/audio_import/crem_checker.py @@ -38,13 +38,48 @@ import xlrd import logging import scikits.audiolab as audiolab +ITEM_OLD_PATTERN = [ + { 'format': 'BM.aaa.nnn.mmm', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'BM.aaaa.nnn.mmm/pp', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'BM.aaaa.nnn.mmm', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'BM.aaaa.nnn.mmm/', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/$'}, + { 'format': 'BM.aaaa.nnn.mmm/ppp', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/[0-9]{3}$'}, + { 'format': 'BM.aaaa.nnn.mm/pp', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{2})/[0-9]{2}$'}, + { 'format': 'BM.aaaa.nnn', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})$'}, + { 'format': 'BM.aaa.nnn.mmm/pp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'BM.aaa.nnn FANTOME', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3}) FANTOME$'}, + { 'format': 'BM.aaa.nnn', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'BM.aaa.nnnBISoo/pp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})BIS([0-9]{2})/[0-9]{2}$'}, + { 'format': 'BM.aaa.nnn.mmm.ppp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})\.[0-9]{3}$'}, + { 'format': 'BM.aaa.nnn.mmm/ppp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})/[0-9]{3}$'}, + { 'format': 'BM.aaa.nnn/pp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'BM.aaa.nnn-BIS.ooo/pp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})-BIS\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'BM.aaaa.nnn.mmm/NN', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/NN$'}, + { 'format': 'BM.aaa.nnn.mmm/pp-DEPOT', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}-DEPOT$'}, + { 'format': 'BM.aaa.nnn.mmm-o>p', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})-[0-9]>[0-9]$'}, + { 'format': 'CY.aaaa.nnn', 'regex': r'^(CY)\.([0-9]{4})\.([0-9]{3})$'}, + { 'format': 'DI.aaaa.nnn.mmm', 'regex': r'^(DI)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'DI.aaaa.nnn.mmm/pp', 'regex': r'^(DI)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'DI.aaa.nnn.mmm', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'DI.aaa.nnn.mmm/pp', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'DI.aaa.nnn.mmm-o/p', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})-[0-9]/[0-9]$'}, + { 'format': 'FANTOME 2*', 'regex': r'FANTOME 2\*$'}, + + # yomguy + { 'format': 'BM.aaaa.nnn.mmm.pp', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})\.[0-9]{2}$'}, + { 'format': 'BM.aaaa.nnn.mmm/pp:ii-jj', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/([0-9]{2})\:([0-9]{2})\-([0-9]{2})$'}, + { 'format': 'BM.aaaa.nnn.mmm:ii-jj', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3}):([0-9]{2})\-([0-9]{2})$'}, + ] -ITEM_PATTERN = [ +ITEM_NEW_PATTERN = [ { 'format': 'CNRSMH_I_aaaa_nnn_mmm', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})$'}, { 'format': 'CNRSMH_I_aaaa_nnn_mmm_tt', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})$'}, { 'format': 'CNRSMH_I_aaaa_nnn_mmm_tt_pp', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})_([0-9]{2})$'}, { 'format': 'CNRSMH_E_aaaa_nnn_mmm_tt', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})$'}, { 'format': 'CNRSMH_E_aaaa_nnn_mmm_tt_pp', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})_([0-9]{2})$'}, + + # yomguy + { 'format': 'CNRSMH_I_aaaa_nnn_mm', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{2})$'}, ] COLLECTION_PATTERN = [ @@ -52,6 +87,7 @@ COLLECTION_PATTERN = [ { 'format': 'CNRSMH_E_aaaa_nnn_mmm', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})$'}, ] + def check_name(patterns, name): match = False for pattern in patterns: @@ -112,7 +148,7 @@ class CremCSV: class CremXLS: def __init__(self, file): - self.first_row = 7 + self.first_row = 8 self.original_col = 0 self.new_col = 1 self.book = xlrd.open_workbook(file) @@ -120,6 +156,19 @@ class CremXLS: self.original_refs = self.original_refs() self.new_refs = self.new_refs() + print file + print len(self.new_refs) + while not check_name(ITEM_OLD_PATTERN, self.original_refs[0].encode('utf8')) \ + and not check_name(ITEM_NEW_PATTERN, self.new_refs[0].encode('utf8')): + + print self.new_refs[0].encode('utf8') + print self.original_refs[0].encode('utf8') + + self.original_refs = self.original_refs[1:] + self.new_refs = self.new_refs[1:] + + self.size = max(len(self.new_refs), len(self.original_refs)) + def original_refs(self): col = self.sheet.col(self.original_col) list = [] @@ -166,7 +215,13 @@ class CremCheck: def __init__(self, root_dir, log_file): self.root_dir = root_dir self.logger = Logger(log_file) - self.dir_list = os.listdir(self.root_dir) + dir_list = os.listdir(self.root_dir) + list = [] + for dir in dir_list: + if not dir[0] == '.': + list.append(dir) + self.dir_list = list + def check_wav(self): pass @@ -178,51 +233,80 @@ class CremCheck: def check(self): for dir in self.dir_list: collection = CremCollection(self.root_dir + dir) - self.logger.write_info(collection.dir, '************************ VERIFICATION ***********************') + msg = '************************ ' + collection.dir_name + ' ******************************' + self.logger.write_info(collection.dir, msg[:70]) xls_list = collection.xls_list() wav_list = collection.wav_list() if not check_name(COLLECTION_PATTERN, dir): - self.logger.write_error(collection.dir, 'Dossier mal nommé') - if len(xls_list) == 0: - self.logger.write_error(collection.dir, 'PAS de fichier XLS dans le dossier collection') + self.logger.write_error(collection.dir, 'Le dossier de la collection est mal nommé -> SORTIE') + elif len(xls_list) == 0: + self.logger.write_error(collection.dir, 'PAS de fichier XLS dans le dossier collection -> SORTIE') elif len(xls_list) > 1: - self.logger.write_error(collection.dir, 'Plusieurs fichiers XLS dans le dossier collection') + self.logger.write_error(collection.dir, 'Plusieurs fichiers XLS dans le dossier collection -> SORTIE') else: xls = CremXLS(self.root_dir + os.sep + dir + os.sep + xls_list[0]) - self.logger.write_info(collection.dir, 'Nombre de références du fichier XLS : ' + str(len(xls.new_refs))) + self.logger.write_info(collection.dir, 'Nombre de références du fichier XLS : ' + str(xls.size)) - if len(wav_list) != len(xls.new_refs): + if len(wav_list) != xls.size: self.logger.write_error(collection.dir, \ - 'Le nombre de références du fichier XLS (' + str(len(xls.new_refs)) + ') diffère du nombre de fichiers (' + str(len(wav_list)) + ')') + 'Le nombre de références du fichier XLS (' + str(xls.size) + ') diffère du nombre de fichiers (' + str(len(wav_list)) + ')') temp_list = [] item_file = CremItemFile() - for item in xls.new_refs: + for i in range(0,xls.size): + + try: + item_old = xls.original_refs[i] + #self.logger.write_error(collection.dir, item_old) + except: + item_old = '' + msg = 'Ligne ' + str(i) + ' : l\'ancienne référence d\'item est inexistante' + self.logger.write_error(collection.dir, msg) + continue + + try: + item = xls.new_refs[i] + #self.logger.write_error(collection.dir, item) + except: + item = '' + msg = 'Ligne ' + str(i) + ' : la nouvelle référence d\'item est inexistante' + self.logger.write_error(collection.dir, msg) + continue + + if not item in temp_list: + temp_list.append(item) + else: + msg = 'Ligne ' + str(i) + ' : la référence d\'item ' + item.encode('utf8') + ' est multiple' + self.logger.write_error(collection.dir, msg) + + if not check_name(ITEM_OLD_PATTERN, item_old): + msg = 'Ligne ' + str(i) + ' : l\'ancienne référence d\'item ' + item_old.encode('utf8') + ' est mal formatée' + self.logger.write_error(collection.dir, msg) + + if not check_name(ITEM_NEW_PATTERN, item): + msg = 'Ligne ' + str(i) + ' : la nouvelle référence d\'item ' + item.encode('utf8') + ' est mal formatée' + self.logger.write_error(collection.dir, msg) - if not check_name(ITEM_PATTERN, item): - self.logger.write_error(collection.dir, 'La référence ' + str(item) + ' est mal formatée') if item[0:17] != collection.dir_name : - self.logger.write_error(collection.dir, 'La référence ' + str(item) + ' ne correspond pas à la collection') + msg = 'Ligne ' + str(i) + ' : la référence d\'item ' + item.encode('utf8') + ' ne correspond pas à celle de la collection' + self.logger.write_error(collection.dir, msg) - name_wav = str(item) + '.wav' + name_wav = item.encode('utf8') + '.wav' if not name_wav in wav_list: - self.logger.write_error(collection.dir, 'Le fichier ' + str(item) + '.wav n\'existe pas') + self.logger.write_error(collection.dir, 'Le fichier ' + item.encode('utf8') + '.wav n\'existe pas') else: item_file.set_media(collection.dir + os.sep + name_wav) if not item_file.is_wav(): - self.logger.write_error(collection.dir, 'Le fichier ' + str(item) + '.wav n\'est pas valide') - - if not item in temp_list: - temp_list.append(item) - else: - self.logger.write_error(collection.dir, 'La référence ' + str(item) + ' est multiple') + self.logger.write_error(collection.dir, 'Le fichier ' + item.encode('utf8') + '.wav n\'est pas valide') for filename in wav_list: - if not check_name(ITEM_PATTERN, os.path.splitext(filename)[0]): - self.logger.write_error(collection.dir, 'Le nom du fichier ' + str(filename) + ' est mal formaté') - self.logger.write_info(collection.dir, '**************************** FIN ****************************') + if not check_name(ITEM_NEW_PATTERN, os.path.splitext(filename)[0]): + self.logger.write_error(collection.dir, 'Le nom du fichier ' + str(os.path.splitext(filename)[0]) + ' est mal formaté') + + msg = '********************************************************************************' + self.logger.write_info(collection.dir, msg[:70]) def main(): @@ -231,3 +315,4 @@ def main(): if __name__ == '__main__': main() + -- 2.39.5