diff --git a/kindlecomicconverter/comic2ebook.py b/kindlecomicconverter/comic2ebook.py index 4a0ed6c..b5977f6 100755 --- a/kindlecomicconverter/comic2ebook.py +++ b/kindlecomicconverter/comic2ebook.py @@ -40,7 +40,7 @@ from subprocess import STDOUT, PIPE from psutil import virtual_memory, disk_usage from html import escape as hescape -from .shared import available_archive_tools, md5Checksum, getImageFileName, walkSort, walkLevel, sanitizeTrace, subprocess_run +from .shared import available_archive_tools, getImageFileName, walkSort, walkLevel, sanitizeTrace, subprocess_run from . import comic2panel from . import image from . import comicarchive @@ -78,7 +78,6 @@ def main(argv=None): def buildHTML(path, imgfile, imgfilepath): - imgfilepath = md5Checksum(imgfilepath) filename = getImageFileName(imgfile) deviceres = options.profileData[1] if not options.noprocessing and "Rotated" in options.imgMetadata[imgfilepath]: @@ -425,7 +424,6 @@ def buildOPF(dstdir, title, filelist, cover=None): ""]) f.close() - def buildEPUB(path, chapternames, tomenumber, ischunked): filelist = [] chapterlist = [] @@ -506,6 +504,7 @@ def buildEPUB(path, chapternames, tomenumber, ischunked): "display: none;\n", "}\n"]) f.close() + build_html_start = perf_counter() for dirpath, dirnames, filenames in os.walk(os.path.join(path, 'OEBPS', 'Images')): chapter = False dirnames, filenames = walkSort(dirnames, filenames) @@ -515,10 +514,12 @@ def buildEPUB(path, chapternames, tomenumber, ischunked): 'cover' + getImageFileName(afile)[1]) options.covers.append((image.Cover(os.path.join(dirpath, afile), cover, options, tomenumber), options.uuid)) - filelist.append(buildHTML(dirpath, afile, os.path.join(dirpath, afile))) if not chapter: - chapterlist.append((dirpath.replace('Images', 'Text'), filelist[-1][1])) + chapterlist.append((dirpath.replace('Images', 'Text'), afile)) chapter = True + filelist.append(buildHTML(dirpath, afile, os.path.join(dirpath, afile))) + build_html_end = perf_counter() + print(f"buildHTML: {build_html_end - build_html_start} seconds") # Overwrite chapternames if tree is flat and ComicInfo.xml has bookmarks if not chapternames and options.chapters and not ischunked: chapterlist = [] @@ -566,10 +567,13 @@ def imgDirectoryProcessing(path): if GUI: GUI.progressBarTick.emit(str(pagenumber)) if len(work) > 0: + img_processing_start = perf_counter() for i in work: workerPool.apply_async(func=imgFileProcessing, args=(i,), callback=imgFileProcessingTick) workerPool.close() workerPool.join() + img_processing_end = perf_counter() + print(f"imgFileProcessing: {img_processing_end - img_processing_start} seconds") if GUI and not GUI.conversionAlive: rmtree(os.path.join(path, '..', '..'), True) raise UserWarning("Conversion interrupted.") @@ -809,6 +813,7 @@ def sanitizeTree(filetree): key = os.path.join(root, name) if key != newKey: os.replace(key, newKey) + options.imgMetadata[newKey] = options.imgMetadata.pop(key) for i, name in enumerate(dirs): tmpName = name slugified = slugify(name) @@ -820,6 +825,10 @@ def sanitizeTree(filetree): if key != newKey: os.replace(key, newKey) dirs[i] = newKey + existingImgPathKeys = list(options.imgMetadata.keys()) + for imgPath in existingImgPathKeys: + if imgPath.startswith(key): + options.imgMetadata[newKey + imgPath.removeprefix(key)] = options.imgMetadata.pop(imgPath) return chapterNames diff --git a/kindlecomicconverter/image.py b/kindlecomicconverter/image.py index 4398c89..4d6a655 100755 --- a/kindlecomicconverter/image.py +++ b/kindlecomicconverter/image.py @@ -22,7 +22,6 @@ import io import os import mozjpeg_lossless_optimization from PIL import Image, ImageOps, ImageStat, ImageChops, ImageFilter -from .shared import md5Checksum from .page_number_crop_alg import get_bbox_crop_margin_page_number, get_bbox_crop_margin from .inter_panel_crop_alg import crop_empty_inter_panel @@ -321,7 +320,7 @@ class ComicPage: output_jpeg_file.write(output_jpeg_bytes) else: self.image.save(self.targetPath, 'JPEG', optimize=1, quality=85) - return [md5Checksum(self.targetPath), flags, self.orgPath] + return [self.targetPath, flags, self.orgPath] except IOError as err: raise RuntimeError('Cannot save image. ' + str(err)) diff --git a/kindlecomicconverter/shared.py b/kindlecomicconverter/shared.py index 76c579f..7a98d22 100644 --- a/kindlecomicconverter/shared.py +++ b/kindlecomicconverter/shared.py @@ -75,16 +75,6 @@ def walkLevel(some_dir, level=1): del dirs[:] -def md5Checksum(fpath): - with open(fpath, 'rb') as fh: - m = md5() - while True: - data = fh.read(8192) - if not data: - break - m.update(data) - return m.hexdigest() - def sanitizeTrace(traceback): return ''.join(format_tb(traceback))\