PyComicPackRouMan/utils/CBZUtils.py
2022-12-11 22:37:01 +08:00

59 lines
2.2 KiB
Python

import os
from pathlib import Path
from zipfile import ZipFile
from utils.comic.ComicInfo import comicInfo
class CBZUtils:
@classmethod
def readDirsOrFiles(cls,dir,type):
data = []
files = os.listdir(dir)
for file in files:
path = os.path.join(dir,file)
if type == "files" and os.path.isfile(path):
data.append(path)
if type == "dirs" and os.path.isdir(path):
data.append(path)
return data
@classmethod
def zip_compression(cls,source_dir, target_file):
msg = {}
target_dir = os.path.dirname(target_file)
if not os.path.exists(target_dir):
os.makedirs(target_dir)
if not os.path.exists(target_file):
with ZipFile(target_file, mode='w') as zf:
for path, dir_names, filenames in os.walk(source_dir):
path = Path(path)
arc_dir = path.relative_to(source_dir)
y = 0
for filename in filenames:
y = y + 1
print("打包中:" + str(y) + "/" + str(len(filenames)), os.path.join(source_dir, filename))
zf.write(path.joinpath(filename), arc_dir.joinpath(filename))
zf.close()
print("打包完成:", target_file)
#md5_file = md5(target_file)
#print("md5:", md5_file)
#msg[target_file] = md5_file
return msg
else:
print("文件已存在:", target_file)
@classmethod
def packAutoComicChapterCBZ(cls):
chapter_path = comicInfo.getDirComicChapter()
packCBZ_path = comicInfo.getDirCBZComicChapter()
if os.path.exists(chapter_path):
dirs = os.listdir(chapter_path)
for file in dirs:
if file.startswith("scramble="):
try:
os.remove(file)
except:
print(f"删除 {file} 发生错误,已跳过")
cls.zip_compression(chapter_path,packCBZ_path+".CBZ")
comicInfo.nextCBZToDoneChapter()