diff --git a/bananaSPLIT/conf/defaults.json b/bananaSPLIT/conf/defaults.json index b5c1a26..d86ec9c 100644 --- a/bananaSPLIT/conf/defaults.json +++ b/bananaSPLIT/conf/defaults.json @@ -4,7 +4,7 @@ "lastUsed": "defaults.json", "configurationPath": "D:/Emanuele/Documenti/workspace/bananaSPLIT/bananaSPLIT/conf/", "INworkPath": "D:/Emanuele/Documenti/workspace/bananaSPLIT/TestFiles", - "OUTworkPath": "D:/Emanuele/Documenti/workspace/bananaSPLIT/TestFiles", + "OUTworkPath": "H:/", "fileList": [ "GUARDIAN 1993.txt", "GUARDIAN 1996.txt", @@ -29,11 +29,11 @@ ] }, "docStruct": { - "language": "Italiano", + "language": "English", "docSep": "\\s*Copyright [(0-9)]+", "dateFormat": "{month} {day:d}, {year:d}{}", - "outPrefix": "abc", - "outSuffix": "def", + "outPrefix": "PRE", + "outSuffix": "SUF", "outExt": ".txt", "outDateType": "jpn", "outNameFormat": "", @@ -43,7 +43,7 @@ "numberPos": 1, "datePos": 2, "titlePos": 3, - "maxTitleLen": 12, + "maxTitleLen": 10, "outNameSep": "+", "customSep": "=", "dateFormats": { @@ -53,14 +53,14 @@ } }, "settings": { - "encoding": "utf-8", + "encoding": "ansi", "monthPosition": 0, "getNewsPaperName": true, "nameNotFoundStr": "ND", "includeTitle": true, "removeDuplicates": true, "showSkipped": true, - "showRemovedDuplicates": false, + "showRemovedDuplicates": true, "loadTXT": true, "loadDOCX": false, "removeOldFiles": true, diff --git a/bananaSPLIT/guimain.py b/bananaSPLIT/guimain.py index 8b14125..be33898 100644 --- a/bananaSPLIT/guimain.py +++ b/bananaSPLIT/guimain.py @@ -415,9 +415,11 @@ class bananaSelezOut(PyQt5.QtWidgets.QWidget): def splitta(self): # costruisco il dizionario di configurazione + prefile = self.conf.inUse splconf = copy.deepcopy(self.conf.dump()) lang = copy.deepcopy(self.conf.use('languageconf.json').getParam(splconf['docStruct']['language'])) splconf['docStruct']['language'] = lang + self.conf.use(prefile) #formato nome in uscita nametemp=[] @@ -438,9 +440,14 @@ class bananaSelezOut(PyQt5.QtWidgets.QWidget): # costruisco i thread tDict={} - for f in splconf['paths']['fileList']: - splconf['name']=f - tDict[f] = bananaSPLITTER(fileParams=copy.deepcopy(splconf), logger=self.log) + try: + for f in splconf['paths']['fileList']: + splconf['name']=f + tDict[f] = bananaSPLITTER(fileParams=copy.deepcopy(splconf), logger=self.log) + tDict[f].start() + tDict[f].wait() + except Exception as e: + self.log.error(f"Impossibile avviare lo splitter: {e}") pass @@ -473,9 +480,12 @@ class bananaSplitterInterface(PyQt5.QtWidgets.QWidget): ############################################################# ####################### MAIN ################################ ############################################################# +def except_hook(cls, exception, traceback): + sys.__excepthook__(cls, exception, traceback) if __name__ == '__main__': app = PyQt5.QtWidgets.QApplication(sys.argv) + sys.excepthook = except_hook window = bananaMain() window.resize(window.sizeHint().width(), window.size().height()) window.show() diff --git a/bananaSPLIT/libbananasplit/libsplit.py b/bananaSPLIT/libbananasplit/libsplit.py index 146500f..b2b9558 100644 --- a/bananaSPLIT/libbananasplit/libsplit.py +++ b/bananaSPLIT/libbananasplit/libsplit.py @@ -7,15 +7,15 @@ from PyQt5.QtCore import QThread from PyQt5.Qt import pyqtSignal from slugify import slugify -import time, parse, re, copy, os, threading - +import time, parse, re, copy, os,json +import traceback class bananaSPLITTER(QThread): sendStatus = pyqtSignal(str) def __init__(self, fileParams=None, logger=None): - threading.Thread.__init__(self) + QThread.__init__(self) self.fileParams = fileParams self.log = logger self.rawFile = None @@ -23,6 +23,7 @@ class bananaSPLITTER(QThread): self.contentList = list() self.bodyCounter=0 self.duplicateNumber=0 + #self.log.debug(f"Configurazione: \n {json.dumps(fileParams, indent=2)}") if fileParams is not None: self.log.info("Sto operando sul file: {}..".format(self.fileParams['name'])) self.paths = self.fileParams['paths'] @@ -74,8 +75,9 @@ class bananaSPLITTER(QThread): .format(self.fileParams['name'],ee)) except FileExistsError as fe: self.log.critical(fe) - except BaseException as ee: - self.log.warning(ee) + except Exception as ee: + traceback.print_exc() + self.log.warn(ee) pass def openFile(self): @@ -246,7 +248,7 @@ class bananaSPLITTER(QThread): for ff in self.contentList: try: if ff['duplicate'] == False: - fName=self.paths['OUTnameFormat'].format(title=slugify(ff['title'][:self.settings['maxTitleLen']]),\ + fName=self.docStruct['outNameFormat'].format(title=slugify(ff['title'][:self.docStruct['maxTitleLen']]),\ filename=slugify(self.fileName),\ docnum=outFileCounter,\ papername=ff['newsPaperName'].strip(),\ @@ -260,8 +262,13 @@ class bananaSPLITTER(QThread): except IOError as e: self.log.error("Qualcosa e\' andato storto, non riesco a scrivere il file: {}".format(e)) continue + except KeyError as ke: + self.log.error(f"Chiave {ke} non trovata per:{outFileCounter} {ff['title']} ") + except Exception as ee: + traceback.print_exc() + self.log.error(f"Errore generale nel salvataggio: {ee}") if outFileCounter < self.bodyCounter: - raise BaseException("Ho salvato meno file rispetto a quelli trovati!") + self.log.error("Ho salvato meno file rispetto a quelli trovati!") pass def saveBody(self): @@ -270,13 +277,15 @@ class bananaSPLITTER(QThread): os.chdir(self.outPath) try: fName=slugify(self.fileName) - fName='BODYFILE_{0}.txt'.format(fName[:self.settings['maxTitleLen']]) + fName='BODYFILE_{0}.txt'.format(fName[:self.docStruct['maxTitleLen']]) fileContent = os.linesep.join([cc['content'] for cc in self.contentList]) out=open('{0}'.format(fName),'wb') out.write(fileContent.encode(self.settings['encoding'])) out.close() except IOError as e: self.log.error("Qualcosa e\' andato storto, non riesco a scrivere il file: {}".format(e)) + except Exception as ee: + self.log.error(f"Errore generale nel salvataggio: {ee}") pass