1
0
mirror of https://github.com/ciromattia/kcc synced 2025-12-13 01:36:27 +00:00

fix unsupported directory structure and large mobi conversion stuck with nested folders by flattening folders (#869)

This commit is contained in:
Alex Xu
2025-03-15 08:09:17 -07:00
committed by GitHub
parent 77af020abb
commit ef3b756247

View File

@@ -820,6 +820,14 @@ def sanitizeTree(filetree):
return chapterNames
def flattenTree(filetree):
for root, dirs, files in os.walk(filetree, topdown=False):
for name in files:
os.rename(os.path.join(root, name), os.path.join(filetree, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
def sanitizePermissions(filetree):
for root, dirs, files in os.walk(filetree, False):
for name in files:
@@ -835,7 +843,8 @@ def chunk_directory(path):
if getImageFileName(f):
newLevel = os.path.join(root, f).replace(os.path.join(path, 'OEBPS', 'Images'), '').count(os.sep)
if level != -1 and level != newLevel:
level = 0
flattenTree(os.path.join(path, 'OEBPS', 'Images'))
level = 1
break
else:
level = newLevel
@@ -862,6 +871,14 @@ def chunk_process(path, mode, parent):
targetSize = 419430400
if options.batchsplit == 2 and mode == 2:
mode = 3
if options.batchsplit == 1 and mode == 2:
with os.scandir(path) as it:
for entry in it:
if not entry.name.startswith('.') and entry.is_dir():
if getDirectorySize(os.path.join(path, entry)) > targetSize:
flattenTree(path)
mode = 1
break
if mode < 3:
for root, dirs, files in walkLevel(path, 0):
for name in files if mode == 1 else dirs: