114 lines
4.2 KiB
Python
114 lines
4.2 KiB
Python
import os.path,logging
|
|
import re,requests,time
|
|
from datetime import date
|
|
from Comics import settings
|
|
from opencc import OpenCC
|
|
class ComicPath:
|
|
PREFIX_SCRAMBLE = "scramble="
|
|
|
|
@classmethod
|
|
def getYearMonthDay(cls):
|
|
today = date.today()
|
|
# 格式化为年-月-日
|
|
return today.strftime("%Y%m%d")
|
|
|
|
@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 new_file_name(cls, name): return cls.fix_file_name(cls.chinese_convert(name))
|
|
|
|
@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 == "down_cache_icon":
|
|
file = os.path.join(settings.IMAGES_STORE, cls.get_file_path(item=item, result_type="icon_cache"))
|
|
elif result_type == "icon":
|
|
file = os.path.join(PROJECT, "icons", name, name+".jpg")
|
|
elif result_type == "icon_cache":
|
|
file = os.path.join(PROJECT, "icons", ".cache", 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
|
|
|
|
@classmethod
|
|
def path_cbz(cls, item):
|
|
return cls.get_file_path(item, result_type="cbz", convert=True)
|
|
|
|
|
|
class ntfy:
|
|
@classmethod
|
|
def sendMsg(cls, msg,alert=False,sleep=None,error=None):
|
|
try:
|
|
print(f"#ntfy: {msg}")
|
|
if alert:
|
|
requests.post("https://ntfy.caiwenxiu.cn/PyComic",
|
|
data=msg.encode(encoding='utf-8'))
|
|
except:
|
|
print(f"#ntfy error: {msg}")
|
|
if sleep != None:
|
|
logging.info(f'等待{sleep}秒后进入下一阶段')
|
|
time.sleep(int(sleep))
|
|
if error != None:
|
|
print(f"#ntfy Error: {error}")
|
|
return False
|
|
else:
|
|
return True |