From cd2eeb4d0f0e372e4efc3046da61b512d12f973b Mon Sep 17 00:00:00 2001
From: Alex Xu
Date: Wed, 15 Apr 2026 21:40:03 -0700
Subject: [PATCH] option: create temporary files directory on source file drive
(#1296)
---
README.md | 1 +
gui/KCC.ui | 10 ++++++++++
kindlecomicconverter/KCC_gui.py | 3 +++
kindlecomicconverter/KCC_ui.py | 9 +++++++++
kindlecomicconverter/comic2ebook.py | 5 ++++-
5 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 01cebcc..4d74f0f 100644
--- a/README.md
+++ b/README.md
@@ -282,6 +282,7 @@ PROCESSING:
--jpeg-quality The JPEG quality, on a scale from 0 (worst) to 95 (best). Default 85 for most devices.
--maximizestrips Turn 1x4 strips to 2x2 strips
-d, --delete Delete source file(s) or a directory. It's not recoverable.
+ --tempdir Create temporary files directory on source file drive.
OUTPUT SETTINGS:
-o OUTPUT, --output OUTPUT
diff --git a/gui/KCC.ui b/gui/KCC.ui
index b2c960d..7b4e57f 100644
--- a/gui/KCC.ui
+++ b/gui/KCC.ui
@@ -885,6 +885,16 @@ Ignored for Kindle EPUB/MOBI and all PDF.
+ -
+
+
+ <html><head/><body><p><span style=" font-weight:600; text-decoration: underline;">Unchecked - Main Drive<br/></span>Use dedicated temporary directory on main OS drive.</p><p><span style=" font-weight:600; text-decoration: underline;">Checked - Source File Drive<br/></span>Create temporary file directory on source file drive.</p></body></html>
+
+
+ Temp Directory
+
+
+
diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py
index 089af51..11b797b 100644
--- a/kindlecomicconverter/KCC_gui.py
+++ b/kindlecomicconverter/KCC_gui.py
@@ -341,6 +341,8 @@ class WorkerThread(QThread):
options.metadatatitle = 2
if GUI.deleteBox.isChecked():
options.delete = True
+ if GUI.tempDirBox.isChecked():
+ options.tempdir = True
if GUI.spreadShiftBox.isChecked():
options.spreadshift = True
if GUI.fileFusionBox.isChecked():
@@ -1090,6 +1092,7 @@ class KCCGUI(KCC_ui.Ui_mainWindow):
'widthBox': GUI.widthBox.value(),
'heightBox': GUI.heightBox.value(),
'deleteBox': GUI.deleteBox.checkState(),
+ 'tempDirBox': GUI.tempDirBox.checkState(),
'spreadShiftBox': GUI.spreadShiftBox.checkState(),
'fileFusionBox': GUI.fileFusionBox.checkState(),
'defaultOutputFolderBox': GUI.defaultOutputFolderBox.checkState(),
diff --git a/kindlecomicconverter/KCC_ui.py b/kindlecomicconverter/KCC_ui.py
index cf11c6e..25fc4fc 100644
--- a/kindlecomicconverter/KCC_ui.py
+++ b/kindlecomicconverter/KCC_ui.py
@@ -450,6 +450,11 @@ class Ui_mainWindow(object):
self.gridLayout_2.addWidget(self.webpBox, 12, 0, 1, 1)
+ self.tempDirBox = QCheckBox(self.optionWidget)
+ self.tempDirBox.setObjectName(u"tempDirBox")
+
+ self.gridLayout_2.addWidget(self.tempDirBox, 12, 1, 1, 1)
+
self.gridLayout.addWidget(self.optionWidget, 5, 0, 1, 2)
@@ -821,6 +826,10 @@ class Ui_mainWindow(object):
"Ignored for Kindle EPUB/MOBI and all PDF.", None))
#endif // QT_CONFIG(tooltip)
self.webpBox.setText(QCoreApplication.translate("mainWindow", u"WebP (experimental)", None))
+#if QT_CONFIG(tooltip)
+ self.tempDirBox.setToolTip(QCoreApplication.translate("mainWindow", u"
Unchecked - Main Drive
Use dedicated temporary directory on main OS drive.
Checked - Source File Drive
Create temporary file directory on source file drive.
", None))
+#endif // QT_CONFIG(tooltip)
+ self.tempDirBox.setText(QCoreApplication.translate("mainWindow", u"Temp Directory", None))
#if QT_CONFIG(tooltip)
self.convertButton.setToolTip(QCoreApplication.translate("mainWindow", u"Shift+Click to select the output directory for this list.
", None))
#endif // QT_CONFIG(tooltip)
diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py
index 11ffabd..c95820c 100755
--- a/kindlecomicconverter/comic2ebook.py
+++ b/kindlecomicconverter/comic2ebook.py
@@ -874,7 +874,8 @@ def mupdf_pdf_process_pages_parallel(filename, output_dir, target_width, target_
def getWorkFolder(afile, workdir=None):
if not workdir:
workdir = mkdtemp('', 'KCC-')
- # workdir = mkdtemp('', 'KCC-', os.path.dirname(afile))
+ if options.tempdir:
+ workdir = mkdtemp('', 'KCC-', os.path.dirname(afile))
fullPath = os.path.join(workdir, 'OEBPS', 'Images')
else:
fullPath = workdir
@@ -1450,6 +1451,8 @@ def makeParser():
help="Turn 1x4 strips to 2x2 strips")
processing_options.add_argument("-d", "--delete", action="store_true", dest="delete", default=False,
help="Delete source file(s) or a directory. It's not recoverable.")
+ processing_options.add_argument("--tempdir", action="store_true", dest="tempdir", default=False,
+ help="Create temporary files directory on source file drive.")
custom_profile_options.add_argument("--customwidth", type=int, dest="customwidth", default=0,
help="Replace screen width provided by device profile")