62 lines
2.6 KiB
Python
62 lines
2.6 KiB
Python
import json
|
|
from utils.HtmlUtils import htmlUtils
|
|
from utils.FileUtils import imageUtils
|
|
from utils.comic.ComicInfo import comicInfo
|
|
from utils.Ntfy import ntfy
|
|
|
|
class comicCommon:
|
|
@classmethod
|
|
def baseComicData(cls,url,update=False):
|
|
data = htmlUtils.xpathData('//script[@id="__NEXT_DATA__"]/text()',url=url,update=update)
|
|
data = json.loads(data[0])
|
|
data = data.get("props")
|
|
x = data.get("pageProps")
|
|
return x
|
|
|
|
@classmethod
|
|
def comicChapterDownload(cls,chapter_url):
|
|
x = cls.baseComicData(chapter_url,update=True)
|
|
book_name = x.get("bookName")
|
|
chapter_name = x.get("chapterName")
|
|
#fileUtils.saveConfComicChapterInfo(chapterName,x,bookName)
|
|
#if comicInfo.nextExistsGetPath("info_"):
|
|
# print(f"{bookName} {chapterName} info文件已存在跳过")
|
|
alias = x.get("alias")
|
|
description = x.get("description")
|
|
images = x.get("images")
|
|
chapter_api_path = x.get("chapterAPIPath")
|
|
comicInfo.setComicName(book_name)
|
|
comicInfo.setChapterName(chapter_name)
|
|
comicInfo.setDep(description)
|
|
|
|
if chapter_api_path != None:
|
|
chapter_api_path = str(chapter_api_path).encode('utf-8').decode('unicode_escape')
|
|
base_url = comicInfo.getBaseUrl(chapter_url)
|
|
chapter_api_url = base_url+chapter_api_path
|
|
ntfy.sendMsg(f"chapterApiUrl= {chapter_api_url}",alert=False)
|
|
data = htmlUtils.getJSON(chapter_api_url,update=True)
|
|
if data != None:
|
|
data = data.get("chapter")
|
|
(chapter_name,images) = [data.get("name"),data.get("images")]
|
|
if images == None:
|
|
ntfy.sendMsg(f"未获取到章节图像 comic_name={book_name} chapter={chapter_name}")
|
|
|
|
count = 1
|
|
list_img = []
|
|
list_file_name = []
|
|
for image in images:
|
|
image_src = image.get("src")
|
|
scramble = image.get("scramble")
|
|
count_image = "{:0>3d}".format(count)
|
|
list_img.append(image_src)
|
|
image_src_prefix = "."+str(image_src).split(".")[-1]
|
|
if scramble:
|
|
su = "."+str(image_src).split(".")[-1]
|
|
de_str = str(image_src).split("/")[-1].replace(su,"==")
|
|
blocks = imageUtils.encodeImage(de_str)
|
|
count_image = "scramble="+str(blocks)+"_"+count_image
|
|
list_file_name.append(count_image+image_src_prefix)
|
|
count+=1
|
|
#print("count_all_img=", count)
|
|
#netUtils.downloadComicChapterImages(list_img,scrambles=list_scramble)
|
|
comicInfo.comicChapterDownload(list_img,list_file_name) |