import json,re from opencc import OpenCC from queue import Queue from utils.OldUtils import OldUtils class Comic: #章节名 漫画名 编号 概述 作者 (chapter,comic_name,number,dep,author) = [None,None,None,None,None] #流派 语言 年龄分级 标签 总页数 (genre,language,agerating,tags,page_count) = [None,None,None,None,None] #页数 出版社 年 月 日 (pages,cbs,year,month,day) = [None,None,None,None,None] #主页 别名 (homepage,comic_names) = [None,None] CURRENT_DOWN_LINK = None #繁体中文转简体中文 @classmethod def ChineseConvert(cls, text,convert='t2s'): return OpenCC(convert).convert(str(text)) #处理成符合规定的文件名 @classmethod def fixFileName(cls,filename,replace=None): if not isinstance(filename,str): return filename intab = r'[?*/\|.:><]' str_replace = "" if replace != None: str_replace = replace filename = re.sub(intab, 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 setValue(cls,value): if value != None: value = cls.ChineseConvert(value) return value @classmethod def getValue(cls,dict,exec=None): if exec != None: return cls.parseExec(dict,exec=exec) return dict @classmethod def getChapter(cls): return cls.chapter @classmethod def getComicName(cls): return cls.comic_name @classmethod def getNumber(cls): return cls.number #章节名 @classmethod def setChapterName(cls,value,exec=None): value = cls.fixFileName(cls.parseExec(value,exec=exec)) OldUtils.setOldChapter(value) cls.chapter = cls.setValue(value) @classmethod def getChapterName(cls): return cls.getValue(cls.chapter) #漫画名 @classmethod def setComicName(cls,value,exec=None): value = cls.fixFileName(cls.parseExec(value,exec=exec)) OldUtils.setOldComicName(value) cls.comic_name = cls.setValue(value) @classmethod def getComicName(cls): return cls.getValue(cls.comic_name) #编号 @classmethod def setNumber(cls,value): cls.number = cls.setValue(value) @classmethod def getNumber(cls): return cls.getValue(cls.number) #概述 @classmethod def setDep(cls,value,exec=None): cls.dep = cls.setValue(cls.parseExec(value,exec=exec)) @classmethod def getDep(cls): return cls.getValue(cls.dep) #作者 @classmethod def setAuthor(cls,value): cls.author = cls.setValue(value) @classmethod def getAuthor(cls): return cls.getValue(cls.author) #流派 @classmethod def setGenre(cls,value): cls.genre = cls.setValue(value) @classmethod def getGenre(cls): return cls.getValue(Comic.genre) #语言 @classmethod def setLanguage(cls,value): cls.language = cls.setValue(value) @classmethod def getLanguage(cls): return cls.getValue(Comic.language) #年龄分级 @classmethod def setAgeRating(cls,value): cls.agerating = cls.setValue(value) @classmethod def getAgeRating(cls): return cls.getValue(Comic.agerating) #标签 @classmethod def setTags(cls,value): cls.tags = cls.setValue(value) @classmethod def getTags(cls): return cls.getValue(Comic.tags) #总页数 @classmethod def setPageCount(cls,value): cls.page_count = cls.setValue(value) @classmethod def getPageCount(cls): return cls.getValue(Comic.page_count) #主页 (homepage,icon,list_chapter,chapter_imgs, update_at,current_chapter_img,file_chapter_imgs) = [None,None,None,None,None,None,None] @classmethod def parseExec(cls,data,exec,item=True): if data !=None and exec != None: dots = str(exec).split(".") if not isinstance(data,dict): data = json.loads(data) for dot in dots: data = data.get(dot) return data @classmethod def setHomePage(cls,value): cls.homepage = value @classmethod def getHomePage(cls): return cls.homepage @classmethod def setIcon(cls,value): cls.icon = value @classmethod def getIcon(cls): return cls.icon @classmethod def setListChapter(cls,value): cls.list_chapter = value @classmethod def getListChapter(cls): return cls.list_chapter @classmethod def getLenChapters(cls): return len(cls.list_chapter) @classmethod def setChapterImgs(cls,value,exec=None,item=None): cls.chapter_imgs = cls.parseExec(value,exec=exec,item=item) @classmethod def getChapterImgs(cls): return cls.chapter_imgs @classmethod def setUpdateAt(cls,value): cls.update_at = value @classmethod def getUpdateAt(cls): return cls.update_at @classmethod def setCurrentChapterImg(cls,value): cls.current_chapter_img = value @classmethod def getCurrentChapterImg(cls): return cls.current_chapter_img @classmethod def setChapterFilesName(cls,value): cls.file_chapter_imgs= value @classmethod def getChapterFilesName(cls): return cls.file_chapter_imgs @classmethod def setCurrentDownLink(cls,value): cls.CURRENT_DOWN_LINK = value @classmethod def getCurrentDownLink(cls): return cls.CURRENT_DOWN_LINK class ListComic: LIST_COMIC_QUEUE = Queue() (LIST_COMIC_NAME,LIST_COMIC_LINK,LIST_COMIC_UPDATEAT) = [None,None,None] @classmethod def setListComicsLinksUpdateAt(cls,names,links,update_at): if isinstance(names,list) and isinstance(links,list) and isinstance(update_at,list): for x in range(0,len(names)): cls.LIST_COMIC_QUEUE.put([names[x],links[x],update_at[x]]) @classmethod def getListComicsLinksUpdateAt(cls): if cls.LIST_COMIC_NAME != None and cls.LIST_COMIC_LINK != None: cls.setListComicsLinksUpdateAt(cls.LIST_COMIC_NAME,cls.LIST_COMIC_LINK,cls.LIST_COMIC_UPDATEAT) (cls.LIST_COMIC_NAME,cls.LIST_COMIC_LINK,cls.LIST_COMIC_UPDATEAT) = [None,None,None] return cls.LIST_COMIC_QUEUE.get(False) @classmethod def addListComicChapterLink(cls,name,link,update_at): if name != None and link != None: cls.LIST_COMIC_QUEUE.put(name,link,update_at) @classmethod def getListValue(cls,result,type,start_add=None,result_type="list"): if result == None: return None if type == None: return result if result_type == "list" and type != None: data = [] for x in range(0, len(result)): if start_add != None: data.append(start_add+result[x].get(type)) else: data.append(result[x].get(type)) return data return result @classmethod def setListComicName(cls,value,type=None): cls.LIST_COMIC_NAME = cls.getListValue(value,type) @classmethod def getListComicName(cls): return cls.LIST_COMIC_NAME @classmethod def setListComicChapterLink(cls,value,type=None,start_add=None): cls.LIST_COMIC_LINK = cls.getListValue(value,type,start_add) @classmethod def getListComicChapterLink(cls): return cls.LIST_COMIC_LINK @classmethod def setListComicUpdateAt(cls,value,type=None): cls.LIST_COMIC_UPDATEAT = cls.getListValue(value,type) @classmethod def getListComicUpdateAt(cls): return cls.LIST_COMIC_UPDATEAT @classmethod def getListComicChapterLink(cls): return cls.LIST_COMIC_QUEUE.get(False) #domain end....