diff --git a/.gitignore b/.gitignore index eaf9a6d..ecf916c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ dist/ build/ KindleComicConverter*.egg-info/ .idea/ +win7 /venv/ /kindlegen* /kcc.bat diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py index 9a55193..5ebd8c5 100644 --- a/kindlecomicconverter/KCC_gui.py +++ b/kindlecomicconverter/KCC_gui.py @@ -249,11 +249,19 @@ class WorkerThread(QThread): options.gamma = float(GUI.gammaValue) if GUI.autoLevelBox.isChecked(): options.autolevel = True - options.cropping = GUI.croppingBox.checkState().value + if GUI.croppingBox.isChecked(): + if GUI.croppingBox.checkState() == Qt.CheckState.PartiallyChecked: + options.cropping = 1 + else: + options.cropping = 2 if GUI.croppingBox.checkState() != Qt.CheckState.Unchecked: options.croppingp = float(GUI.croppingPowerValue) options.preservemargin = GUI.preserveMarginBox.value() - options.interpanelcrop = GUI.interPanelCropBox.checkState().value + if GUI.interPanelCropBox.isChecked(): + if GUI.interPanelCropBox.checkState() == Qt.CheckState.PartiallyChecked: + options.interpanelcrop = 1 + else: + options.interpanelcrop = 2 if GUI.borderBox.checkState() == Qt.CheckState.PartiallyChecked: options.white_borders = True elif GUI.borderBox.checkState() == Qt.CheckState.Checked: @@ -866,35 +874,35 @@ class KCCGUI(KCC_ui.Ui_mainWindow): self.settings.setValue('currentFormat', GUI.formatBox.currentIndex()) self.settings.setValue('startNumber', self.startNumber + 1) self.settings.setValue('windowSize', str(MW.size().width()) + 'x' + str(MW.size().height())) - self.settings.setValue('options', {'mangaBox': GUI.mangaBox.checkState().value, - 'rotateBox': GUI.rotateBox.checkState().value, - 'qualityBox': GUI.qualityBox.checkState().value, - 'gammaBox': GUI.gammaBox.checkState().value, - 'autoLevelBox': GUI.autoLevelBox.checkState().value, - 'croppingBox': GUI.croppingBox.checkState().value, + self.settings.setValue('options', {'mangaBox': GUI.mangaBox.checkState(), + 'rotateBox': GUI.rotateBox.checkState(), + 'qualityBox': GUI.qualityBox.checkState(), + 'gammaBox': GUI.gammaBox.checkState(), + 'autoLevelBox': GUI.autoLevelBox.checkState(), + 'croppingBox': GUI.croppingBox.checkState(), 'croppingPowerSlider': float(self.croppingPowerValue) * 100, 'preserveMarginBox': self.preserveMarginBox.value(), - 'interPanelCropBox': GUI.interPanelCropBox.checkState().value, - 'upscaleBox': GUI.upscaleBox.checkState().value, - 'borderBox': GUI.borderBox.checkState().value, - 'webtoonBox': GUI.webtoonBox.checkState().value, - 'outputSplit': GUI.outputSplit.checkState().value, - 'colorBox': GUI.colorBox.checkState().value, - 'eraseRainbowBox': GUI.eraseRainbowBox.checkState().value, - 'disableProcessingBox': GUI.disableProcessingBox.checkState().value, - 'metadataTitleBox': GUI.metadataTitleBox.checkState().value, - 'mozJpegBox': GUI.mozJpegBox.checkState().value, + 'interPanelCropBox': GUI.interPanelCropBox.checkState(), + 'upscaleBox': GUI.upscaleBox.checkState(), + 'borderBox': GUI.borderBox.checkState(), + 'webtoonBox': GUI.webtoonBox.checkState(), + 'outputSplit': GUI.outputSplit.checkState(), + 'colorBox': GUI.colorBox.checkState(), + 'eraseRainbowBox': GUI.eraseRainbowBox.checkState(), + 'disableProcessingBox': GUI.disableProcessingBox.checkState(), + 'metadataTitleBox': GUI.metadataTitleBox.checkState(), + 'mozJpegBox': GUI.mozJpegBox.checkState(), 'widthBox': GUI.widthBox.value(), 'heightBox': GUI.heightBox.value(), - 'deleteBox': GUI.deleteBox.checkState().value, - 'spreadShiftBox': GUI.spreadShiftBox.checkState().value, - 'fileFusionBox': GUI.fileFusionBox.checkState().value, - 'defaultOutputFolderBox': GUI.defaultOutputFolderBox.checkState().value, - 'noRotateBox': GUI.noRotateBox.checkState().value, - 'rotateFirstBox': GUI.rotateFirstBox.checkState().value, - 'maximizeStrips': GUI.maximizeStrips.checkState().value, + 'deleteBox': GUI.deleteBox.checkState(), + 'spreadShiftBox': GUI.spreadShiftBox.checkState(), + 'fileFusionBox': GUI.fileFusionBox.checkState(), + 'defaultOutputFolderBox': GUI.defaultOutputFolderBox.checkState(), + 'noRotateBox': GUI.noRotateBox.checkState(), + 'rotateFirstBox': GUI.rotateFirstBox.checkState(), + 'maximizeStrips': GUI.maximizeStrips.checkState(), 'gammaSlider': float(self.gammaValue) * 100, - 'chunkSizeCheckBox': GUI.chunkSizeCheckBox.checkState().value, + 'chunkSizeCheckBox': GUI.chunkSizeCheckBox.checkState(), 'chunkSizeBox': GUI.chunkSizeBox.value()}) self.settings.sync() self.tray.hide() @@ -969,7 +977,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow): self.setupUi(MW) self.editor = KCCGUI_MetaEditor() self.icons = Icons() - self.settings = QSettings('ciromattia', 'kcc') + self.settings = QSettings('ciromattia', 'kcc9') self.settingsVersion = self.settings.value('settingsVersion', '', type=str) self.lastPath = self.settings.value('lastPath', '', type=str) self.defaultOutputFolder = str(self.settings.value('defaultOutputFolder', '', type=str)) @@ -979,7 +987,11 @@ class KCCGUI(KCC_ui.Ui_mainWindow): self.currentFormat = self.settings.value('currentFormat', 0, type=int) self.startNumber = self.settings.value('startNumber', 0, type=int) self.windowSize = self.settings.value('windowSize', '0x0', type=str) - self.options = self.settings.value('options', {'gammaSlider': 0, 'croppingBox': 2, 'croppingPowerSlider': 100}) + default_options = {'gammaSlider': 0, 'croppingBox': 2, 'croppingPowerSlider': 100} + try: + self.options = self.settings.value('options', default_options) + except Exception: + self.options = default_options self.worker = WorkerThread() self.versionCheck = VersionThread() self.progress = ProgressThread() diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py index e223a05..925c208 100755 --- a/kindlecomicconverter/comic2ebook.py +++ b/kindlecomicconverter/comic2ebook.py @@ -528,6 +528,7 @@ def buildEPUB(path, chapternames, tomenumber, ischunked, cover: image.Cover, len f.close() build_html_start = perf_counter() cover.save_to_epub(os.path.join(path, 'OEBPS', 'Images', 'cover.jpg'), tomenumber, len_tomes) + dot_clean(path) options.covers.append((cover, options.uuid)) for dirpath, dirnames, filenames in os.walk(os.path.join(path, 'OEBPS', 'Images')): chapter = False diff --git a/kindlecomicconverter/image.py b/kindlecomicconverter/image.py index 9af48dc..1c17362 100755 --- a/kindlecomicconverter/image.py +++ b/kindlecomicconverter/image.py @@ -495,9 +495,6 @@ class Cover: stroke_width=25 ) copy.save(target, "JPEG", optimize=1, quality=85) - dot_cover = Path(target).with_stem('._' + Path(target).stem) - if os.path.exists(dot_cover): - os.remove(dot_cover) except IOError: raise RuntimeError('Failed to save cover.') diff --git a/kindlecomicconverter/shared.py b/kindlecomicconverter/shared.py index 4ef73cd..c6857d2 100644 --- a/kindlecomicconverter/shared.py +++ b/kindlecomicconverter/shared.py @@ -98,10 +98,10 @@ def dependencyCheck(level): if level > 2: try: from PySide6.QtCore import qVersion as qtVersion - if Version('6.5.1') > Version(qtVersion()): - missing.append('PySide 6.5.1+') + if Version('6.0.0') > Version(qtVersion()): + missing.append('PySide 6.0.0') except ImportError: - missing.append('PySide 6.5.1+') + missing.append('PySide 6.0.0+') try: import raven except ImportError: @@ -124,16 +124,16 @@ def dependencyCheck(level): missing.append('python-slugify 1.2.1+') try: from PIL import __version__ as pillowVersion - if Version('11.3.0') > Version(pillowVersion): - missing.append('Pillow 11.3.0+') + if Version('8.3.0') > Version(pillowVersion): + missing.append('Pillow 8.3.0+') except ImportError: - missing.append('Pillow 11.3.0+') + missing.append('Pillow 8.3.0+') try: from pymupdf import __version__ as pymupdfVersion - if Version('1.26.1') > Version(pymupdfVersion): - missing.append('PyMuPDF 1.26.1+') + if Version('1.16.1') > Version(pymupdfVersion): + missing.append('PyMuPDF 1.16.1+') except ImportError: - missing.append('PyMuPDF 1.26.1+') + missing.append('PyMuPDF 1.16.1+') if len(missing) > 0: print('ERROR: ' + ', '.join(missing) + ' is not installed!') sys.exit(1) diff --git a/requirements-win7.txt b/requirements-win7.txt new file mode 100644 index 0000000..47717d4 --- /dev/null +++ b/requirements-win7.txt @@ -0,0 +1,12 @@ +PySide6==6.1.3 +Pillow>=9 +psutil>=5.9.5 +requests>=2.31.0 +python-slugify>=1.2.1 +raven>=6.0.0 +packaging>=23.2 +mozjpeg-lossless-optimization>=1.2.0 +natsort>=8.4.0 +distro>=1.8.0 +numpy==1.23.0 +PyMuPDF>=1.16 diff --git a/setup.py b/setup.py index 4f51b6d..32a1c7e 100644 --- a/setup.py +++ b/setup.py @@ -45,7 +45,10 @@ class BuildBinaryCommand(setuptools.Command): os.system(f'appdmg kcc.json dist/kcc_macos_{platform.processor()}_{VERSION}.dmg') sys.exit(0) elif sys.platform == 'win32': - os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n KCC_' + VERSION + ' -w --noupx kcc.py') + if os.getenv('WINDOWS_7'): + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n kcc_win7_' + VERSION + ' -w --noupx kcc.py') + else: + os.system('pyinstaller --hidden-import=_cffi_backend -y -F -i icons\\comic2ebook.ico -n KCC_' + VERSION + ' -w --noupx kcc.py') sys.exit(0) elif sys.platform == 'linux': os.system( @@ -78,8 +81,8 @@ setuptools.setup( }, packages=['kindlecomicconverter'], install_requires=[ - 'pyside6>=6.5.1', - 'Pillow>=11.3.0', + 'pyside6>=6.0.0', + 'Pillow>=9.3.0', 'PyMuPDF>=1.18.0', 'psutil>=5.9.5', 'python-slugify>=1.2.1,<9.0.0', @@ -89,7 +92,7 @@ setuptools.setup( 'natsort>=8.4.0', 'distro', 'numpy>=1.22.4', - 'PyMuPDF>=1.26.1', + 'PyMuPDF>=1.16.1', ], classifiers=[], zip_safe=False,