Compare commits
54 Commits
3fa74f6ed9
...
lib-devel
| Author | SHA1 | Date | |
|---|---|---|---|
| cf173843d2 | |||
| d8808ddf5b | |||
| b5ee32e924 | |||
| b69463a303 | |||
| 82710a73a3 | |||
| 275101eed3 | |||
| 3826c7d2d1 | |||
| 377251b59f | |||
| 428946e39a | |||
| c5662c8397 | |||
| e3307d8db5 | |||
| 01dd92e4da | |||
| 8628c3dbfb | |||
| d69a3d0628 | |||
| b6000c49fd | |||
| 851dcf103d | |||
| 4118ed82c3 | |||
| 435bb144ab | |||
| ccc06bc5f1 | |||
| ef91f8d26a | |||
| fe75d99736 | |||
| a4e550797c | |||
| 6e83ce559d | |||
| 04a32c7bd1 | |||
| e6fb04a9e7 | |||
| b53fb27a60 | |||
| 0bbb1947ee | |||
| 7ca177f29a | |||
| 1e8867182f | |||
| a798f29b73 | |||
| 59c41cc3ba | |||
| 18566dda2c | |||
| 59f11a2f8b | |||
| dfcbef7ae4 | |||
| 0502d77c14 | |||
| b7af353ab8 | |||
| 3f5ef6c103 | |||
| 21e7a29c33 | |||
| d01afc2ab3 | |||
| 9537530a34 | |||
| c401518db5 | |||
| 22413c3fb2 | |||
| bfbd0e8c79 | |||
| af880df5b3 | |||
|
|
3624d21e90 | ||
|
|
3c1aad543e | ||
|
|
c5ee729683 | ||
| 56a509a5e6 | |||
| 84a38d0cb3 | |||
| 8ec7e5e835 | |||
| 4f05729782 | |||
| d7321a5041 | |||
| a29aa4da91 | |||
| 170959e529 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
|||||||
/.DS_Store
|
/.DS_Store
|
||||||
/.project
|
/.project
|
||||||
/.pydevproject
|
/.pydevproject
|
||||||
|
/org.eclipse.core.resources.prefs
|
||||||
|
bananaSPLIT/build
|
||||||
|
/TestFiles/
|
||||||
|
|||||||
1
.settings/.gitignore
vendored
Normal file
1
.settings/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/org.eclipse.core.resources.prefs
|
||||||
13811
TestFiles/GUARDIAN 1993.txt
Normal file
13811
TestFiles/GUARDIAN 1993.txt
Normal file
File diff suppressed because it is too large
Load Diff
22792
TestFiles/NYT 1990.txt
Normal file
22792
TestFiles/NYT 1990.txt
Normal file
File diff suppressed because it is too large
Load Diff
23149
TestFiles/NYT 1994.txt
Normal file
23149
TestFiles/NYT 1994.txt
Normal file
File diff suppressed because it is too large
Load Diff
30024
TestFiles/NYT 1997.txt
Normal file
30024
TestFiles/NYT 1997.txt
Normal file
File diff suppressed because it is too large
Load Diff
1
TestFiles/README
Normal file
1
TestFiles/README
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Qui si mettono i file di test per la versione GUI di bananaSPLIT
|
||||||
BIN
WinBuild/dist/bananaSPLIT.exe
vendored
BIN
WinBuild/dist/bananaSPLIT.exe
vendored
Binary file not shown.
1
bananaSPLIT/.gitignore
vendored
1
bananaSPLIT/.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
*.py[ocd]
|
*.py[ocd]
|
||||||
|
/bananaSPLIT.exe.spec
|
||||||
|
|||||||
121
bananaSPLIT/UserInterface/SelezioneOutput.ui
Normal file
121
bananaSPLIT/UserInterface/SelezioneOutput.ui
Normal 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>
|
||||||
@@ -6,24 +6,24 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>697</width>
|
<width>519</width>
|
||||||
<height>454</height>
|
<height>391</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>MainWindow</string>
|
<string>MainWindow</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<widget class="QWidget" name="horizontalLayoutWidget">
|
<widget class="QWidget" name="verticalLayoutWidget">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>20</x>
|
<x>20</x>
|
||||||
<y>20</y>
|
<y>110</y>
|
||||||
<width>161</width>
|
<width>131</width>
|
||||||
<height>31</height>
|
<height>71</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="lbl_cartellasorg">
|
<widget class="QLabel" name="lbl_cartellasorg">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
@@ -36,25 +36,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btn_cartellasorg">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="horizontalLayoutWidget_2">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>20</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>161</width>
|
|
||||||
<height>31</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="lbl_cartelladest">
|
<widget class="QLabel" name="lbl_cartelladest">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
@@ -67,6 +48,25 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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>
|
<item>
|
||||||
<widget class="QPushButton" name="btn_cartelladest">
|
<widget class="QPushButton" name="btn_cartelladest">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -76,16 +76,86 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</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>
|
||||||
<widget class="QMenuBar" name="menubar">
|
<widget class="QMenuBar" name="menubar">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>697</width>
|
<width>519</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
<widget class="QMenu" name="menuBananaSplit">
|
||||||
|
<property name="title">
|
||||||
|
<string>BananaSplit</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<addaction name="menuBananaSplit"/>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,210 +0,0 @@
|
|||||||
('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-math-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('VCRUNTIME140.dll',
|
|
||||||
'c:\\program files\\python37\\VCRUNTIME140.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/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_231/bin\\api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('python37.dll', 'c:\\program files\\python37\\python37.dll', 'BINARY'),
|
|
||||||
('ucrtbase.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\ucrtbase.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-datetime-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'),
|
|
||||||
('select', 'c:\\program files\\python37\\DLLs\\select.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'),
|
|
||||||
('_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'),
|
|
||||||
('libssl-1_1-x64.dll',
|
|
||||||
'c:\\program files\\python37\\DLLs\\libssl-1_1-x64.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('libcrypto-1_1-x64.dll',
|
|
||||||
'c:\\program files\\python37\\DLLs\\libcrypto-1_1-x64.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/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,
|
|
||||||
1572446705,
|
|
||||||
[('run.exe',
|
|
||||||
'C:\\Users\\Emanuele '
|
|
||||||
'Trabattoni\\AppData\\Roaming\\Python\\Python37\\site-packages\\PyInstaller\\bootloader\\Windows-64bit\\run.exe',
|
|
||||||
'EXECUTABLE')])
|
|
||||||
Binary file not shown.
@@ -1,202 +0,0 @@
|
|||||||
('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-math-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-math-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('VCRUNTIME140.dll',
|
|
||||||
'c:\\program files\\python37\\VCRUNTIME140.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-locale-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-stdio-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/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_231/bin\\api-ms-win-crt-runtime-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('python37.dll', 'c:\\program files\\python37\\python37.dll', 'BINARY'),
|
|
||||||
('ucrtbase.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\ucrtbase.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-convert-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-environment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-conio-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-filesystem-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-time-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-crt-process-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-sysinfo-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l2-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-namedpipe-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-interlocked-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processthreads-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-console-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-heap-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-file-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-memory-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-synch-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-errorhandling-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-libraryloader-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processthreads-l1-1-1.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-util-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-localization-l1-2-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-handle-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-string-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-processenvironment-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-synch-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-rtlsupport-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-profile-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/bin\\api-ms-win-core-debug-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-timezone-l1-1-0.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-core-datetime-l1-1-0.dll',
|
|
||||||
'C:/Program '
|
|
||||||
'Files/Java/jre1.8.0_231/bin\\api-ms-win-core-datetime-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'),
|
|
||||||
('select', 'c:\\program files\\python37\\DLLs\\select.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'),
|
|
||||||
('_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'),
|
|
||||||
('libssl-1_1-x64.dll',
|
|
||||||
'c:\\program files\\python37\\DLLs\\libssl-1_1-x64.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('libcrypto-1_1-x64.dll',
|
|
||||||
'c:\\program files\\python37\\DLLs\\libcrypto-1_1-x64.dll',
|
|
||||||
'BINARY'),
|
|
||||||
('api-ms-win-crt-utility-l1-1-0.dll',
|
|
||||||
'C:/Program Files/Java/jre1.8.0_231/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
@@ -1,19 +0,0 @@
|
|||||||
<?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.
@@ -1,33 +0,0 @@
|
|||||||
|
|
||||||
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 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 org - imported by pickle (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
bananaSPLIT/dist/bananaSPLIT.exe
vendored
BIN
bananaSPLIT/dist/bananaSPLIT.exe
vendored
Binary file not shown.
@@ -38,7 +38,6 @@
|
|||||||
"CHARTS:"
|
"CHARTS:"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"settings":
|
|
||||||
"settings": {
|
"settings": {
|
||||||
"encoding": "utf-8",
|
"encoding": "utf-8",
|
||||||
"monthPosition": 0,
|
"monthPosition": 0,
|
||||||
0
bananaSPLIT/libbananasplit/__init__.py
Normal file
0
bananaSPLIT/libbananasplit/__init__.py
Normal file
83
bananaSPLIT/libbananasplit/libconfload.py
Normal file
83
bananaSPLIT/libbananasplit/libconfload.py
Normal 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(r"*.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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
85
bananaSPLIT/libbananasplit/libfancylogger.py
Normal file
85
bananaSPLIT/libbananasplit/libfancylogger.py
Normal 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
|
||||||
|
|
||||||
276
bananaSPLIT/libbananasplit/libsplit.py
Normal file
276
bananaSPLIT/libbananasplit/libsplit.py
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
'''
|
||||||
|
Created on 2 nov 2019
|
||||||
|
|
||||||
|
@author: Emanuele Trabattoni
|
||||||
|
'''
|
||||||
|
from slugify.slugify import slugify
|
||||||
|
import time, parse, re, copy, os, threading
|
||||||
|
|
||||||
|
class bananaSPLITTER(threading.Thread):
|
||||||
|
def __init__(self, fileParams=None, logger=None):
|
||||||
|
threading.Thread.__init__(self)
|
||||||
|
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.outPath = self.paths['OUTworkPath']+slugify(self.fileName)
|
||||||
|
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))
|
||||||
|
try:
|
||||||
|
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
|
||||||
|
self.log.warn('Salto il controllo dei duplicati..')
|
||||||
|
# se il parse e la rimozione dei duplicati e' andata bene
|
||||||
|
# preparo e inizio il salvataggio
|
||||||
|
if os.path.exists(self.outPath):
|
||||||
|
if self.settings['removeOldFiles']:
|
||||||
|
os.chdir(self.outPath)
|
||||||
|
for f in os.listdir(self.outPath):
|
||||||
|
os.remove(f)
|
||||||
|
else:
|
||||||
|
raise FileExistsError("Non posso sovrascrivere i vecchi file, eliminali manualmente!")
|
||||||
|
else:
|
||||||
|
os.mkdir(self.outPath)
|
||||||
|
os.chdir(self.outPath)
|
||||||
|
if self.settings['saveSeparateFiles']:
|
||||||
|
self.saveSeparate()
|
||||||
|
if self.settings['saveBodyFile']:
|
||||||
|
self.saveBody()
|
||||||
|
self.log.info("L'elaborazione del file ha richiesto {:4.2f} sec".format(time.time()-self.beginTime))
|
||||||
|
|
||||||
|
except UnicodeDecodeError as ee:
|
||||||
|
self.log.critical("Il file [{}] contiene caratteri non compatibili con la codifica scelta! [{}]"
|
||||||
|
.format(self.fileParams['name'],ee))
|
||||||
|
except FileExistsError as fe:
|
||||||
|
self.log.critical(fe)
|
||||||
|
except BaseException as ee:
|
||||||
|
self.log.warning(ee)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def openFile(self):
|
||||||
|
try:
|
||||||
|
os.chdir(self.paths["INworkPath"])
|
||||||
|
self.log.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")
|
||||||
|
os.rmdir(self.outPath)
|
||||||
|
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..")
|
||||||
|
self.bodyCounter=0
|
||||||
|
self.duplicateNumber=0
|
||||||
|
docNumber = 0
|
||||||
|
docSkipped = 0
|
||||||
|
docDate = {}
|
||||||
|
title = ''
|
||||||
|
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.warn("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.docStruct['dateWords']:
|
||||||
|
try:
|
||||||
|
docDate=parse.parse(self.docStruct['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.warn("E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
|
||||||
|
controlla i file di uscita! [{}]".format(prevLine.strip()))
|
||||||
|
else:
|
||||||
|
newsPaperName = self.settings['nameNotFoundStr']
|
||||||
|
except:
|
||||||
|
self.log.warn("Ho trovato una riga ambigua.. potrebbe essere una data ma non so: [{}]". 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.warn("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.warn("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..". format(self.duplicateNumber, len(duplicateList)))
|
||||||
|
pass
|
||||||
|
|
||||||
|
def saveSeparate(self):
|
||||||
|
outFileCounter = 0
|
||||||
|
self.paths['OUTworkPath']=self.paths['OUTworkPath']+slugify(self.fileName)
|
||||||
|
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=outFileCounter,\
|
||||||
|
papername=ff['newsPaperName'].strip(),\
|
||||||
|
**ff['date'])
|
||||||
|
out=open('{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()
|
||||||
|
outFileCounter+=1
|
||||||
|
except IOError as e:
|
||||||
|
self.log.error("Qualcosa e\' andato storto, non riesco a scrivere il file: {}".format(e))
|
||||||
|
continue
|
||||||
|
if outFileCounter < self.bodyCounter:
|
||||||
|
raise BaseException("Ho salvato meno file rispetto a quelli trovati!")
|
||||||
|
pass
|
||||||
|
|
||||||
|
def saveBody(self):
|
||||||
|
self.log.info('Salvo gli articoli in un singolo file vicino agli originali...')
|
||||||
|
self.log.debug('Persorso: {0}'.format(self.outPath))
|
||||||
|
os.chdir(self.outPath)
|
||||||
|
try:
|
||||||
|
fName=slugify(self.fileName)
|
||||||
|
fName='BODYFILE_{0}.txt'.format(fName[:self.settings['maxTitleLen']])
|
||||||
|
fileContent = os.linesep.join([cc['content'] for cc in self.fileList])
|
||||||
|
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))
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
83
bananaSPLIT/libbananasplit/testEN.json
Normal file
83
bananaSPLIT/libbananasplit/testEN.json
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"version": "v1.1a",
|
||||||
|
"logger": {
|
||||||
|
"logFile": "D:\\Test\\bananaSPLIT.log",
|
||||||
|
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
|
||||||
|
"logTimeFormat": "%m-%d %H:%M:%S"
|
||||||
|
},
|
||||||
|
"splitter": {
|
||||||
|
"name": "",
|
||||||
|
"paths": {
|
||||||
|
"INworkPath": "D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\TestFiles\\",
|
||||||
|
"OUTworkPath": "H:\\",
|
||||||
|
"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": true,
|
||||||
|
"showRemovedDuplicates": false,
|
||||||
|
"maxTitleLen": 32,
|
||||||
|
"loadTXT": true,
|
||||||
|
"loadDOCX": false,
|
||||||
|
"removeOldFiles": true,
|
||||||
|
"saveSeparateFiles": true,
|
||||||
|
"saveBodyFile": true,
|
||||||
|
"saveBodyNumber": true,
|
||||||
|
"delLF": false,
|
||||||
|
"delWordBreak": true,
|
||||||
|
"delChars": [
|
||||||
|
"'",
|
||||||
|
"@",
|
||||||
|
"#",
|
||||||
|
"$",
|
||||||
|
"%",
|
||||||
|
"^",
|
||||||
|
"&"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
80
bananaSPLIT/libbananasplit/testITA.json
Normal file
80
bananaSPLIT/libbananasplit/testITA.json
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"version": "v1.1a",
|
||||||
|
"logger": {
|
||||||
|
"logFile": "D:\\Test\\bananaSPLIT.log",
|
||||||
|
"logFormat": "%(asctime)s|%(levelname)-8s| %(message)-50s",
|
||||||
|
"logTimeFormat": "%m-%d %H:%M:%S"
|
||||||
|
},
|
||||||
|
"splitter": {
|
||||||
|
"name": "",
|
||||||
|
"paths": {
|
||||||
|
"INworkPath": "D:\\Emanuele\\Documenti\\workspace\\bananaSPLIT\\TestFiles\\",
|
||||||
|
"OUTworkPath": "H:\\",
|
||||||
|
"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": [
|
||||||
|
"'",
|
||||||
|
"@",
|
||||||
|
"#",
|
||||||
|
"$",
|
||||||
|
"%",
|
||||||
|
"^",
|
||||||
|
"&"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
35
bananaSPLIT/libtestmain.py
Normal file
35
bananaSPLIT/libtestmain.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
'''
|
||||||
|
Created on 1 dic 2019
|
||||||
|
|
||||||
|
@author: Emanuele Trabattoni
|
||||||
|
'''
|
||||||
|
import os
|
||||||
|
from glob import glob
|
||||||
|
from copy import deepcopy
|
||||||
|
from libsplit import bananaSPLITTER
|
||||||
|
from libconfload import bananaCONF
|
||||||
|
from libfancylogger import fancyLogger
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print("CWD-> "+os.getcwd())
|
||||||
|
logger = fancyLogger(fileLog = False)
|
||||||
|
confl = bananaCONF(workdir=r"./libbananasplit", logger=logger)
|
||||||
|
confl.open()
|
||||||
|
|
||||||
|
confl.use("testEN.json")
|
||||||
|
splconf = confl.getParams("splitter")
|
||||||
|
splist = []
|
||||||
|
os.chdir(splconf["paths"]["INworkPath"])
|
||||||
|
for f in glob("*.txt"):
|
||||||
|
splconf["name"] = f
|
||||||
|
logger.info("-"*80)
|
||||||
|
splitter = bananaSPLITTER(fileParams=deepcopy(splconf), logger=logger)
|
||||||
|
splist.append(splitter)
|
||||||
|
splitter.start()
|
||||||
|
splitter.join()
|
||||||
|
|
||||||
|
logger.info("\n"+"="*50+"\n\tFINITO!!!\n"+"="*50)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -15,25 +15,23 @@ from pprint import pprint
|
|||||||
from glob import glob
|
from glob import glob
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from slugify import slugify
|
from slugify import slugify
|
||||||
|
|
||||||
|
|
||||||
####### VAR GLOBALI #######
|
####### VAR GLOBALI #######
|
||||||
|
|
||||||
####### FUNZIONI GLOBALI #######
|
####### FUNZIONI GLOBALI #######
|
||||||
def printTitle():
|
def printTitle():
|
||||||
print(". . . , \n| | _ | _. _ ._ _ _ -+- _ * \n|/\|(/,|(_.(_)[ | )(/, | (_) *")
|
print(". . . , \n| | _ | _. _ ._ _ _ -+- _ * \n|/\|(/,|(_.(_)[ | )(/, | (_) *")
|
||||||
|
|
||||||
print(Fore.LIGHTYELLOW_EX,\
|
print(Fore.LIGHTYELLOW_EX,' _ ___________ _ _____ _____ \n\
|
||||||
' _ ___________ _ _____ _____ \n\
|
| | / ___| ___ \ | |_ _|_ _| \n\
|
||||||
| | / ___| ___ \ | |_ _|_ _| \n\
|
| |__ __ _ _ __ __ _ _ __ __ _\ `--.| |_/ / | | | | | \n\
|
||||||
| |__ __ _ _ __ __ _ _ __ __ _\ `--.| |_/ / | | | | | \n\
|
| \'_ \ / _` | \'_ \ / _` | \'_ \ / _` |`--. \ __/| | | | | | \n\
|
||||||
| \'_ \ / _` | \'_ \ / _` | \'_ \ / _` |`--. \ __/| | | | | | \n\
|
| |_) | (_| | | | | (_| | | | | (_| /\__/ / | | |_____| |_ | | \n\
|
||||||
| |_) | (_| | | | | (_| | | | | (_| /\__/ / | | |_____| |_ | | \n\
|
|_.__/ \__,_|_| |_|\__,_|_| |_|\__,_\____/\_| \_____/\___/ \_/')
|
||||||
|_.__/ \__,_|_| |_|\__,_|_| |_|\__,_\____/\_| \_____/\___/ \_/')
|
|
||||||
|
print ('\t\t\t\t\t\t\tVersione 0.4b\n\n', Style.RESET_ALL)
|
||||||
|
print('Iniziamo!!')
|
||||||
|
pass
|
||||||
|
|
||||||
print ('\t\t\t\t\t\t\tVersione 0.4a\n\n', Style.RESET_ALL)
|
|
||||||
print('Iniziamo!!')
|
|
||||||
pass
|
|
||||||
|
|
||||||
#############################################################
|
#############################################################
|
||||||
####################### MAIN ################################
|
####################### MAIN ################################
|
||||||
@@ -44,81 +42,85 @@ status={'first':0, 'head':1, 'body':2, 'tail':3}
|
|||||||
s=status['first']
|
s=status['first']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conffiles = glob('*.json')
|
conffiles = glob('*.json')
|
||||||
if len(conffiles) < 1:
|
if len(conffiles) < 1:
|
||||||
raise
|
raise
|
||||||
fileValid = False
|
fileValid = False
|
||||||
while not fileValid:
|
while not fileValid:
|
||||||
print ('Seleziona un file di configurazione per la lingua:')
|
print ('Seleziona un file di configurazione per la lingua:')
|
||||||
for cf in enumerate(conffiles):
|
for cf in enumerate(conffiles):
|
||||||
print('[{0}] - {1}'.format(cf[0],cf[1]))
|
print('[{0}] - {1}'.format(cf[0],cf[1]))
|
||||||
try:
|
try:
|
||||||
fn = int(input('Scrivi il numero del file e premi Invio: '))
|
fn = int(input('Scrivi il numero del file e premi Invio: '))
|
||||||
if (fn > len(conffiles)-1 or fn < 0):
|
if (fn > len(conffiles)-1 or fn < 0):
|
||||||
raise
|
raise
|
||||||
fileValid = True
|
fileValid = True
|
||||||
except:
|
except:
|
||||||
print('Scusa, non ho capito bene, ricominciamo..\n')
|
print('Scusa, non ho capito bene, ricominciamo..\n')
|
||||||
fileValid = False
|
fileValid = False
|
||||||
except:
|
except:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS!! File di configurazione non selezionato o non presente..', Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS!! File di configurazione non selezionato o non presente..', Style.RESET_ALL)
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
print('\nApro il file di configurazione [{}]...'.format(conffiles[fn]))
|
print('\nApro il file di configurazione [{}]...'.format(conffiles[fn]))
|
||||||
fp = open(conffiles[fn],'r')
|
fp = open(conffiles[fn],'r')
|
||||||
cfg = json.load(fp)
|
cfg = json.load(fp)
|
||||||
fp.close
|
fp.close
|
||||||
try:
|
try:
|
||||||
print('Carico i parametri...')
|
print('Carico i parametri...')
|
||||||
docParams=cfg['docStruct']
|
docParams=cfg['docStruct']
|
||||||
basePath=cfg['INworkPath']+"{0}.{1}"
|
basePath=cfg['INworkPath']+"{0}.{1}"
|
||||||
settings=cfg['settings']
|
settings=cfg['settings']
|
||||||
delChars=settings['delChars'].split('|')
|
delChars=settings['delChars'].split('|')
|
||||||
docSep=re.compile(docParams['docSep'])
|
docSep=re.compile(docParams['docSep'])
|
||||||
except:
|
except:
|
||||||
print(Fore.LIGHTRED_EX,'OOPS! Qualcosa e\' andato storto, non riesco a caricare la configurazione, controlla la sintassi! :)', Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX,'OOPS! Qualcosa e\' andato storto, non riesco a caricare la configurazione, controlla la sintassi! :)', Style.RESET_ALL)
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non trovo il file di configurazione: {}'.format(e), Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non trovo il file di configurazione: {}'.format(e), Style.RESET_ALL)
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
files=[]
|
files=[]
|
||||||
try:
|
try:
|
||||||
print('Ottengo la lista dei file da separare...')
|
print('Ottengo la lista dei file da separare...')
|
||||||
if settings['loadTXT']:
|
if settings['loadTXT']:
|
||||||
files+=glob(basePath.format('*','txt'))
|
files+=glob(basePath.format('*','txt'))
|
||||||
if settings['loadDOCX']:
|
if settings['loadDOCX']:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Scusa ma non posso accontentarti, per ora non so leggere i file DOCX.. :(', Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Scusa ma non posso accontentarti, per ora non so leggere i file DOCX.. :(', Style.RESET_ALL)
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
#files+=glob(basePath.format('*','docx'))
|
#files+=glob(basePath.format('*','docx'))
|
||||||
if len(files)<=0:
|
if len(files)<=0:
|
||||||
raise
|
raise
|
||||||
pprint(files)
|
pprint(files)
|
||||||
while True:
|
while True:
|
||||||
r=input('\nVuoi davvero bananaSPLITTARE questi documenti? [y/n]:')
|
r=input('\nVuoi davvero bananaSPLITTARE questi documenti? [y/n]:')
|
||||||
r.strip()
|
r.strip()
|
||||||
if r=='Y' or r =='y':
|
if r=='Y' or r =='y':
|
||||||
break
|
break
|
||||||
elif r=='n' or r=='N':
|
elif r=='n' or r=='N':
|
||||||
print('OK! Nessun problema, ci vediamo dopo :)')
|
print('OK! Nessun problema, ci vediamo dopo :)')
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
else:
|
else:
|
||||||
print('Non ho capito la risposta, sii un po\' piu\' specifico... [y/n]\n')
|
print('Non ho capito la risposta, sii un po\' piu\' specifico... [y/n]\n')
|
||||||
pass
|
pass
|
||||||
if settings['removeOldFiles']:
|
|
||||||
print("Rimuovo i vecchi file dalla cartella di destinazione..")
|
|
||||||
for x in glob(cfg['OUTworkPath']+'*.txt'):
|
|
||||||
os.remove(x)
|
|
||||||
except:
|
except:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a trovare nessun file da leggere :(', Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a trovare nessun file da leggere :(', Style.RESET_ALL)
|
||||||
input()
|
input()
|
||||||
sys.exit()
|
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()
|
lastTime=time.time()
|
||||||
fileCounter = 1
|
fileCounter = 1
|
||||||
@@ -128,201 +130,201 @@ totSkipped=0
|
|||||||
|
|
||||||
# per ogni file nella lista
|
# per ogni file nella lista
|
||||||
for f in files:
|
for f in files:
|
||||||
s=status['first']
|
s=status['first']
|
||||||
prevLine=''
|
prevLine=''
|
||||||
doc={'title':'',
|
doc={'title':'',
|
||||||
'date':'',
|
'date':'',
|
||||||
'content':[]
|
'content':[]
|
||||||
}
|
}
|
||||||
fileContent=''
|
fileContent=''
|
||||||
tempContent=list()
|
tempContent=list()
|
||||||
fileBaseName=os.path.split(f)[1].split('.')[0]
|
fileBaseName=os.path.split(f)[1].split('.')[0]
|
||||||
fileBodyList=list()
|
fileBodyList=list()
|
||||||
fileContent = list()
|
fileContent = list()
|
||||||
try:
|
try:
|
||||||
print()
|
print()
|
||||||
print('-'*50)
|
print('-'*50)
|
||||||
print('Apro il file: {}'.format(fileBaseName))
|
print('Apro il file: {}'.format(fileBaseName))
|
||||||
fp = open(f,mode='r', encoding=settings['encoding'])
|
fp = open(f,mode='r', encoding=settings['encoding'])
|
||||||
fileContent=fp.readlines() #leggi le linee del file
|
fileContent=fp.readlines() #leggi le linee del file
|
||||||
fp.close()
|
fp.close()
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco ad aprire il file: {}'.format(fileBaseName), Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco ad aprire il file: {}'.format(fileBaseName), Style.RESET_ALL)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
print('Elimino le righe vuote...')
|
print('Elimino le righe vuote...')
|
||||||
for ll in fileContent:
|
for ll in fileContent:
|
||||||
for c in delChars:
|
for c in delChars:
|
||||||
ll=ll.replace(c,'')
|
ll=ll.replace(c,'')
|
||||||
if ll not in ['\n','\r']:
|
if ll not in ['\n','\r']:
|
||||||
tempContent.append(ll)
|
tempContent.append(ll)
|
||||||
fileContent=deepcopy(tempContent)
|
fileContent=deepcopy(tempContent)
|
||||||
tempContent=list()
|
tempContent=list()
|
||||||
|
|
||||||
print('Individuo il contenuto...')
|
print('Individuo il contenuto...')
|
||||||
docNumber = 0
|
docNumber = 0
|
||||||
docSkipped = 0
|
docSkipped = 0
|
||||||
bodyCounter = 0
|
bodyCounter = 0
|
||||||
duplicateNumber = 0
|
duplicateNumber = 0
|
||||||
docDate = {}
|
docDate = {}
|
||||||
prevLine = ''
|
prevLine = ''
|
||||||
newsPaperName = ''
|
newsPaperName = ''
|
||||||
titleBegin = False
|
titleBegin = False
|
||||||
|
|
||||||
for l in fileContent: #per ogni linea del file
|
for l in fileContent: #per ogni linea del file
|
||||||
lineWords=l.lstrip().split(' ') #dividi la riga in parole
|
lineWords=l.lstrip().split(' ') #dividi la riga in parole
|
||||||
if s==status['first']:
|
if s==status['first']:
|
||||||
try:
|
try:
|
||||||
#prendo il numero di documento per vedere se ci sono buchi
|
#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
|
nn = parse.parse("{current:d} Of {total} Documents",l.strip().capitalize()).named
|
||||||
if nn["current"]-docNumber==1:
|
if nn["current"]-docNumber==1:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if settings["showSkipped"]:
|
if settings["showSkipped"]:
|
||||||
print(Fore.LIGHTRED_EX,"OOPS!! Il conto dei documenti non torna! LexisNexis \
|
print(Fore.LIGHTRED_EX,"OOPS!! Il conto dei documenti non torna! LexisNexis \
|
||||||
ne ha saltato qualcuno!\nPrecedente:{0}-Attuale:{1}".format(docNumber,nn["current"]), Style.RESET_ALL)
|
ne ha saltato qualcuno!\nPrecedente:{0}-Attuale:{1}".format(docNumber,nn["current"]), Style.RESET_ALL)
|
||||||
docSkipped+=1
|
docSkipped+=1
|
||||||
docNumber = nn["current"]
|
docNumber = nn["current"]
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if (lineWords[settings['monthPosition']]).capitalize() in docParams['dateWords']:
|
if (lineWords[settings['monthPosition']]).capitalize() in docParams['dateWords']:
|
||||||
try:
|
try:
|
||||||
docDate=parse.parse(docParams['dateFormat'],l).named
|
docDate=parse.parse(docParams['dateFormat'],l).named
|
||||||
docDate['month']=docDate['month'].lstrip().rstrip().capitalize()
|
docDate['month']=docDate['month'].lstrip().rstrip().capitalize()
|
||||||
docDate['month']=docParams['dateWords'].index(docDate['month'])+1
|
docDate['month']=docParams['dateWords'].index(docDate['month'])+1
|
||||||
title = ''
|
title = ''
|
||||||
titleBegin=True
|
titleBegin=True
|
||||||
if settings['getNewsPaperName']:
|
if settings['getNewsPaperName']:
|
||||||
try:
|
try:
|
||||||
if prevLine.split(' ')[0].strip().isalpha():
|
if prevLine.split(' ')[0].strip().isalpha():
|
||||||
newsPaperName = prevLine.strip()
|
newsPaperName = prevLine.strip()
|
||||||
else:
|
else:
|
||||||
newsPaperName = settings['nameNotFoundStr']
|
newsPaperName = settings['nameNotFoundStr']
|
||||||
except:
|
except:
|
||||||
print(Fore.LIGHTRED_EX, "OOPS! E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
|
print(Fore.LIGHTRED_EX, "OOPS! E' successo qualcosa mentre stavo cercando il nome della pubblicazione,\
|
||||||
controlla i file di uscita! \n\t[{}]".format(prevLine.strip()), Style.RESET_ALL)
|
controlla i file di uscita! \n\t[{}]".format(prevLine.strip()), Style.RESET_ALL)
|
||||||
else:
|
else:
|
||||||
newsPaperName = settings['nameNotFoundStr']
|
newsPaperName = settings['nameNotFoundStr']
|
||||||
except:
|
except:
|
||||||
print(Fore.LIGHTRED_EX, "OOPS! Ho trovato una riga ambigua.. potrebbe essere una data ma non so: \n\t[{}]". format(l.strip('\r\n')),
|
print(Fore.LIGHTRED_EX, "OOPS! Ho trovato una riga ambigua.. potrebbe essere una data ma non so: \n\t[{}]". format(l.strip('\r\n')),
|
||||||
Style.RESET_ALL)
|
Style.RESET_ALL)
|
||||||
elif lineWords[0] in docParams['headWords']:
|
elif lineWords[0] in docParams['headWords']:
|
||||||
s=status['head']
|
s=status['head']
|
||||||
newDoc=deepcopy(doc)
|
newDoc=deepcopy(doc)
|
||||||
newDoc['title']=title
|
newDoc['title']=title
|
||||||
newDoc['date']=docDate
|
newDoc['date']=docDate
|
||||||
newDoc['newsPaperName'] = newsPaperName
|
newDoc['newsPaperName'] = newsPaperName
|
||||||
titleBegin=False
|
titleBegin=False
|
||||||
else:
|
else:
|
||||||
if titleBegin:
|
if titleBegin:
|
||||||
title += l.strip().capitalize()
|
title += l.strip().capitalize()
|
||||||
except IndexError:
|
except IndexError:
|
||||||
print (Fore.LIGHTRED_EX, 'OOPS! Errore inaspettato, contatta il tuo sviluppatore di fiducia!', Style.RESET_ALL)
|
print (Fore.LIGHTRED_EX, 'OOPS! Errore inaspettato, contatta il tuo sviluppatore di fiducia!', Style.RESET_ALL)
|
||||||
elif s==status['head']:
|
elif s==status['head']:
|
||||||
if lineWords[0] not in docParams['headWords']: #se la prima parola non e' tra quelle di inizio
|
if lineWords[0] not in docParams['headWords']: #se la prima parola non e' tra quelle di inizio
|
||||||
tempContent.append(l) # vuol dire che ho trovato l'articolo
|
tempContent.append(l) # vuol dire che ho trovato l'articolo
|
||||||
s=status['body']
|
s=status['body']
|
||||||
elif s==status['body']:
|
elif s==status['body']:
|
||||||
if not lineWords[0] in docParams['tailWords']: #se la prima parola non e' tra quelle di fine
|
if not lineWords[0] in docParams['tailWords']: #se la prima parola non e' tra quelle di fine
|
||||||
if settings['delLF']:
|
if settings['delLF']:
|
||||||
tempContent.append(l.strip('\n')) #allora sto leggendo l'articolo
|
tempContent.append(l.strip('\n')) #allora sto leggendo l'articolo
|
||||||
else:
|
else:
|
||||||
tempContent.append(l)
|
tempContent.append(l)
|
||||||
else:
|
else:
|
||||||
s=status['tail']
|
s=status['tail']
|
||||||
anomaly = False
|
anomaly = False
|
||||||
if docSep.match(l) is not None: #controlla se ci sono articoli che non hanno le parole chiave finali
|
if docSep.match(l) is not None: #controlla se ci sono articoli che non hanno le parole chiave finali
|
||||||
print(Fore.YELLOW, "HEY! Ho individuato una separatore valido prima che si chiusesse l'articolo precedente, controlla i tuoi file in uscita!\n\
|
print(Fore.YELLOW, "HEY! 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'errore dovrebbe essere intorno all'articolo {} ma non sono sicuro! \n\t\t[{}]".format(docNumber,
|
||||||
l.strip()), Style.RESET_ALL)
|
l.strip()), Style.RESET_ALL)
|
||||||
s=status['tail']
|
s=status['tail']
|
||||||
anomaly = True
|
anomaly = True
|
||||||
elif s==status['tail']: #cerco il separatore di articoli e aggiungo quello letto alla lista
|
elif s==status['tail']: #cerco il separatore di articoli e aggiungo quello letto alla lista
|
||||||
if docSep.match(l) is not None or anomaly:
|
if docSep.match(l) is not None or anomaly:
|
||||||
s=status['first']
|
s=status['first']
|
||||||
anomaly = False
|
anomaly = False
|
||||||
if settings['delWordBreak']:
|
if settings['delWordBreak']:
|
||||||
tempContent=[ll.replace('-\n', '') for ll in tempContent]
|
tempContent=[ll.replace('-\n', '') for ll in tempContent]
|
||||||
newDoc['content']=deepcopy(''.join(tempContent))
|
newDoc['content']=deepcopy(''.join(tempContent))
|
||||||
fileBodyList.append(deepcopy(newDoc))
|
fileBodyList.append(deepcopy(newDoc))
|
||||||
tempContent=list()
|
tempContent=list()
|
||||||
bodyCounter +=1
|
bodyCounter +=1
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
prevLine=l
|
prevLine=l
|
||||||
pass
|
pass
|
||||||
print ('Nel file ho trovato {0} articoli..'.format(bodyCounter))
|
print ('Nel file ho trovato {0} articoli..'.format(bodyCounter))
|
||||||
if docSkipped > 0:
|
if docSkipped > 0:
|
||||||
print (Fore.YELLOW, 'Attentione, LexisNexis ne ha saltati {} !!!'.format(docSkipped), Style.RESET_ALL)
|
print (Fore.YELLOW, 'Attentione, LexisNexis ne ha saltati {} !!!'.format(docSkipped), Style.RESET_ALL)
|
||||||
print()
|
print()
|
||||||
|
|
||||||
if bodyCounter >= 1:
|
if bodyCounter >= 1:
|
||||||
if settings['removeDuplicates']:
|
if settings['removeDuplicates']:
|
||||||
print ('Controllo se ci sono dei duplicati..')
|
print ('Controllo se ci sono dei duplicati..')
|
||||||
titleList=[]
|
titleList=[]
|
||||||
duplicateList=[]
|
duplicateList=[]
|
||||||
duplicateNumber=0
|
duplicateNumber=0
|
||||||
for idx, ff in enumerate(fileBodyList):
|
for idx, ff in enumerate(fileBodyList):
|
||||||
if ff['title'] not in titleList:
|
if ff['title'] not in titleList:
|
||||||
titleList.append(ff['title'])
|
titleList.append(ff['title'])
|
||||||
ff['duplicate']=False
|
ff['duplicate']=False
|
||||||
fileBodyList[idx]=ff
|
fileBodyList[idx]=ff
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if ff['title'] not in duplicateList:
|
if ff['title'] not in duplicateList:
|
||||||
duplicateList.append(ff['title'])
|
duplicateList.append(ff['title'])
|
||||||
if settings['showRemovedDuplicates']:
|
if settings['showRemovedDuplicates']:
|
||||||
print ('Duplicato: {}'.format(ff['title'].strip()))
|
print ('Duplicato: {}'.format(ff['title'].strip()))
|
||||||
ff['duplicate'] = True
|
ff['duplicate'] = True
|
||||||
fileBodyList[idx]=ff
|
fileBodyList[idx]=ff
|
||||||
duplicateNumber+=1
|
duplicateNumber+=1
|
||||||
print ('Ho rimosso {} duplicati di {} articoli..\n'. format(duplicateNumber, len(duplicateList)))
|
print ('Ho rimosso {} duplicati di {} articoli..\n'. format(duplicateNumber, len(duplicateList)))
|
||||||
else:
|
else:
|
||||||
for idx, ff in enumerate(fileBodyList):
|
for idx, ff in enumerate(fileBodyList):
|
||||||
ff['duplicate']=False
|
ff['duplicate']=False
|
||||||
fileBodyList[idx]=ff
|
fileBodyList[idx]=ff
|
||||||
print('Salto il controllo dei duplicati..')
|
print('Salto il controllo dei duplicati..')
|
||||||
pass
|
pass
|
||||||
if settings['saveSeparateFiles']:
|
if settings['saveSeparateFiles']:
|
||||||
print ('Salvo gli articoli in file separati...')
|
print ('Salvo gli articoli in file separati...')
|
||||||
print ('Persorso: {0}'.format(cfg['OUTworkPath'].format('nomeFile')))
|
print ('Persorso: {0}'.format(cfg['OUTworkPath'].format('nomeFile')))
|
||||||
for ff in fileBodyList:
|
for ff in fileBodyList:
|
||||||
try:
|
try:
|
||||||
if ff['duplicate'] == False:
|
if ff['duplicate'] == False:
|
||||||
fileName=cfg['OUTnameFormat'].format(title=slugify(ff['title'][:settings['maxTitleLen']]),\
|
fileName=cfg['OUTnameFormat'].format(title=slugify(ff['title'][:settings['maxTitleLen']]),\
|
||||||
filename=slugify(fileBaseName),\
|
filename=slugify(fileBaseName),\
|
||||||
docnum=fileBodyCounter,\
|
docnum=fileBodyCounter,\
|
||||||
papername=ff['newsPaperName'].strip(),\
|
papername=ff['newsPaperName'].strip(),\
|
||||||
**ff['date'])
|
**ff['date'])
|
||||||
out=open(cfg['OUTworkPath']+'{0}'.format(fileName),'wb')
|
out=open(cfg['OUTworkPath']+'{0}'.format(fileName),'wb')
|
||||||
if settings['includeTitle']:
|
if settings['includeTitle']:
|
||||||
ff['content'] = ff['title']+os.linesep+ff['content']
|
ff['content'] = ff['title']+os.linesep+ff['content']
|
||||||
out.write(ff['content'].encode(settings['encoding']))
|
out.write(ff['content'].encode(settings['encoding']))
|
||||||
out.close()
|
out.close()
|
||||||
fileBodyCounter+=1
|
fileBodyCounter+=1
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a scrivere il file: {}'.format(e), Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a scrivere il file: {}'.format(e), Style.RESET_ALL)
|
||||||
continue
|
continue
|
||||||
if settings['saveBodyFile']:
|
if settings['saveBodyFile']:
|
||||||
print('Salvo gli articoli in un singolo file vicino agli originali...')
|
print('Salvo gli articoli in un singolo file vicino agli originali...')
|
||||||
print ('Persorso: {0}'.format(cfg['OUTworkPath'].format('nomeFile')))
|
print ('Persorso: {0}'.format(cfg['OUTworkPath'].format('nomeFile')))
|
||||||
try:
|
try:
|
||||||
fileName=slugify(fileBaseName)
|
fileName=slugify(fileBaseName)
|
||||||
fileName='BODYFILE_{0}_{1}.txt'.format(fileCounter,fileName[:settings['maxTitleLen']])
|
fileName='BODYFILE_{0}_{1}.txt'.format(fileCounter,fileName[:settings['maxTitleLen']])
|
||||||
fileContent = os.linesep.join([cc['content'] for cc in fileBodyList])
|
fileContent = os.linesep.join([cc['content'] for cc in fileBodyList])
|
||||||
out=open(cfg['OUTworkPath']+'{0}'.format(fileName),'wb')
|
out=open(cfg['OUTworkPath']+'{0}'.format(fileName),'wb')
|
||||||
out.write(fileContent.encode(settings['encoding']))
|
out.write(fileContent.encode(settings['encoding']))
|
||||||
out.close()
|
out.close()
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a scrivere il file: {}'.format(e), Style.RESET_ALL)
|
print(Fore.LIGHTRED_EX, 'OOPS! Qualcosa e\' andato storto, non riesco a scrivere il file: {}'.format(e), Style.RESET_ALL)
|
||||||
continue
|
continue
|
||||||
fileCounter+=1
|
fileCounter+=1
|
||||||
totSkipped+=docSkipped
|
totSkipped+=docSkipped
|
||||||
totFound+=bodyCounter-duplicateNumber
|
totFound+=bodyCounter-duplicateNumber
|
||||||
else:
|
else:
|
||||||
print('[{0}] non contiene articoli, \n controlla meglio le parole chiave! SGRUNT'.format(fileBaseName))
|
print('[{0}] non contiene articoli, \n controlla meglio le parole chiave! SGRUNT'.format(fileBaseName))
|
||||||
print('-'*50)
|
print('-'*50)
|
||||||
|
|
||||||
print()
|
print()
|
||||||
print (Fore.LIGHTYELLOW_EX, 'bananaSPLIT ha concluso con successo in {0:1.3f} secondi, \n\
|
print (Fore.LIGHTYELLOW_EX, 'bananaSPLIT ha concluso con successo in {0:1.3f} secondi, \n\
|
||||||
|
|||||||
64
bananaconfEN.json
Normal file
64
bananaconfEN.json
Normal 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
61
bananaconfITA.json
Normal 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": "'|@|#"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user