hect0x7 / JMComic-Crawler-Python

Python API for JMComic | 提供Python API访问禁漫天堂,同时支持网页端和移动端 | 禁漫天堂GitHub Actions下载器🚀
https://jmcomic.readthedocs.io/zh-cn/latest/option_file_syntax/#
MIT License
792 stars 1.85k forks source link

单独下载一个章节 #120

Closed hect0x7 closed 9 months ago

hect0x7 commented 1 year ago

✨前情提要✨

1. 铺垫概念

2. 代码版本

3. 确定需求

hect0x7 commented 1 year ago

需求1:下载photo_id为290266的photo(不需要知道这个photo属于哪个album)

实现代码:

from jmcomic import *
option = create_option('myoption.yml')

download_photo(290266, option)
# 注意是 download_`photo`
# 下载整个本子使用的是 download_album
# 下载一个章节使用的是 download_photo

myoption.yml的内容如下:

dir_rule:
  rule: Bd_Ptitle
  base_dir: D:/jmcomic/assets/download/

download:
  image:
    suffix: .jpg

client:
  domain:
    - 18comic.vip

上述代码只会请求photo-290266和album-145504,以及需要下载的图片,除此之外没有额外的请求,也不会请求这个本子的其他章节。这一点从下面的程序输出可以看出:

2023-09-01 20:14:01:【html】https://18comic.vip/photo/290266
2023-09-01 20:14:02:【html】https://18comic.vip/album/145504
2023-09-01 20:14:04:【photo.before】开始下载章节: 290266 (145504[103/104]), 标题: [健身教练 103 危急時刻出現的以晨], 图片数为[36]
2023-09-01 20:14:04:【image.before】图片准备下载: 290266/00003.webp [3/36], [https://cdn-msp.18comic.vip/media/photos/290266/00003.webp] → [D:/jmcomic/assets/download/健身教练 103 危急時刻出現的以晨/00003.jpg]
2023-09-01 20:14:05:【image.after】图片下载完成: 290266/00003.webp [3/36], [https://cdn-msp.18comic.vip/media/photos/290266/00003.webp] → [D:/jmcomic/assets/download/健身教练 103 危急時刻出現的以晨/00003.jpg]
..............省略其他图片的debug信息
2023-09-01 20:14:10:【photo.after】章节下载完成: [290266] (145504[103/104])
进程已结束,退出代码为 0
hect0x7 commented 1 year ago

需求2:假设还是要下载145504这个本子,但是只下载在290266之后的章节

实现代码:

from jmcomic import *
option = create_option('myoption.yml')

myoption.yml的内容如下(其他配置有需要同上,可以自行增加):

plugin: # 配置插件
  after_init:
    - plugin: find_update # 使用find_update插件
      kwargs:
        145504: 290266 # 配置要检查的本子(145504),以及该本子从哪个章节以后开始下载章节(290266)

程序输出内容如下:

2023-09-01 20:26:28:【plugin.kwargs】插件参数类型转换: 145504 (<class 'int'>) -> 145504 (<class 'str'>)
2023-09-01 20:26:28:【plugin.invoke】调用插件: [find_update]
2023-09-01 20:26:28:【html】https://18comic.vip/album/145504
2023-09-01 20:26:31:【album.before】本子获取成功: [145504], 作者: [G.HO], 章节数: [104], 总页数: [3598], 标题: [健身教练 / もしも、幼馴染を抱いたなら / Fitness], 关键词: [['完結', '韩漫', '上柱香再走', '以晨:我爹呢', '你妈真香', '連載中', '肌肉豪名不虚传']]
2023-09-01 20:26:31:【html】https://18comic.vip/photo/291640
2023-09-01 20:26:32:【photo.before】开始下载章节: 291640 (145504[104/104]), 标题: [健身教练 完結], 图片数为[41]
........省略图片的debug输出
2023-09-01 20:26:37:【photo.after】章节下载完成: [291640] (145504[104/104])
2023-09-01 20:26:37:【album.after】本子下载完成: [145504]

进程已结束,退出代码为 0

可以看出来,依旧只会请求一次本子html,一次章节html,以及需要下载的图片。

hect0x7 commented 1 year ago

上述代码都可以重复运行,因为默认情况下开启了配置项-【磁盘缓存】,下载过的就不会重新下载,也不会请求禁漫服务器。 因此不用担心重复运行代码对禁漫服务器造成额外压力。

zursoe commented 9 months ago

我是fork以后,在GitHub上编辑usage/workflow_download.py,使用workflow下载。 下载整本没问题,下载章节就只会下载一个空文件。 image

hect0x7 commented 9 months ago

我是fork以后,在GitHub上编辑usage/workflow_download.py,使用workflow下载。 下载整本没问题,下载章节就只会下载一个空文件。 image

已修复,重新fork下就可以用了