49 Commits

Author SHA1 Message Date
ccc06bc5f1 corretto un typo stupidissimo che mi ha fatto perdere un sacco di tempo 2019-12-01 17:04:55 +01:00
ef91f8d26a iniziano test librerie, modifiche file configurazione di test 2019-12-01 16:50:15 +01:00
fe75d99736 Inizia il testing della libreria 2019-12-01 16:21:23 +01:00
a4e550797c Aggiunta cartella TestFiles 2019-11-24 16:13:58 +01:00
6e83ce559d Cambiamenti che non mi ricordo, mi hanno distratto nel mentre 2019-11-24 12:48:30 +01:00
04a32c7bd1 weaponizzate le funzioni di salva file singolo e body 2019-11-24 12:32:23 +01:00
e6fb04a9e7 modifiche generiche 2019-11-23 15:11:44 +01:00
b53fb27a60 Porting del codice dal programma originale a libsplit
Poco Refactoring, il codice e' pressoche invariato e andra' sistemato in
futuro.
Predisposizione al multi-threading
2019-11-11 22:49:59 +01:00
0bbb1947ee Prima scrittura libSPLIT 2019-11-10 20:01:47 +01:00
7ca177f29a aggiunta getFiles 2019-11-10 19:50:48 +01:00
1e8867182f Finalizzato caricamento file
aggiunta proprieta' in use per definire il file in uso attualmente,
modificabile a runtime per ogni file ingress
2019-11-10 19:49:23 +01:00
a798f29b73 Prima versione gestore configurazioni 2019-11-10 12:49:49 +01:00
59c41cc3ba Inizio scrittura confloader
integrazione del fancylogger e settings nel file di test
2019-11-02 19:53:27 +01:00
18566dda2c modifiche varie 2019-11-02 18:43:20 +01:00
59f11a2f8b Elimina i caratteri speciali dal file logger 2019-11-02 14:32:44 +01:00
dfcbef7ae4 FancyLogger funzionante e file di configurazione test 2019-11-02 14:29:48 +01:00
0502d77c14 Primo commit della libsplit 2019-11-02 13:54:08 +01:00
b7af353ab8 finestra selezione output limiti misure 2019-10-30 22:06:52 +01:00
3f5ef6c103 finestra selezione output base 2019-10-30 22:02:06 +01:00
21e7a29c33 Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2019-10-30 22:00:30 +01:00
d01afc2ab3 finestra selezione output base 2019-10-30 21:58:52 +01:00
9537530a34 Merge branch 'gui-devel' of https://git.etss.it/12Parsec/bananaSPLIT.git into gui-devel 2019-10-30 21:49:48 +01:00
c401518db5 eliminato confGiulia 2019-10-30 21:49:32 +01:00
22413c3fb2 Main window aggiornata 2019-10-30 21:42:42 +01:00
bfbd0e8c79 ritorno alla normalità 2019-10-30 21:27:38 +01:00
af880df5b3 test commit niccolo 2019-10-30 21:23:27 +01:00
Giulia
3624d21e90 Cartella con file configurazione su PC Giulia 2019-10-30 18:27:35 +01:00
Giulia
3c1aad543e Main window. Prima versione completa. 2019-10-30 18:23:39 +01:00
Giulia
c5ee729683 Sistemato pulsanti cartelle 2019-10-30 18:09:41 +01:00
56a509a5e6 Ricompilato versione 0.4b 2019-10-30 17:26:36 +01:00
84a38d0cb3 fixata indentazione titolo, aggiunti file conf alla cartella di dist 2019-10-30 17:10:16 +01:00
8ec7e5e835 spostata l'eliminazione dei vecchi file in un altro try 2019-10-30 16:59:05 +01:00
4f05729782 spostati i file di config nella dir del progetto 2019-10-30 16:55:30 +01:00
d7321a5041 riaggiornato gitignore 2019-10-30 15:52:44 +01:00
a29aa4da91 rimossa cartella build 2019-10-30 15:52:01 +01:00
170959e529 aggiornato gitignore 2019-10-30 15:50:23 +01:00
3fa74f6ed9 rebuild exe 2019-10-30 15:47:58 +01:00
2f1236449a Corretta la rimozione dei file 2019-10-30 15:44:49 +01:00
Giulia
f43ed84d72 Prima prova.
Label cartelle sorgente e destinatario con pushbtn/icona che non so
mettere
2019-10-28 20:54:10 +01:00
4057b31203 Aggiornate Abbreviazioni 2019-10-27 19:33:43 +01:00
Giulia
0ddd8af3bc tolta icona 2019-10-27 19:22:40 +01:00
eec006f6c5 Primo commit branch interfaccia grafica 2019-10-27 19:04:18 +01:00
10f48a2303 Eliminato printutils 2019-10-27 19:02:22 +01:00
Utente
4dd8673d86 Prima Interfaccia 2019-10-27 18:42:02 +01:00
1a9e9a7eac Dir Interfaccia grafica 2019-10-27 18:31:35 +01:00
947c8e19ea abbreviazioni interfaccia Qt 2019-10-27 17:47:38 +01:00
3e6745fdeb commit test 2 2019-10-27 17:16:14 +01:00
eebfefa0c3 commit test 2019-10-27 17:15:33 +01:00
8bbaa144d8 Upload Archivio vecchie versioni e file build windows, ricordarsi di
riconfigurare la toolchain per gli exe
2019-10-09 19:56:25 +02:00
43 changed files with 16286 additions and 20 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
/.DS_Store
/.project
/.pydevproject
/org.eclipse.core.resources.prefs
bananaSPLIT/build

1
.settings/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/org.eclipse.core.resources.prefs

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
TestFiles/README Normal file
View File

@@ -0,0 +1 @@
Qui si mettono i file di test per la versione GUI di bananaSPLIT

View File

@@ -0,0 +1,32 @@
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT'],
binaries=[],
datas=[('C:\\Users\\Emanuele Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\text_unidecode\\data.bin', '.\\text_unidecode')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='bananaSPLIT.exe',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True , icon='banana.ico')

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,210 @@
('D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\dist\\bananaSPLIT.exe',
True,
False,
False,
'banana.ico',
None,
False,
False,
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"><assemblyIdentity name="bananaSPLIT.exe" processorArchitecture="amd64" type="win32" version="1.0.0.0"/><dependency><dependentAssembly><assemblyIdentity language="*" name="Microsoft.Windows.Common-Controls" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" type="win32" version="6.0.0.0"/><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/></dependentAssembly></dependency><compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"><application><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/><supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/></application></compatibility></assembly>',
True,
'bananaSPLIT.pkg',
[('PYZ-00.pyz',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\PYZ-00.pyz',
'PYZ'),
('struct',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\localpycos\\struct.pyo',
'PYMODULE'),
('pyimod01_os_path',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod01_os_path.pyc',
'PYMODULE'),
('pyimod02_archive',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod02_archive.pyc',
'PYMODULE'),
('pyimod03_importers',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod03_importers.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('main',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\main.py',
'PYSOURCE'),
('api-ms-win-crt-stdio-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-stdio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-runtime-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-runtime-l1-1-0.dll',
'BINARY'),
('VCRUNTIME140.dll',
'c:\\program files\\python37\\VCRUNTIME140.dll',
'BINARY'),
('api-ms-win-crt-heap-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-heap-l1-1-0.dll',
'BINARY'),
('python37.dll', 'c:\\program files\\python37\\python37.dll', 'BINARY'),
('api-ms-win-crt-locale-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-locale-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-math-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-math-l1-1-0.dll',
'BINARY'),
('ucrtbase.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\ucrtbase.dll',
'BINARY'),
('api-ms-win-crt-string-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-convert-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-convert-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-environment-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-environment-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-filesystem-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-filesystem-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-process-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-process-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-conio-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-conio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-time-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-time-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-namedpipe-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-namedpipe-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-rtlsupport-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-rtlsupport-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-string-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-libraryloader-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-libraryloader-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-timezone-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-timezone-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-errorhandling-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-errorhandling-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-memory-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-memory-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processthreads-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-profile-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-profile-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-console-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-console-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l2-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l2-1-0.dll',
'BINARY'),
('api-ms-win-core-interlocked-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-interlocked-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-localization-l1-2-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-localization-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-1.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processthreads-l1-1-1.dll',
'BINARY'),
('api-ms-win-core-sysinfo-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-sysinfo-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-heap-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-synch-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-datetime-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-datetime-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-2-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-synch-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-handle-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-handle-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-2-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-util-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-util-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-debug-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-debug-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processenvironment-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processenvironment-l1-1-0.dll',
'BINARY'),
('_ssl', 'c:\\program files\\python37\\DLLs\\_ssl.pyd', 'EXTENSION'),
('unicodedata',
'c:\\program files\\python37\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('pyexpat', 'c:\\program files\\python37\\DLLs\\pyexpat.pyd', 'EXTENSION'),
('_hashlib', 'c:\\program files\\python37\\DLLs\\_hashlib.pyd', 'EXTENSION'),
('_bz2', 'c:\\program files\\python37\\DLLs\\_bz2.pyd', 'EXTENSION'),
('_lzma', 'c:\\program files\\python37\\DLLs\\_lzma.pyd', 'EXTENSION'),
('_socket', 'c:\\program files\\python37\\DLLs\\_socket.pyd', 'EXTENSION'),
('select', 'c:\\program files\\python37\\DLLs\\select.pyd', 'EXTENSION'),
('_ctypes', 'c:\\program files\\python37\\DLLs\\_ctypes.pyd', 'EXTENSION'),
('_contextvars',
'c:\\program files\\python37\\DLLs\\_contextvars.pyd',
'EXTENSION'),
('_decimal', 'c:\\program files\\python37\\DLLs\\_decimal.pyd', 'EXTENSION'),
('libcrypto-1_1-x64.dll',
'c:\\program files\\python37\\DLLs\\libcrypto-1_1-x64.dll',
'BINARY'),
('libssl-1_1-x64.dll',
'c:\\program files\\python37\\DLLs\\libssl-1_1-x64.dll',
'BINARY'),
('api-ms-win-crt-utility-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-utility-l1-1-0.dll',
'BINARY'),
('text_unidecode\\data.bin',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\text_unidecode\\data.bin',
'DATA'),
('base_library.zip',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\base_library.zip',
'DATA'),
('bananaSPLIT.exe.manifest',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\bananaSPLIT.exe.exe.manifest',
'BINARY'),
('pyi-windows-manifest-filename bananaSPLIT.exe.manifest', '', 'OPTION')],
[],
False,
False,
1563704332,
[('run.exe',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\bootloader\\Windows-64bit\\run.exe',
'EXECUTABLE')])

Binary file not shown.

View File

@@ -0,0 +1,202 @@
('D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\PKG-00.pkg',
{'BINARY': 1,
'DATA': 1,
'EXECUTABLE': 1,
'EXTENSION': 1,
'PYMODULE': 1,
'PYSOURCE': 1,
'PYZ': 0},
[('PYZ-00.pyz',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\PYZ-00.pyz',
'PYZ'),
('struct',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\localpycos\\struct.pyo',
'PYMODULE'),
('pyimod01_os_path',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod01_os_path.pyc',
'PYMODULE'),
('pyimod02_archive',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod02_archive.pyc',
'PYMODULE'),
('pyimod03_importers',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyimod03_importers.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('main',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\main.py',
'PYSOURCE'),
('api-ms-win-crt-stdio-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-stdio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-runtime-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-runtime-l1-1-0.dll',
'BINARY'),
('VCRUNTIME140.dll',
'c:\\program files\\python37\\VCRUNTIME140.dll',
'BINARY'),
('api-ms-win-crt-heap-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-heap-l1-1-0.dll',
'BINARY'),
('python37.dll', 'c:\\program files\\python37\\python37.dll', 'BINARY'),
('api-ms-win-crt-locale-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-locale-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-math-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-math-l1-1-0.dll',
'BINARY'),
('ucrtbase.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\ucrtbase.dll',
'BINARY'),
('api-ms-win-crt-string-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-convert-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-convert-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-environment-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-environment-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-filesystem-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-filesystem-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-process-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-process-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-conio-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-conio-l1-1-0.dll',
'BINARY'),
('api-ms-win-crt-time-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-time-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-namedpipe-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-namedpipe-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-rtlsupport-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-rtlsupport-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-string-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-string-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-libraryloader-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-libraryloader-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-timezone-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-timezone-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-errorhandling-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-errorhandling-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-memory-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-memory-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processthreads-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-profile-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-profile-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-console-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-console-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l2-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l2-1-0.dll',
'BINARY'),
('api-ms-win-core-interlocked-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-interlocked-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-localization-l1-2-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-localization-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-processthreads-l1-1-1.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processthreads-l1-1-1.dll',
'BINARY'),
('api-ms-win-core-sysinfo-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-sysinfo-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-heap-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-heap-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-synch-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-datetime-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-datetime-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-synch-l1-2-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-synch-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-handle-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-handle-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-file-l1-2-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-file-l1-2-0.dll',
'BINARY'),
('api-ms-win-core-util-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-util-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-debug-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-core-debug-l1-1-0.dll',
'BINARY'),
('api-ms-win-core-processenvironment-l1-1-0.dll',
'C:/Program '
'Files/Java/jre1.8.0_211/bin\\api-ms-win-core-processenvironment-l1-1-0.dll',
'BINARY'),
('_ssl', 'c:\\program files\\python37\\DLLs\\_ssl.pyd', 'EXTENSION'),
('unicodedata',
'c:\\program files\\python37\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('pyexpat', 'c:\\program files\\python37\\DLLs\\pyexpat.pyd', 'EXTENSION'),
('_hashlib', 'c:\\program files\\python37\\DLLs\\_hashlib.pyd', 'EXTENSION'),
('_bz2', 'c:\\program files\\python37\\DLLs\\_bz2.pyd', 'EXTENSION'),
('_lzma', 'c:\\program files\\python37\\DLLs\\_lzma.pyd', 'EXTENSION'),
('_socket', 'c:\\program files\\python37\\DLLs\\_socket.pyd', 'EXTENSION'),
('select', 'c:\\program files\\python37\\DLLs\\select.pyd', 'EXTENSION'),
('_ctypes', 'c:\\program files\\python37\\DLLs\\_ctypes.pyd', 'EXTENSION'),
('_contextvars',
'c:\\program files\\python37\\DLLs\\_contextvars.pyd',
'EXTENSION'),
('_decimal', 'c:\\program files\\python37\\DLLs\\_decimal.pyd', 'EXTENSION'),
('libcrypto-1_1-x64.dll',
'c:\\program files\\python37\\DLLs\\libcrypto-1_1-x64.dll',
'BINARY'),
('libssl-1_1-x64.dll',
'c:\\program files\\python37\\DLLs\\libssl-1_1-x64.dll',
'BINARY'),
('api-ms-win-crt-utility-l1-1-0.dll',
'C:/Program Files/Java/jre1.8.0_211/bin\\api-ms-win-crt-utility-l1-1-0.dll',
'BINARY'),
('text_unidecode\\data.bin',
'C:\\Users\\Emanuele '
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\text_unidecode\\data.bin',
'DATA'),
('base_library.zip',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\base_library.zip',
'DATA'),
('bananaSPLIT.exe.manifest',
'D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT\\build\\bananaSPLIT.exe\\bananaSPLIT.exe.exe.manifest',
'BINARY'),
('pyi-windows-manifest-filename bananaSPLIT.exe.manifest', '', 'OPTION')],
False,
False,
False)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="bananaSPLIT.exe" processorArchitecture="amd64" type="win32" version="1.0.0.0"/>
<dependency>
<dependentAssembly>
<assemblyIdentity language="*" name="Microsoft.Windows.Common-Controls" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" type="win32" version="6.0.0.0"/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"/>
</dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,33 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running you program. Python and
Python 3rd-party packages include a lot of conditional or optional module. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported from within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
yourself tracking down the missing module. Thanks!
missing module named resource - imported by posix (top-level), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named posix - imported by os (conditional, optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named org - imported by pickle (optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named _winreg - imported by platform (delayed, optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named java - imported by platform (delayed), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named 'java.lang' - imported by platform (delayed, optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level), xml.sax._exceptions (conditional)
missing module named vms_lib - imported by platform (delayed, conditional, optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named termios - imported by tty (top-level), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level), getpass (optional)
missing module named grp - imported by shutil (optional), tarfile (optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), http.server (delayed, optional), webbrowser (delayed), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level), netrc (delayed, conditional), getpass (delayed)
missing module named 'org.python' - imported by copy (optional), D:\Emanuele\Documenti\workspace\bananaSPLIT\bananaSPLIT\main.py (top-level), xml.sax (delayed, conditional)
missing module named htmlentitydefs - imported by slugify.slugify (optional)

File diff suppressed because it is too large Load Diff

BIN
WinBuild/dist/bananaSPLIT.exe vendored Normal file

Binary file not shown.

64
WinBuild/dist/bananaconfEN.json vendored Normal file
View File

@@ -0,0 +1,64 @@
{
"INworkPath": "D:\\Test\\",
"OUTworkPath": "D:\\Test\\Separati\\",
"OUTnameFormat":"BLOG_{docnum}_{year:04d}{month:02d}{day:02d}_{title}.txt",
"docStruct": {
"docSep": "\\s*Copyright [(0-9)]+",
"dateFormat":"{month} {day:d}, {year:d}{}",
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID" ,
"NOTES",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}

View File

@@ -1,6 +1 @@
/@Archivio/
/build/
/dist/
/bananaSPLIT.exe.spec\
*.py[ocd]
/.DS_Store
*.py[ocd]

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>509</width>
<height>303</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>509</width>
<height>303</height>
</size>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>80</y>
<width>251</width>
<height>141</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="rad_MainbodyEFile">
<property name="text">
<string>Main body + File singoli</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_File">
<property name="text">
<string>File singoli</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rad_Mainbody">
<property name="text">
<string>Main body</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="lbl_indicazioni">
<property name="geometry">
<rect>
<x>30</x>
<y>20</y>
<width>401</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>Seleziona i file che il programma ti deve fare*chiaramente da cambiare le parole</string>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>330</x>
<y>230</y>
<width>160</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btn_Indietro">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Indietro</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_Avanti">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Avanti</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>win_main</class>
<widget class="QMainWindow" name="win_main">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
<height>391</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>110</y>
<width>131</width>
<height>71</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lbl_cartellasorg">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Cartella sorgente</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_cartelladest">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Cartella destinazione</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget_2">
<property name="geometry">
<rect>
<x>150</x>
<y>110</y>
<width>34</width>
<height>71</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="btn_cartellasorg">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_cartelladest">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>491</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<width>421</width>
<height>80</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QCheckBox" name="chk_predefinita">
<property name="text">
<string>Rendi predefinite le cartelle</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_avanti">
<property name="minimumSize">
<size>
<width>79</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>79</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Avanti</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QPushButton" name="btn_opzioni">
<property name="geometry">
<rect>
<x>420</x>
<y>300</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>Opzioni</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuBananaSplit">
<property name="title">
<string>BananaSplit</string>
</property>
</widget>
<addaction name="menuBananaSplit"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,32 @@
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\bananaSPLIT'],
binaries=[],
datas=[('C:\\Users\\Emanuele Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\text_unidecode\\data.bin', '.\\text_unidecode')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='bananaSPLIT.exe',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True , icon='banana.ico')

BIN
bananaSPLIT/dist/bananaSPLIT.exe vendored Normal file

Binary file not shown.

61
bananaSPLIT/dist/bananaconfITA.json vendored Normal file
View File

@@ -0,0 +1,61 @@
{
"INworkPath": "C:\\Test\\",
"OUTworkPath": "C:\\Test\\Separati\\",
"OUTnameFormat":"TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{papername}_{title}.txt",
"docStruct": {
"docSep": "Copyright [(0-9)]+",
"dateFormat":"{day:d} {month} {year:d} {}",
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}

View File

View File

@@ -0,0 +1,83 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
import json,os,glob,copy
class bananaCONF(object):
'''
Carica e Salva file di configurazione per bananaSPLITTER
'''
def __init__(self, workdir=None, logger=None):
self.log = logger
self.fileList = None
self.workdir = None
self.inUse = None
self.settingsList = dict()
if workdir is not None:
self.workdir = workdir
os.chdir(workdir)
self.log.debug("Cerco le configurazioni in: [{}]".format(os.getcwd()))
else:
self.log.error("Non mi e' stata fornita una directory per i file di configurazione")
pass
def open(self):
self.log.info("Carico i file di configurazione")
self.fileList = glob.glob(self.workdir+"\\*.json")
if len(self.fileList) > 0:
for f in self.fileList:
try:
fp = open(f)
tf = json.load(fp)
fName = f.split("\\")[-1]
self.settingsList[fName] = copy.deepcopy(tf)
self.log.info("Caricato correttamente: {}".format(fName))
fp.close()
except json.JSONDecodeError as e:
self.log.error("Impossibile leggere la configurazione:{}\n \
Controlla il file a riga: {} e colonna:{}" .format(e.doc, e.lineno, e.colno))
except IOError as ee:
self.log.error("Impossibile aprire il file: {}".format(ee))
except Exception as eee:
self.log.critical("Eccezione inaspettata: {}".format(eee))
else:
self.log.error("Non ho trovato alcun file di configurazione!")
pass
def reload(self):
self.settingsList = None
self.fileList = None
self.inUse = None
self.open()
pass
def use(self, toUse):
self.inUse = toUse
pass
def save(self):
self.log.info("Salvo la configurazione: {}".format(self.inUse))
try:
os.chdir(self.workdir)
f=open(self.inUse)
json.dump(self.settingsList[self.inUse], f)
f.close()
except IOError as e:
self.log.error("Impossibile salvare il file: {} - [{}]".format(self.inUse,e))
pass
def getFiles(self):
return self.fileList
def getParams(self, k):
return self.settingsList[self.inUse][k]
pass
def setParams(self, k, v):
self.settingsList[self.inUse][k]=dict(v)
pass

View File

@@ -0,0 +1,85 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
import sys, os
import json
import logging
import colorama
class fancyLogger(object):
'''
Colorizza il logger di python, per un' esperienza stile willy wonka
'''
def __init__(self, name="Logger", consoleLog=True, fileLog=True):
settings = json.load(open(os.getcwd()+r"\libbananasplit\testEN.json"))["logger"]
colorama.init(convert=True)
self.LRED = colorama.Fore.LIGHTRED_EX
self.RED = colorama.Fore.RED
self.LYELLOW = colorama.Fore.LIGHTYELLOW_EX
self.YELLOW = colorama.Fore.YELLOW
self.LBLUE = colorama.Fore.LIGHTBLUE_EX
self.BLUE = colorama.Fore.BLUE
self.LGREEN = colorama.Fore.LIGHTGREEN_EX
self.LGREEN = colorama.Fore.GREEN
self.WHITE = colorama.Fore.LIGHTWHITE_EX
self.RST = colorama.Style.RESET_ALL
# Setup Logger
self.LOGGER = logging.getLogger(name)
self.LOGGER.setLevel(logging.DEBUG)
self.LOGGER.propagate = False
FORMATTER = logging.Formatter((settings["logFormat"]), (settings["logTimeFormat"]))
if fileLog:
# File Logging
fh = logging.FileHandler((settings["logFile"]))
fh.setLevel(logging.DEBUG)
fh.setFormatter(FORMATTER)
self.LOGGER.addHandler(fh)
if consoleLog:
# Console Logging
cl= logging.StreamHandler(sys.stdout)
cl.setLevel(logging.DEBUG)
cl.setFormatter(FORMATTER)
self.LOGGER.addHandler(cl)
pass
def debug(self, msg="Undefined Debug"):
print(self.LBLUE, end='')
self.LOGGER.debug(msg)
print(self.RST, end='')
pass
def info(self, msg="Undefined Info"):
print(self.LGREEN, end='')
self.LOGGER.info(msg)
print(self.RST, end='')
pass
def warn(self, msg="Undefined Warning"):
print(self.LYELLOW, end='')
self.LOGGER.warning(msg)
print(self.RST, end='')
pass
def error(self, msg="Undefined Error"):
print(self.LRED, end='')
self.LOGGER.error(msg)
print(self.RST, end='')
pass
def critical(self, msg="Undefined Critical"):
print(self.RED, end='')
self.LOGGER.critical(msg)
print(self.RST, end='')
pass
def testColors(self):
self.debug("Test Debug")
self.info("Test Info")
self.warn("Test Warning")
self.error("Test Error")
self.critical("Test Critical")
pass

View File

@@ -0,0 +1,245 @@
'''
Created on 2 nov 2019
@author: Emanuele Trabattoni
'''
from libfancylogger import fancyLogger
import threading, time, parse, re, copy, slugify, os
class bananaSPLITTER(threading.Thread):
def __init__(self, fileParams=None, logger=None):
self.fileParams = fileParams
self.log = logger
self.rawFile = None
self.status = "first"
self.fileList = list()
self.bodyCounter=0
self.duplicateNumber=0
if fileParams is not None:
self.log.info("Sto operando sul file: {}..".format(self.fileParams['name']))
self.paths = self.fileParams['paths']
self.docStruct = self.fileParams['docStruct']
self.settings = self.fileParams['settings']
self.fileName = self.fileParams['name']
self.beginTime = time.time()
pass
else:
self.log.critical("Non e' stato fornito il nome di alcun file da splittare!")
pass
def run(self):
self.log.info("Nuovo SPLITTER su file: {}".format(self.fileName))
self.openFile()
self.remEmptyLines()
self.splitFile()
if self.settings['removeDuplicates']:
self.log.info("Controllo se ci sono dei duplicati..")
self.removeDuplicates()
else:
for idx, ff in enumerate(self.fileList):
ff['duplicate']=False
self.fileList[idx]=ff
print('Salto il controllo dei duplicati..')
if self.settings['saveSeparateFiles']:
self.saveSeparate()
if self.settings['saveBodyFile']:
self.saveBody()
pass
def openFile(self):
try:
self.info("Carico il contenuto..")
fp = open(self.fileParams['name'], mode='r', encoding=self.settings['encoding'])
self.rawFile = fp.readlines()
fp.close()
except IOError as e:
self.log.critical("Impossibile aprire il file: {}! [{}]".format(self.fileName,e))
raise BaseException("OpenFile")
pass
def remEmptyLines(self):
self.log.info("Elimino righe vuote e caratteri inutili..")
tempContent = []
try:
for ll in self.rawFile:
for c in self.settings['delChars']:
ll = ll.replace(c,'')
if ll not in ['\n', '\r']:
tempContent.append(ll)
self.rawFile = copy.deepcopy(tempContent)
return True
except:
self.log.error("Errore inaspettato durante l'eliminazione delle righe vuote!")
raise BaseException("DelLines")
del tempContent
def splitFile(self): #porting del codice dal programma originale
self.log.info("Individuo il contenuto..")
docNumber = 0
docSkipped = 0
docDate = {}
prevLine = ''
newsPaperName = ''
titleBegin = False
tempBody = list()
docSep=re.compile(self.docStruct['docSep'])
for l in self.rawFile: #per ogni linea del file
lineWords = l.lstrip().split(' ') #dividi la riga in parole
if self.status == 'first':
#prendo il numero di documento per vedere se ci sono buchi
try:
try:
nn = parse.parse("{current:d} Of {total} Documents",l.strip().capitalize()).named
if nn["current"]-docNumber==1:
pass
else:
if self.settings["showSkipped"]:
self.log.warning("Il conto dei documenti non torna! LexisNexis \
ne ha saltato qualcuno!\nPrecedente:{0}-Attuale:{1}".format(docNumber,nn["current"]))
docSkipped+=1
docNumber = nn["current"]
except:
pass #non segnalare eccezione se il parse fallisce
# ricerco la data
if (lineWords[self.settings['monthPosition']]).capitalize() in self.docParams['dateWords']:
try:
docDate=parse.parse(self.docParams['dateFormat'],l).named
docDate['month']=docDate['month'].lstrip().rstrip().capitalize()
docDate['month']=self.docStruct['dateWords'].index(docDate['month'])+1
title = ''
titleBegin=True
# dopo la data inizia il titolo, ma prima si cerca il nome del giornale
if self.settings['getNewsPaperName']:
try:
if prevLine.split(' ')[0].strip().isalpha():
newsPaperName = prevLine.strip()
else:
newsPaperName = self.settings['nameNotFoundStr']
except:
self.log.warning("E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
controlla i file di uscita! \n\t[{}]".format(prevLine.strip()))
else:
newsPaperName = self.settings['nameNotFoundStr']
except:
self.log.warning("Ho trovato una riga ambigua.. potrebbe essere una data ma non so: \n\t[{}]". format(l.strip('\r\n')))
pass
elif lineWords[0] in self.docStruct['headWords']:
#cambio stato e inizializzo un nuovo documento da riempire
self.status = 'head'
newDoc=dict()
newDoc['title']=title
newDoc['date']=docDate
newDoc['newsPaperName'] = newsPaperName
titleBegin=False
else:
if titleBegin:
title += l.strip().capitalize()
except IndexError:
self.log.error("Errore inaspettato, contatta il tuo sviluppatore di fiducia!")
pass
elif self.status == 'head':
tempContent = list()
if lineWords[0] not in self.docStruct['headWords']: #se la prima parola non e' tra quelle di inizio
tempBody.append(l) # vuol dire che ho trovato l'articolo e aggiungo la prima riga al contenuto del documento
self.status = 'body'
pass
elif self.status == 'body':
if not lineWords[0] in self.docStruct['tailWords']: #se la prima parola non e' tra quelle di fine
if self.settings['delLF']:
tempBody.append(l.strip('\n')) #allora sto leggendo l'articolo
else:
tempBody.append(l)
else:
self.status = 'tail'
anomaly = False
if docSep.match(l) is not None: #controlla se ci sono articoli che non hanno le parole chiave finali
self.log.warning("Ho individuato una separatore valido prima che si chiusesse l'articolo precedente, controlla i tuoi file in uscita!\n\
L'errore dovrebbe essere intorno all'articolo {} ma non sono sicuro! \n\t\t[{}]".format(docNumber, l.strip()))
self.status = 'tail'
anomaly = True
pass
elif self.status == 'tail':
if docSep.match(l) is not None or anomaly:
self.status = 'first'
anomaly = False
if self.settings['delWordBreak']:
tempContent=[ll.replace('-\n', '') for ll in tempContent]
newDoc['content']=copy.deepcopy(''.join(tempBody))
self.fileList.append(copy.deepcopy(newDoc))
tempBody=list()
self.bodyCounter +=1
pass
else:
self.log.critical("Stato Interno Sconosciuto")
prevLine=l #salva sempre e comunque il contenuto della linea precedente
pass
#ricerca terminata, espongo i risultati
self.log.info("Nel file ho trovato {0} articoli..".format(self.bodyCounter))
if docSkipped > 0:
self.log.warning("Attentione, LexisNexis ne ha saltati {} !!!".format(docSkipped))
pass
pass
def removeDuplicates(self):
titleList=[]
duplicateList=[]
for idx, ff in enumerate(self.fileList):
if ff['title'] not in titleList:
titleList.append(ff['title'])
ff['duplicate']=False
self.fileList[idx]=ff
pass
else:
if ff['title'] not in duplicateList:
duplicateList.append(ff['title'])
if self.settings['showRemovedDuplicates']:
self.log.info("Duplicato: {}".format(ff['title'].strip()))
ff['duplicate'] = True
self.fileList[idx]=ff
self.duplicateNumber+=1
self.log.info("Ho rimosso {} duplicati di {} articoli..\n". format(self.duplicateNumber, len(duplicateList)))
pass
def saveSeparate(self):
self.log.info("Salvo gli articoli in file separati...")
self.log.debug("Persorso: {0}".format(self.paths['OUTworkPath'].format('nomeFile')))
for ff in self.fileList:
try:
if ff['duplicate'] == False:
fName=self.paths['OUTnameFormat'].format(title=slugify(ff['title'][:self.settings['maxTitleLen']]),\
filename=slugify(self.fileName),\
docnum=self.bodyCounter,\
papername=ff['newsPaperName'].strip(),\
**ff['date'])
out=open(self.paths['OUTworkPath']+'{0}'.format(fName),'wb')
if self.settings['includeTitle']:
ff['content'] = ff['title']+os.linesep+ff['content']
out.write(ff['content'].encode(self.settings['encoding']))
out.close()
self.bodyCounter+=1
except IOError as e:
self.log.error("Qualcosa e\' andato storto, non riesco a scrivere il file: {}".format(e))
continue
pass
def saveBody(self):
print('Salvo gli articoli in un singolo file vicino agli originali...')
print ('Persorso: {0}'.format(self.paths['OUTworkPath'].format('nomeFile')))
try:
fName=slugify(self.fileName)
fName='BODYFILE_{0}_{1}.txt'.format(self.fileCounter,fName[:self.settings['maxTitleLen']])
fileContent = os.linesep.join([cc['content'] for cc in self.fileList])
out=open(self.paths['OUTworkPath']+'{0}'.format(fName),'wb')
out.write(fileContent.encode(self.settings['encoding']))
out.close()
except IOError as e:
print("OOPS! Qualcosa e\' andato storto, non riesco a scrivere il file: {}".format(e))
pass
if __name__ == "__main__":
logg = fancyLogger(name="LibSplit")
spp = bananaSPLITTER(fileParams="testfile.txt", logger=logg)

View File

@@ -0,0 +1,82 @@
{
"version": "v1.1a",
"logger": {
"logFile": "D:\\Test\\bananaSPLIT.log",
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
"logTimeFormat": "%m-%d %H:%M:%S"
},
"splitter": {
"paths": {
"INworkPath": "D:\\Test\\",
"OUTworkPath": "D:\\Test\\Separati\\",
"OUTnameFormat": "TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{title}.txt"
},
"docStruct": {
"docSep": "\\s*Copyright [(0-9)]+",
"dateFormat": "{month} {day:d}, {year:d}{}",
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID:",
"NOTES:",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr": "ND",
"includeTitle": true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles": true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber": true,
"delLF": false,
"delWordBreak": true,
"delChars": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
}

View File

@@ -0,0 +1,79 @@
{
"version": "v1.1a",
"logger": {
"logFile": "D:\\Test\\bananaSPLIT.log",
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
"logTimeFormat": "%m-%d %H:%M:%S"
},
"splitter": {
"paths": {
"INworkPath": "D:\\Test\\",
"OUTworkPath": "D:\\Test\\Separati\\",
"OUTnameFormat": "TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{title}.txt"
},
"docStruct": {
"docSep": "Copyright [(0-9)]+",
"dateFormat": "{day:d} {month} {year:d} {}",
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr": "ND",
"includeTitle": true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles": true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber": true,
"delLF": false,
"delWordBreak": true,
"delChars": [
"'",
"@",
"#",
"$",
"%",
"^",
"&"
]
}
}
}

View File

@@ -0,0 +1,19 @@
'''
Created on 1 dic 2019
@author: Emanuele Trabattoni
'''
import os
from libsplit import bananaSPLITTER
from libconfload import bananaCONF
from libfancylogger import fancyLogger
print(os.getcwd())
logger = fancyLogger(fileLog = False)
confl = bananaCONF(workdir=r"./libbananasplit", logger=logger)
splconf = confl.use("testEN")
splitter = bananaSPLITTER()

View File

@@ -15,26 +15,24 @@ from pprint import pprint
from glob import glob
from copy import deepcopy
from slugify import slugify
####### VAR GLOBALI #######
####### FUNZIONI GLOBALI #######
def printTitle():
print(". . . , \n| | _ | _. _ ._ _ _ -+- _ * \n|/\|(/,|(_.(_)[ | )(/, | (_) *")
print(Fore.LIGHTYELLOW_EX,\
' _ ___________ _ _____ _____ \n\
print(Fore.LIGHTYELLOW_EX,' _ ___________ _ _____ _____ \n\
| | / ___| ___ \ | |_ _|_ _| \n\
| |__ __ _ _ __ __ _ _ __ __ _\ `--.| |_/ / | | | | | \n\
| \'_ \ / _` | \'_ \ / _` | \'_ \ / _` |`--. \ __/| | | | | | \n\
| |_) | (_| | | | | (_| | | | | (_| /\__/ / | | |_____| |_ | | \n\
|_.__/ \__,_|_| |_|\__,_|_| |_|\__,_\____/\_| \_____/\___/ \_/')
print ('\t\t\t\t\t\t\tVersione 0.4a\n\n', Style.RESET_ALL)
print ('\t\t\t\t\t\t\tVersione 0.4b\n\n', Style.RESET_ALL)
print('Iniziamo!!')
pass
#############################################################
####################### MAIN ################################
#############################################################
@@ -111,14 +109,18 @@ try:
else:
print('Non ho capito la risposta, sii un po\' piu\' specifico... [y/n]\n')
pass
if settings['removeOldFiles']:
print("Rimuovo i vecchi file dalla cartella di destinazione..")
for x in glob(cfg['OUTworkPath']+'*.txt'):
os.remove(x)
except:
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a trovare nessun file da leggere :(', Style.RESET_ALL)
input()
sys.exit()
try:
if settings['removeOldFiles']:
print("Rimuovo i vecchi file dalla cartella di destinazione..")
for x in glob(cfg['OUTworkPath']+'*.txt'):
os.remove(x)
except:
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a rimuovere i vecchi file :(', Style.RESET_ALL)
lastTime=time.time()
fileCounter = 1

View File

@@ -1,5 +0,0 @@
'''
Created on 27 nov 2018
@author: Emanuele
'''

64
bananaconfEN.json Normal file
View File

@@ -0,0 +1,64 @@
{
"INworkPath": "D:\\Test\\",
"OUTworkPath": "D:\\Test\\Separati\\",
"OUTnameFormat":"TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{title}.txt",
"docStruct": {
"docSep": "\\s*Copyright [(0-9)]+",
"dateFormat":"{month} {day:d}, {year:d}{}",
"dateWords": [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"Newstex ID" ,
"NOTES",
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:",
"JOURNAL-CODE:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}

61
bananaconfITA.json Normal file
View File

@@ -0,0 +1,61 @@
{
"INworkPath": "C:\\Test\\",
"OUTworkPath": "C:\\Test\\Separati\\",
"OUTnameFormat":"TEST_{docnum}_{year:04d}{month:02d}{day:02d}_{papername}_{title}.txt",
"docStruct": {
"docSep": "Copyright [(0-9)]+",
"dateFormat":"{day:d} {month} {year:d} {}",
"dateWords": [
"Gennaio",
"Febbraio",
"Marzo",
"Aprile",
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Settembre",
"Ottobre",
"Novembre",
"Dicembre"
],
"headWords": [
"BYLINE:",
"SECTION:",
"LENGTH:",
"DATELINE:",
"HIGHLIGHT:",
"Email:"
],
"tailWords": [
"LANGUAGE:",
"GRAPHIC:",
"TYPE:",
"URL:",
"LOAD-DATE:",
"PUBLICATION-TYPE:",
"DOCUMENT-TYPE:",
"CHARTS:"
]
},
"settings": {
"encoding": "utf-8",
"monthPosition": 0,
"getNewsPaperName": true,
"nameNotFoundStr" : "--ND--",
"includeTitle" : true,
"removeDuplicates": true,
"showSkipped": false,
"showRemovedDuplicates": true,
"maxTitleLen": 32,
"loadTXT": true,
"loadDOCX": false,
"removeOldFiles":true,
"saveSeparateFiles": true,
"saveBodyFile": true,
"saveBodyNumber":true,
"delLF": false,
"delWordBreak": true,
"delChars": "'|@|#"
}
}