import os from pathlib import Path from zipfile import ZipFile import shutil 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()