1
0
mirror of https://github.com/ciromattia/kcc synced 2026-07-04 03:55:28 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Aldijonas c3f86e29c8 Rename cover.jpg to !cover.jpg in CBZ (#1381)
Change cover image filename from 'cover.jpg' to '!cover.jpg' in line 1907 for correct cover display when using CBZ file format
2026-07-02 16:41:37 -07:00
Nils Leo 72e1546c2c fix: enable unrar on all distros, not just Fedora (#1376)
* fix: enable unrar on all distros, not just Fedora

unrar was gated behind distro.id() == 'fedora', so on Debian/Ubuntu
the binary was installed but never invoked. Try unrar unconditionally
after 7z, with an optional rarfile Python fallback.

Fixes CBR extraction on non-Fedora Linux distributions.

* fix: gate unrar on Linux and drop unused distro dependency

Debian/Ubuntu's '7zip' package ships the upstream 7zz binary, which
excludes RAR support for licensing reasons, so 7z fails to read .cbr
(RAR) archives. unrar was installed but only invoked when
distro.id() == 'fedora', so on Debian it was never tried and extraction
failed.

Per maintainer feedback, gate unrar on platform.system() == 'Linux'
(not needed on Windows or macOS) and drop the rarfile PyPI fallback to
avoid a new dependency. Since the code no longer imports distro, also
remove it from the requirements files and setup.py.
2026-07-02 15:07:36 -07:00
sa-mi 544e866b51 fix crash in smart cover crop for landscape covers (#1379) 2026-07-01 21:30:08 -07:00
Alex Xu 363a36a764 reduce job list minimum height from 150 to 110 pixels (#1378) 2026-07-01 17:34:17 -07:00
Alex Xu bece5290a3 remove 2nd row of buttons (#1377) 2026-06-29 17:17:41 -07:00
11 changed files with 52 additions and 130 deletions
+12 -56
View File
@@ -37,23 +37,20 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="2">
<widget class="QPushButton" name="editorButton"> <widget class="QPushButton" name="humbleButton">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p style='white-space:pre'&gt;Shift+Click to edit directory.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text"> <property name="text">
<string>Metadata Editor</string> <string>Humble Bundle Referral</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="KCC.qrc"> <iconset resource="KCC.qrc">
<normaloff>:/Other/icons/editor.png</normaloff>:/Other/icons/editor.png</iconset> <normaloff>:/Brand/icons/Humble_H-Red.png</normaloff>:/Brand/icons/Humble_H-Red.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>
@@ -80,63 +77,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="0">
<widget class="QPushButton" name="wikiButton"> <widget class="QPushButton" name="editorButton">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>30</height> <height>30</height>
</size> </size>
</property> </property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p style='white-space:pre'&gt;Shift+Click to edit directory.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text"> <property name="text">
<string>Wiki</string> <string>Metadata Editor</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="KCC.qrc"> <iconset resource="KCC.qrc">
<normaloff>:/Other/icons/wiki.png</normaloff>:/Other/icons/wiki.png</iconset> <normaloff>:/Other/icons/editor.png</normaloff>:/Other/icons/editor.png</iconset>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="youtubeButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>YouTube</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="humbleButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Humble Bundle Referral</string>
</property>
<property name="icon">
<iconset resource="KCC.qrc">
<normaloff>:/Brand/icons/Humble_H-Red.png</normaloff>:/Brand/icons/Humble_H-Red.png</iconset>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="discordButton">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Discord</string>
</property> </property>
</widget> </widget>
</item> </item>
@@ -1130,7 +1087,7 @@ Ignores most options besides JPEG quality, color mode, output folder.</string>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
<height>150</height> <height>110</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
@@ -1258,7 +1215,6 @@ Ignores most options besides JPEG quality, color mode, output folder.</string>
<tabstop>chunkSizeBox</tabstop> <tabstop>chunkSizeBox</tabstop>
<tabstop>editorButton</tabstop> <tabstop>editorButton</tabstop>
<tabstop>kofiButton</tabstop> <tabstop>kofiButton</tabstop>
<tabstop>wikiButton</tabstop>
</tabstops> </tabstops>
<resources> <resources>
<include location="KCC.qrc"/> <include location="KCC.qrc"/>
+4 -7
View File
@@ -750,7 +750,6 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
else: else:
status = True status = True
GUI.editorButton.setEnabled(status) GUI.editorButton.setEnabled(status)
GUI.wikiButton.setEnabled(status)
GUI.deviceBox.setEnabled(status) GUI.deviceBox.setEnabled(status)
GUI.defaultOutputFolderButton.setEnabled(status) GUI.defaultOutputFolderButton.setEnabled(status)
GUI.clearButton.setEnabled(status) GUI.clearButton.setEnabled(status)
@@ -1252,7 +1251,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
if self.windowSize == '0x0': if self.windowSize == '0x0':
MW.resize(500, 500) MW.resize(500, 500)
elif sys.platform.startswith('darwin'): elif sys.platform.startswith('darwin'):
for element in ['editorButton', 'wikiButton', 'defaultOutputFolderButton', 'clearButton', 'fileButton', 'deviceBox', for element in ['editorButton', 'defaultOutputFolderButton', 'clearButton', 'fileButton', 'deviceBox',
'convertButton', 'formatBox']: 'convertButton', 'formatBox']:
getattr(GUI, element).setMinimumSize(QSize(0, 0)) getattr(GUI, element).setMinimumSize(QSize(0, 0))
GUI.gridLayout.setContentsMargins(-1, -1, -1, -1) GUI.gridLayout.setContentsMargins(-1, -1, -1, -1)
@@ -1433,8 +1432,9 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
link_dict = { link_dict = {
'README': "https://github.com/ciromattia/kcc?tab=readme-ov-file#kcc", 'README': "https://github.com/ciromattia/kcc?tab=readme-ov-file#kcc",
'FAQ': "https://github.com/ciromattia/kcc/blob/master/README.md#faq", 'FAQ': "https://github.com/ciromattia/kcc/blob/master/README.md#faq",
'YOUTUBE': "https://youtu.be/IR2Fhcm9658?si=Z-2zzLaUFjmaEbrj", 'WIKI': "https://github.com/ciromattia/kcc/wiki",
'COMMISSIONS': "https://github.com/ciromattia/kcc?tab=readme-ov-file#commissions", 'TUTORIAL': "https://youtu.be/QQ6zJcMF2Iw?si=80rfm6DU6OUJdFqa",
'EMAIL': "https://github.com/ciromattia/kcc?tab=readme-ov-file#commissions",
'DONATE': "https://github.com/ciromattia/kcc/blob/master/README.md#issues--new-features--donations", 'DONATE': "https://github.com/ciromattia/kcc/blob/master/README.md#issues--new-features--donations",
'FORUM': "http://www.mobileread.com/forums/showthread.php?t=207461", 'FORUM': "http://www.mobileread.com/forums/showthread.php?t=207461",
'DISCORD': "https://discord.com/invite/qj7wpnUHav", 'DISCORD': "https://discord.com/invite/qj7wpnUHav",
@@ -1466,11 +1466,8 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
GUI.fileButton.clicked.connect(self.selectFile) GUI.fileButton.clicked.connect(self.selectFile)
GUI.directoryButton.clicked.connect(self.selectDir) GUI.directoryButton.clicked.connect(self.selectDir)
GUI.editorButton.clicked.connect(self.selectFileMetaEditor) GUI.editorButton.clicked.connect(self.selectFileMetaEditor)
GUI.wikiButton.clicked.connect(self.openWiki)
GUI.kofiButton.clicked.connect(self.openKofi) GUI.kofiButton.clicked.connect(self.openKofi)
GUI.humbleButton.clicked.connect(self.openHumble) GUI.humbleButton.clicked.connect(self.openHumble)
GUI.youtubeButton.clicked.connect(self.openYouTube)
GUI.discordButton.clicked.connect(self.openDiscord)
GUI.convertButton.clicked.connect(self.convertStart) GUI.convertButton.clicked.connect(self.convertStart)
GUI.gammaSlider.valueChanged.connect(self.changeGamma) GUI.gammaSlider.valueChanged.connect(self.changeGamma)
GUI.gammaBox.stateChanged.connect(self.togglegammaBox) GUI.gammaBox.stateChanged.connect(self.togglegammaBox)
+28 -53
View File
@@ -40,14 +40,14 @@ class Ui_mainWindow(object):
self.gridLayout_6 = QGridLayout(self.toolWidget) self.gridLayout_6 = QGridLayout(self.toolWidget)
self.gridLayout_6.setObjectName(u"gridLayout_6") self.gridLayout_6.setObjectName(u"gridLayout_6")
self.gridLayout_6.setContentsMargins(0, 0, 0, 0) self.gridLayout_6.setContentsMargins(0, 0, 0, 0)
self.editorButton = QPushButton(self.toolWidget) self.humbleButton = QPushButton(self.toolWidget)
self.editorButton.setObjectName(u"editorButton") self.humbleButton.setObjectName(u"humbleButton")
self.editorButton.setMinimumSize(QSize(0, 30)) self.humbleButton.setMinimumSize(QSize(0, 30))
icon1 = QIcon() icon1 = QIcon()
icon1.addFile(u":/Other/icons/editor.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon1.addFile(u":/Brand/icons/Humble_H-Red.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.editorButton.setIcon(icon1) self.humbleButton.setIcon(icon1)
self.gridLayout_6.addWidget(self.editorButton, 0, 0, 1, 1) self.gridLayout_6.addWidget(self.humbleButton, 0, 2, 1, 1)
self.kofiButton = QPushButton(self.toolWidget) self.kofiButton = QPushButton(self.toolWidget)
self.kofiButton.setObjectName(u"kofiButton") self.kofiButton.setObjectName(u"kofiButton")
@@ -59,35 +59,14 @@ class Ui_mainWindow(object):
self.gridLayout_6.addWidget(self.kofiButton, 0, 1, 1, 1) self.gridLayout_6.addWidget(self.kofiButton, 0, 1, 1, 1)
self.wikiButton = QPushButton(self.toolWidget) self.editorButton = QPushButton(self.toolWidget)
self.wikiButton.setObjectName(u"wikiButton") self.editorButton.setObjectName(u"editorButton")
self.wikiButton.setMinimumSize(QSize(0, 30)) self.editorButton.setMinimumSize(QSize(0, 30))
icon3 = QIcon() icon3 = QIcon()
icon3.addFile(u":/Other/icons/wiki.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon3.addFile(u":/Other/icons/editor.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.wikiButton.setIcon(icon3) self.editorButton.setIcon(icon3)
self.gridLayout_6.addWidget(self.wikiButton, 0, 2, 1, 1) self.gridLayout_6.addWidget(self.editorButton, 0, 0, 1, 1)
self.youtubeButton = QPushButton(self.toolWidget)
self.youtubeButton.setObjectName(u"youtubeButton")
self.youtubeButton.setMinimumSize(QSize(0, 30))
self.gridLayout_6.addWidget(self.youtubeButton, 1, 0, 1, 1)
self.humbleButton = QPushButton(self.toolWidget)
self.humbleButton.setObjectName(u"humbleButton")
self.humbleButton.setMinimumSize(QSize(0, 30))
icon4 = QIcon()
icon4.addFile(u":/Brand/icons/Humble_H-Red.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.humbleButton.setIcon(icon4)
self.gridLayout_6.addWidget(self.humbleButton, 1, 1, 1, 1)
self.discordButton = QPushButton(self.toolWidget)
self.discordButton.setObjectName(u"discordButton")
self.discordButton.setMinimumSize(QSize(0, 30))
self.gridLayout_6.addWidget(self.discordButton, 1, 2, 1, 1)
self.gridLayout.addWidget(self.toolWidget, 0, 0, 1, 2) self.gridLayout.addWidget(self.toolWidget, 0, 0, 1, 2)
@@ -148,18 +127,18 @@ class Ui_mainWindow(object):
font = QFont() font = QFont()
font.setBold(True) font.setBold(True)
self.convertButton.setFont(font) self.convertButton.setFont(font)
icon5 = QIcon() icon4 = QIcon()
icon5.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon4.addFile(u":/Other/icons/convert.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.convertButton.setIcon(icon5) self.convertButton.setIcon(icon4)
self.gridLayout_4.addWidget(self.convertButton, 1, 3, 1, 1) self.gridLayout_4.addWidget(self.convertButton, 1, 3, 1, 1)
self.clearButton = QPushButton(self.buttonWidget) self.clearButton = QPushButton(self.buttonWidget)
self.clearButton.setObjectName(u"clearButton") self.clearButton.setObjectName(u"clearButton")
self.clearButton.setMinimumSize(QSize(0, 30)) self.clearButton.setMinimumSize(QSize(0, 30))
icon6 = QIcon() icon5 = QIcon()
icon6.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon5.addFile(u":/Other/icons/clear.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.clearButton.setIcon(icon6) self.clearButton.setIcon(icon5)
self.gridLayout_4.addWidget(self.clearButton, 0, 3, 1, 1) self.gridLayout_4.addWidget(self.clearButton, 0, 3, 1, 1)
@@ -172,9 +151,9 @@ class Ui_mainWindow(object):
self.fileButton = QPushButton(self.buttonWidget) self.fileButton = QPushButton(self.buttonWidget)
self.fileButton.setObjectName(u"fileButton") self.fileButton.setObjectName(u"fileButton")
self.fileButton.setMinimumSize(QSize(0, 30)) self.fileButton.setMinimumSize(QSize(0, 30))
icon7 = QIcon() icon6 = QIcon()
icon7.addFile(u":/Other/icons/document_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon6.addFile(u":/Other/icons/document_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.fileButton.setIcon(icon7) self.fileButton.setIcon(icon6)
self.gridLayout_4.addWidget(self.fileButton, 0, 1, 1, 1) self.gridLayout_4.addWidget(self.fileButton, 0, 1, 1, 1)
@@ -185,9 +164,9 @@ class Ui_mainWindow(object):
sizePolicy2.setVerticalStretch(0) sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.directoryButton.sizePolicy().hasHeightForWidth()) sizePolicy2.setHeightForWidth(self.directoryButton.sizePolicy().hasHeightForWidth())
self.directoryButton.setSizePolicy(sizePolicy2) self.directoryButton.setSizePolicy(sizePolicy2)
icon8 = QIcon() icon7 = QIcon()
icon8.addFile(u":/Other/icons/folder_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off) icon7.addFile(u":/Other/icons/folder_new.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.directoryButton.setIcon(icon8) self.directoryButton.setIcon(icon7)
self.gridLayout_4.addWidget(self.directoryButton, 0, 4, 1, 1) self.gridLayout_4.addWidget(self.directoryButton, 0, 4, 1, 1)
@@ -431,7 +410,7 @@ class Ui_mainWindow(object):
self.defaultOutputFolderButton = QPushButton(self.outputFolderWidget) self.defaultOutputFolderButton = QPushButton(self.outputFolderWidget)
self.defaultOutputFolderButton.setObjectName(u"defaultOutputFolderButton") self.defaultOutputFolderButton.setObjectName(u"defaultOutputFolderButton")
self.defaultOutputFolderButton.setMinimumSize(QSize(0, 30)) self.defaultOutputFolderButton.setMinimumSize(QSize(0, 30))
self.defaultOutputFolderButton.setIcon(icon8) self.defaultOutputFolderButton.setIcon(icon7)
self.horizontalLayout_3.addWidget(self.defaultOutputFolderButton) self.horizontalLayout_3.addWidget(self.defaultOutputFolderButton)
@@ -574,7 +553,7 @@ class Ui_mainWindow(object):
self.jobList = QListWidget(self.centralWidget) self.jobList = QListWidget(self.centralWidget)
self.jobList.setObjectName(u"jobList") self.jobList.setObjectName(u"jobList")
self.jobList.setMinimumSize(QSize(0, 150)) self.jobList.setMinimumSize(QSize(0, 110))
self.jobList.setStyleSheet(u"") self.jobList.setStyleSheet(u"")
self.jobList.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection) self.jobList.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
self.jobList.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel) self.jobList.setVerticalScrollMode(QAbstractItemView.ScrollMode.ScrollPerPixel)
@@ -650,7 +629,6 @@ class Ui_mainWindow(object):
QWidget.setTabOrder(self.fileFusionBox, self.chunkSizeBox) QWidget.setTabOrder(self.fileFusionBox, self.chunkSizeBox)
QWidget.setTabOrder(self.chunkSizeBox, self.editorButton) QWidget.setTabOrder(self.chunkSizeBox, self.editorButton)
QWidget.setTabOrder(self.editorButton, self.kofiButton) QWidget.setTabOrder(self.editorButton, self.kofiButton)
QWidget.setTabOrder(self.kofiButton, self.wikiButton)
self.retranslateUi(mainWindow) self.retranslateUi(mainWindow)
@@ -659,15 +637,12 @@ class Ui_mainWindow(object):
def retranslateUi(self, mainWindow): def retranslateUi(self, mainWindow):
mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"Kindle Comic Converter", None)) mainWindow.setWindowTitle(QCoreApplication.translate("mainWindow", u"Kindle Comic Converter", None))
self.humbleButton.setText(QCoreApplication.translate("mainWindow", u"Humble Bundle Referral", None))
self.kofiButton.setText(QCoreApplication.translate("mainWindow", u"Support me on Ko-fi", None))
#if QT_CONFIG(tooltip) #if QT_CONFIG(tooltip)
self.editorButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Shift+Click to edit directory.</p></body></html>", None)) self.editorButton.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p style='white-space:pre'>Shift+Click to edit directory.</p></body></html>", None))
#endif // QT_CONFIG(tooltip) #endif // QT_CONFIG(tooltip)
self.editorButton.setText(QCoreApplication.translate("mainWindow", u"Metadata Editor", None)) self.editorButton.setText(QCoreApplication.translate("mainWindow", u"Metadata Editor", None))
self.kofiButton.setText(QCoreApplication.translate("mainWindow", u"Support me on Ko-fi", None))
self.wikiButton.setText(QCoreApplication.translate("mainWindow", u"Wiki", None))
self.youtubeButton.setText(QCoreApplication.translate("mainWindow", u"YouTube", None))
self.humbleButton.setText(QCoreApplication.translate("mainWindow", u"Humble Bundle Referral", None))
self.discordButton.setText(QCoreApplication.translate("mainWindow", u"Discord", None))
#if QT_CONFIG(tooltip) #if QT_CONFIG(tooltip)
self.preserveMarginLabel.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p>After calculating the cropping boundaries, &quot;back up&quot; a specified percentage amount.</p></body></html>", None)) self.preserveMarginLabel.setToolTip(QCoreApplication.translate("mainWindow", u"<html><head/><body><p>After calculating the cropping boundaries, &quot;back up&quot; a specified percentage amount.</p></body></html>", None))
#endif // QT_CONFIG(tooltip) #endif // QT_CONFIG(tooltip)
+1 -1
View File
@@ -1904,7 +1904,7 @@ def makeBook(source, qtgui=None, job_progress=''):
else: else:
filepath.append(getOutputFilename(source, options.output, '.cbz', '')) filepath.append(getOutputFilename(source, options.output, '.cbz', ''))
if cover and cover.smartcover: if cover and cover.smartcover:
cover.save_to_folder(os.path.join(tome, 'OEBPS', 'Images', 'cover.jpg'), tomeNumber, len(tomes)) cover.save_to_folder(os.path.join(tome, 'OEBPS', 'Images', '!cover.jpg'), tomeNumber, len(tomes))
makeZIP(filepath[-1], os.path.join(tome, "OEBPS", "Images"), job_progress) makeZIP(filepath[-1], os.path.join(tome, "OEBPS", "Images"), job_progress)
elif options.format == 'PDF': elif options.format == 'PDF':
print(f"{job_progress}Creating PDF file with PyMuPDF...") print(f"{job_progress}Creating PDF file with PyMuPDF...")
+2 -3
View File
@@ -22,7 +22,6 @@ from functools import cached_property, lru_cache
import os import os
from pathlib import Path from pathlib import Path
import platform import platform
import distro
from subprocess import STDOUT, PIPE, CalledProcessError from subprocess import STDOUT, PIPE, CalledProcessError
from xml.dom.minidom import parseString from xml.dom.minidom import parseString
from xml.parsers.expat import ExpatError from xml.parsers.expat import ExpatError
@@ -46,7 +45,7 @@ class ComicArchive:
[SEVENZIP, 'l', '-y', '-p1', self.basename], [SEVENZIP, 'l', '-y', '-p1', self.basename],
] ]
if distro.id() == 'fedora' or distro.like() == 'fedora': if platform.system() == 'Linux':
extraction_commands.append( extraction_commands.append(
['unrar', 'l', '-y', '-p1', self.basename], ['unrar', 'l', '-y', '-p1', self.basename],
) )
@@ -85,7 +84,7 @@ class ComicArchive:
extraction_commands.reverse() extraction_commands.reverse()
if distro.id() == 'fedora' or distro.like() == 'fedora': if platform.system() == 'Linux':
extraction_commands.append( extraction_commands.append(
['unrar', 'x', '-y', '-x__MACOSX', '-x.DS_Store', '-xthumbs.db', '-xThumbs.db', self.basename, targetdir] ['unrar', 'x', '-y', '-x__MACOSX', '-x.DS_Store', '-xthumbs.db', '-xThumbs.db', self.basename, targetdir]
) )
+1 -1
View File
@@ -648,7 +648,7 @@ class Cover:
if self.options.righttoleft: if self.options.righttoleft:
self.image = self.image.crop((w * .36, 0, w, h)) self.image = self.image.crop((w * .36, 0, w, h))
else: else:
self.image = self.image.crop((w, 0, .64 * w, h)) self.image = self.image.crop((0, 0, .64 * w, h))
def save_to_folder(self, target, tomeid, len_tomes=0): def save_to_folder(self, target, tomeid, len_tomes=0):
try: try:
-1
View File
@@ -5,7 +5,6 @@ python-slugify>=8.0.4
packaging>=26.2 packaging>=26.2
mozjpeg-lossless-optimization>=1.2.0 mozjpeg-lossless-optimization>=1.2.0
natsort>=8.4.0 natsort>=8.4.0
distro>=1.9.0
# Below requirements are compiled in Dockefile # Below requirements are compiled in Dockefile
# numpy==2.3.4 # numpy==2.3.4
# PyMuPDF==1.26.6 # PyMuPDF==1.26.6
-1
View File
@@ -6,6 +6,5 @@ python-slugify>=8.0.4
packaging>=26.2 packaging>=26.2
mozjpeg-lossless-optimization>=1.2.0 mozjpeg-lossless-optimization>=1.2.0
natsort>=8.4.0 natsort>=8.4.0
distro>=1.9.0
numpy<2 numpy<2
PyMuPDF==1.25.5 PyMuPDF==1.25.5
-1
View File
@@ -6,6 +6,5 @@ python-slugify>=8.0.4
packaging>=26.2 packaging>=26.2
mozjpeg-lossless-optimization>=1.2.0 mozjpeg-lossless-optimization>=1.2.0
natsort>=8.4.0 natsort>=8.4.0
distro>=1.9.0
numpy==1.23.5 numpy==1.23.5
PyMuPDF>=1.16 PyMuPDF>=1.16
-1
View File
@@ -6,6 +6,5 @@ python-slugify>=8.0.4,<9.0.0
packaging>=26.2 packaging>=26.2
mozjpeg-lossless-optimization>=1.2.0 mozjpeg-lossless-optimization>=1.2.0
natsort>=8.4.0 natsort>=8.4.0
distro>=1.9.0
numpy>=1.22.4 numpy>=1.22.4
PyMuPDF>=1.18.0 PyMuPDF>=1.18.0
-1
View File
@@ -155,7 +155,6 @@ setuptools.setup(
'python-slugify>=1.2.1,<9.0.0', 'python-slugify>=1.2.1,<9.0.0',
'mozjpeg-lossless-optimization>=1.2.0', 'mozjpeg-lossless-optimization>=1.2.0',
'natsort>=8.4.0', 'natsort>=8.4.0',
'distro>=1.8.0',
'numpy>=1.22.4', 'numpy>=1.22.4',
'packaging>=23.2', 'packaging>=23.2',
'PyMuPDF>=1.16.1', 'PyMuPDF>=1.16.1',