import os.path import re from Comics import settings from opencc import OpenCC class ComicPath: PREFIX_SCRAMBLE = "scramble=" @classmethod def getDirComicChapter(cls): return None @classmethod def getFileScrambleImageName(cls,count,block,suffix=".jpg"): return cls.PREFIX_SCRAMBLE+str(block)+"_"+str(count)+suffix @classmethod def getFileScrambleImageSave(cls,file,relative=False, is_prefix=True): file_name = str(file).split("_")[-1] if relative: file_name = os.path.basename(file_name) if relative == "fullpath": file_name = os.path.join(os.path.dirname(file), file_name) if not is_prefix: return file_name.split(".")[0] else: return file_name #繁体中文转简体中文 @classmethod def chinese_convert(cls, text,convert='t2s'): return OpenCC(convert).convert(str(text)) #处理成符合规定的文件名 @classmethod def fix_file_name(cls, filename, replace=None): if not isinstance(filename, str): return filename in_tab = r'[?*/\|.:><]' str_replace = "" if replace is not None: str_replace = replace filename = re.sub(in_tab, str_replace, filename) count = 1 while True: str_file = filename[0-count] if str_file == " ": count += 1 else: filename = filename[0:len(filename)+1-count] break return filename @classmethod def get_file_path(cls, item, result_type="image", file=None, convert=False): PROJECT = item[settings.PROJECT_KEY][0] if not convert: name = item['name'] chapter = item['chapter'] else: name = cls.fix_file_name(cls.chinese_convert(item['name'])) chapter = cls.fix_file_name(cls.chinese_convert(item['chapter'])) if result_type == "image": if os.path.sep not in file: file = os.path.join(PROJECT, "images", name, chapter, file) elif result_type == "comic_info": file = os.path.join(PROJECT, "images", name, chapter) elif result_type == "cbz_icon": file = os.path.join(settings.CBZ_EXPORT_PATH, PROJECT, name, chapter+".jpg") elif result_type == "down_icon": file = os.path.join(settings.IMAGES_STORE, cls.get_file_path(item=item, result_type="icon")) elif result_type == "icon": file = os.path.join(PROJECT, "icons", name+".jpg") elif result_type == "cbz": file = os.path.join(settings.CBZ_EXPORT_PATH, PROJECT, name, chapter+".CBZ") elif result_type == "images_dir": file = os.path.join(settings.IMAGES_STORE, PROJECT, "images", name, chapter) return file