From 234afcff7af2518b0ddd5fedb2ab7fccbff8f863 Mon Sep 17 00:00:00 2001 From: caiwx86 Date: Sun, 11 Dec 2022 22:12:06 +0800 Subject: [PATCH] fix --- utils/ComicUtils.py | 88 ---------------------------------------- utils/comic/ComicInfo.py | 17 +++++++- utils/entity/RouMan.py | 30 +++++++------- 3 files changed, 31 insertions(+), 104 deletions(-) delete mode 100644 utils/ComicUtils.py diff --git a/utils/ComicUtils.py b/utils/ComicUtils.py deleted file mode 100644 index bd86b24..0000000 --- a/utils/ComicUtils.py +++ /dev/null @@ -1,88 +0,0 @@ -from fake_useragent import UserAgent -import requests, os, shutil,re,json -from lxml import html -from utils.comic.ComicStr import comicStr -from utils.FileUtils import fileUtils - -class comicUtils: - comic_title = None - temp_url = "" - - @classmethod - def setKeyValue(cls,name, c_value,bool_list=None): - count = 0 - len_value = len(c_value) - if bool_list: - count += 1 - if cls.comics.get(count) == None: - cls.comics[count] = {name: c_value} - else: - cls.comics[count].update({name: c_value}) - else: - for x in range(0, len_value): - value = c_value[x] - count += 1 - if cls.comics.get(count) == None: - cls.comics[count] = {name: value} - else: - cls.comics[count].update({name: value}) - - @classmethod - def listImgDownload(cls,save_dir_name, links): - print("save_dir_name:", save_dir_name) - print("list_link:", links) - len_links = len(links) - count = 1 - for link in links: - print("link:",count,":", link) - file_cout = ("{:0>3d}".format(count)) - file_path = os.path.join("Comic", save_dir_name,str(file_cout)+".jpg") - netUtils.download(link, file_path) - count += 1 - - @classmethod - def downloadComic(cls,comic_name): - comic = fileUtils.read_comic(comic_name) - list_img = comic.get(comicStr.list_img) - len_list_img = len(list_img) - icon = comic.get(comicStr.icon) - for x in range(0, len_list_img): - chapter_img = list_img[x] - keys = chapter_img.keys() - for key in keys: - if not icon == None: - icon = netUtils.downloadComicIcon(comic_name,key,icon) - else: - print("icon已跳过") - netUtils.downloadComicChapterImages(comic_name, key, chapter_img[key]) - - ''' - 传入 comic_name读取配置文件中的各类信息 - 输出 "ComicInfo.xml" 并将图片打包成CBZ - ''' - @classmethod - def packComicCBZ(cls,comic_name): - data = fileUtils.read_comic(comic_name) - title = data.get(comicStr.title) - author = data.get(comicStr.author) - author = str(author).replace("/",",").replace(" ","") - dep = data.get(comicStr.dep) - chapters = data.get(comicStr.chapters) - tags = "韩漫" - c_publisher = "韩漫" - print("title:", title,"author=",author,"dep=",dep,"chapters:",chapters) - for chapter in chapters: - CBZUtils.writeComicInfoXML(title, chapter, dep, author, - tags, c_publisher) - CBZUtils.packComicCBZ(title,chapter) - - ''' - 获取网站主页 - ''' - @classmethod - def getBaseUrl(cls,url): - num = 3 - index = 0 - for x in range(0, num): - index = str(url).find("/",index)+1 - return url[0:index-1] \ No newline at end of file diff --git a/utils/comic/ComicInfo.py b/utils/comic/ComicInfo.py index 4defdc5..85c26f2 100644 --- a/utils/comic/ComicInfo.py +++ b/utils/comic/ComicInfo.py @@ -277,4 +277,19 @@ class comicInfo(): def nextExistsGetPath(cls,msg): path = cls.nextSavePath(msg) return os.path.exists(path) - \ No newline at end of file + + @classmethod + def saveConfComicData(cls,fileName,data,comicName=None): + if not comicName == None: + cls.setComicName(comicName) + dirConfComic = cls.getDirConfComic() + save_path = os.path.join(dirConfComic,fileName) + cls.file_save(save_path, data) + + @classmethod + def getPathInitConfComicData(cls,fileName,comicName=None): + if not comicName == None: + cls.setComicName(comicName) + dirConfComic = cls.getDirConfComic() + save_path = os.path.join(dirConfComic,fileName) + return save_path \ No newline at end of file diff --git a/utils/entity/RouMan.py b/utils/entity/RouMan.py index 3df7e0a..8da21d9 100644 --- a/utils/entity/RouMan.py +++ b/utils/entity/RouMan.py @@ -1,32 +1,37 @@ import json,os,time,random,shutil -from utils.ComicUtils import comicUtils from utils.NetUtils import netUtils from utils.HtmlUtils import htmlUtils from utils.ImageUtils import imageUtils from utils.comic.ComicInfo import comicInfo from utils.CBZUtils import CBZUtils from utils.downloader import download_images +from utils.entity.BaseComicEntity import baseComic + class comicEntity: - + @classmethod - def downladsComcis(cls,url): - #漫画名 + def baseComicData(cls,url): data = htmlUtils.xpathData('//script[@id="__NEXT_DATA__"]/text()',url=url) - # # data = json.loads(data[0]) data = data.get("props") x = data.get("pageProps") + return x + + @classmethod + def downladsComcis(cls,url): + #漫画名 + x = cls.baseComicData(url) books = x.get("books") len_books = len(books) baseUrl = comicInfo.getBaseUrl(url) for x in range(0, len_books): book = books[x] - #https://rm01.xyz/books/052426c3-ec7d-4035-b614-3c9290ee625b book_id = book.get("id") book_name = book.get("name") - comicHref = baseUrl+"/books/"+book_id + updatedAt = book.get("updatedAt") + comicHref = baseUrl+"/books/"+book_id random_int = random.uniform(5,20) - wait = print(f"{random_int}秒后开始下载 漫画:{book_name}") + print(f"{random_int}秒后开始下载 漫画:{book_name}") time.sleep(random_int) cls.oneComic(comicHref, random.uniform(0,3)) @@ -131,12 +136,7 @@ class comicEntity: @classmethod def comicChapterDownload(cls,chapter_url): - #漫画名 - data = htmlUtils.xpathData('//script[@id="__NEXT_DATA__"]/text()',url=chapter_url) - # # - data = json.loads(data[0]) - data = data.get("props") - x = data.get("pageProps") + x = cls.baseComicData(chapter_url) bookName = x.get("bookName") chapterName = x.get("chapterName") #fileUtils.saveConfComicChapterInfo(chapterName,x,bookName) @@ -156,7 +156,7 @@ class comicEntity: comicInfo.writeComicInfoXML(chapterName) if not chapterAPIPath == None: - base_url = comicUtils.getBaseUrl(chapter_url) + base_url = comicInfo.getBaseUrl(chapter_url) chapterAPIUrl = base_url+chapterAPIPath data = htmlUtils.getJSON(chapterAPIUrl) data = data.get("chapter")