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 = [
{ '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:
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)
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 = []
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
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():
if __name__ == '__main__':
main()
+