about summary refs log tree commit diff
path: root/kindlecomicconverter/KCC_gui.py
diff options
context:
space:
mode:
Diffstat (limited to 'kindlecomicconverter/KCC_gui.py')
-rw-r--r--kindlecomicconverter/KCC_gui.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/kindlecomicconverter/KCC_gui.py b/kindlecomicconverter/KCC_gui.py
index 56b00c5..fb10853 100644
--- a/kindlecomicconverter/KCC_gui.py
+++ b/kindlecomicconverter/KCC_gui.py
@@ -286,6 +286,39 @@ class WorkerThread(QtCore.QThread):
             if GUI.jobList.item(i).icon().isNull():
                 currentJobs.append(str(GUI.jobList.item(i).text()))
         GUI.jobList.clear()
+
+        #NEEDS TO BE CBR FILENAME (SO IT CAN BE EXTRACTED)
+        if GUI.outputMerge.isChecked():
+            import zipfile
+            from tempfile import TemporaryDirectory
+
+            MW.addMessage.emit('Merging all files...', 'info', False)
+            GUI.progress.content = 'Merging all files'
+            
+            zf = zipfile.ZipFile(currentJobs[0].split('.', 1)[0] + "-MERGED.cbz", "w")
+
+            #we should join cbz before converting
+            with TemporaryDirectory('', 'KCC-') as workdir:
+                for job in currentJobs:
+
+                    #unzip all in tmp folder
+                    name = os.path.splitext(os.path.basename(job))[0]
+                    extracted_dir = workdir + "/" + name
+
+                    with zipfile.ZipFile(job, 'r') as zip_ref:
+                        zip_ref.extractall(extracted_dir)
+
+                    for dirname, subdirs, files in os.walk(extracted_dir):
+                        for filename in files:
+                            p = os.path.join(dirname, filename)
+                            arcname = os.path.relpath(p, start=workdir)
+                            zf.write(p, arcname=arcname)#change arcname to remove tmp folder (relative path)
+            zf.close()
+
+            currentJobs = [zf.filename]
+
+            GUI.progress.content = ''
+
         for job in currentJobs:
             sleep(0.5)
             if not self.conversionAlive: