PyComicPackRouMan/common/Comic.py
2023-04-04 06:29:49 +08:00

206 lines
7.6 KiB
Python

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....