JMComic-Crawler-Python/assets/docs/sources/option_file_syntax.md

270 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置文件指南
## 1. 配置前需知
* option有`默认值`,你配置文件中的配置项会覆盖`默认值`。因此你只需要添加感兴趣的配置项即可。
* 你也可以使用下面的代码来得到option的默认值。你可以删除其中的大部分配置项只保留你要覆盖的配置项。
```python
from jmcomic import JmOption
JmOption.default().to_file('./option.yml') # 创建默认option导出为option.yml文件
```
## 2. option常规配置项
```yaml
# 开启jmcomic的日志输出默认为true
# 对日志有需求的可进一步参考文档 → https://jmcomic.readthedocs.io/en/latest/tutorial/11_log_custom/
log: true
# 配置客户端相关
client:
# impl: 客户端实现类不配置默认会使用JmModuleConfig.DEFAULT_CLIENT_IMPL
# 可配置:
# html - 表示网页端
# api - 表示APP端
# APP端不限ip兼容性好网页端限制ip地区但效率高
impl: html
# domain: 域名配置,默认是 [],表示运行时自动获取域名。
# 可配置特定域名,如下:
# 程序会先用第一个域名如果第一个域名重试n次失败则换下一个域名重试以此类推。
domain:
- jm-comic.org
- jm-comic2.cc
- 18comic.vip
- 18comic.org
# retry_times: 请求失败重试次数默认为5
retry_times: 5
# postman: 请求配置
postman:
meta_data:
# proxies: 代理配置,默认是 system表示使用系统代理。
# 以下的写法都可以:
# proxies: null # 不使用代理
# proxies: clash
# proxies: v2ray
# proxies: 127.0.0.1:7890
# proxies:
# http: 127.0.0.1:7890
# https: 127.0.0.1:7890
proxies: system
# cookies: 帐号配置,默认是 null表示未登录状态访问JM。
# 禁漫的大部分本子,下载是不需要登录的;少部分敏感题材需要登录才能看。
# 如果你希望以登录状态下载本子最简单的方式是配置一下浏览器的cookies
# 不用全部cookies只要那个叫 AVS 就行。
# 特别注意!!!(https://github.com/hect0x7/JMComic-Crawler-Python/issues/104)
# cookies是区分域名的
# 假如你要访问的是 `18comic.vip`那么你配置的cookies也要来自于 `18comic.vip`,不能配置来自于 `jm-comic.club` 的cookies。
# 如果你发现配置了cookies还是没有效果大概率就是你配置的cookies和代码访问的域名不一致。
cookies:
AVS: qkwehjjasdowqeq # 这个值是乱打的,不能用
# 下载配置
download:
cache: true # 如果要下载的文件在磁盘上已存在不用再下一遍了吧默认为true
image:
decode: true # JM的原图是混淆过的要不要还原默认为true
suffix: .jpg # 把图片都转为.jpg格式默认为null表示不转换。
threading:
# image: 同时下载的图片数默认是30张图
# 数值大,下得快,配置要求高,对禁漫压力大
# 数值小,下得慢,配置要求低,对禁漫压力小
# PS: 禁漫网页一次最多请求50张图
image: 30
# photo: 同时下载的章节数不配置默认是cpu的线程数。例如8核16线程的cpu → 16.
photo: 16
# 文件夹规则配置,决定图片文件存放在你的电脑上的哪个文件夹
dir_rule:
# base_dir: 根目录。
# 此配置也支持引用环境变量,例如
# base_dir: ${JM_DIR}/下载文件夹/
base_dir: D:/a/b/c/
# rule: 规则dsl。
# 本项只建议了解编程的朋友定制,实现在这个类: jmcomic.jm_option.DirRule
# 写法:
# 1. 以'Bd'开头,表示根目录
# 2. 文件夹每增加一层,使用 '_' 或者 '/' 区隔
# 3. 用Pxxx或者Ayyy指代文件夹名意思是 JmPhotoDetail.xxx / JmAlbumDetail的.yyy。xxx和yyy可以写什么需要看源码。
#
# 下面演示如果要使用禁漫网站的默认下载方式,该怎么写:
# 规则: 根目录 / 本子id / 章节序号 / 图片文件
# rule: 'Bd / Aid / Pindex'
# rule: 'Bd_Aid_Pindex'
# 默认规则是: 根目录 / 章节标题 / 图片文件
rule: Bd_Ptitle
```
## 3. option插件配置项
* **插件配置中的kwargs参数支持引用环境变量语法为 ${环境变量名}**
```yaml
# 插件的配置示例
plugins:
after_init:
- plugin: usage_log # 实时打印硬件占用率的插件
kwargs:
interval: 0.5 # 间隔时间
enable_warning: true # 占用过大时发出预警
- plugin: login # 登录插件
kwargs:
username: un # 用户名
password: pw # 密码
- plugin: find_update # 只下载新章插件
kwargs:
145504: 290266 # 下载本子145504的章节290266以后的新章
- plugin: image_suffix_filter # 图片后缀过滤器插件,可以控制只下载哪些后缀的图片
kwargs:
allowed_orig_suffix: # 后缀列表,表示只想下载以.gif结尾的图片
- .gif
- plugin: replace_path_string # 字符串替换插件,直接对下载文件夹的路径进行文本替换
kwargs:
replace:
# {左边写你要替换的原文}: {右边写替换成什么文本}
aaa: bbb
kyockcho: きょくちょ
- plugin: client_proxy # 客户端实现类代理插件,不建议非开发人员使用
kwargs:
proxy_client_key: photo_concurrent_fetcher_proxy # 代理类的client_key
whitelist: [ api, ] # 白名单当client.impl匹配白名单时才代理
- plugin: auto_set_browser_cookies # 自动获取浏览器cookies详见插件类代码→AutoSetBrowserCookiesPlugin
kwargs:
browser: chrome
domain: 18comic.vip
# v2.5.0 引入的插件
# 可以启动一个服务器,可以在浏览器上查看本子
# 基于flask框架需要安装额外库: [pip install plugin_jm_server]
# 源码https://github.com/hect0x7/plugin-jm-server
- plugin: jm_server
kwargs:
password: '3333' # 服务器访问密码
base_dir: D:/a/b/c/ # 根目录默认使用dir_rule.base_dir
# 下面是高级配置,不配置也可以
# run下的参数是flask框架的app对象的run方法参数详见flask文档
run:
host: 0.0.0.0 # 默认接收所有ip的请求
port: 80 # 服务器端口默认为80
debug: false # 是否开启debug模式默认为false
# 支持重写背景图片,可以使用你喜欢的背景图片作为背景
img_overwrite:
bg.jpg: D:/浏览器的背景图
m_bg.jpeg: D:/移动设备浏览器的背景图
- plugin: subscribe_album_update # 自动订阅本子并下载、发送邮件通知的插件
kwargs:
download_if_has_update: true
email_notify: # 参数说明见下【发送qq邮件插件】
msg_from: aaa@qq.com
msg_to: aaa@qq.com
password: dkjlakdjlkas
title: album update !!!
content: album update !!!
album_photo_dict:
324930: 424507
after_album:
- plugin: zip # 压缩文件插件
kwargs:
level: photo # 按照章节,一个章节一个压缩文件
# level 也可以配成 album表示一个本子对应一个压缩文件该压缩文件会包含这个本子的所有章节
filename_rule: Ptitle # 压缩文件的命名规则
# 请注意⚠ [https://github.com/hect0x7/JMComic-Crawler-Python/issues/223#issuecomment-2045227527]
# filename_rule和level有对应关系
# 如果level=[photo], filename_rule只能写Pxxx
# 如果level=[album], filename_rule只能写Axxx
zip_dir: D:/jmcomic/zip/ # 压缩文件存放的文件夹
delete_original_file: true # 压缩成功后,删除所有原文件和文件夹
# 删除重复文件插件
# 参考 → [https://github.com/hect0x7/JMComic-Crawler-Python/issues/244]
- plugin: delete_duplicated_files
kwargs:
# limit: 必填表示对md5出现次数的限制
limit: 3
# 如果文件的md5的出现次数 >= limit是否要删除
# 如果delete_original_file不配置此插件只会打印信息不会执行其他操作
# 如果limit=1, delete_original_file=true 效果会是删除所有文件
delete_original_file: true
- plugin: send_qq_email # 发送qq邮件插件
kwargs:
msg_from: ${EMAIL} # 发件人
msg_to: aaa@qq.com # 收件人
password: dkjlakdjlkas # 发件人的授权码
title: jmcomic # 标题
content: jmcomic finished !!! # 内容
main:
- plugin: favorite_folder_export # 导出收藏夹插件
log: false
kwargs:
zip_enable: true # 对导出文件进行压缩
zip_filepath: ${JM_DOWNLOAD_DIR}/export.zip # 压缩文件路径
zip_password: ${ZIP_PASSWORD} # 压缩密码
before_photo:
- plugin: skip_photo_with_few_images # 跳过下载章节图片数量过少的章节。一些韩漫的章节是公告,没有实际内容,就可以用该插件来跳过下载这些章节。
kwargs:
at_least_image_count: 3 # 至少要有多少张图,才下载此章节
after_photo:
# 把章节的所有图片合并为一个pdf的插件
# 使用前需要安装依赖库: [pip install img2pdf]
- plugin: img2pdf
kwargs:
pdf_dir: D:/pdf/ # pdf存放文件夹
filename_rule: Pid # pdf命名规则P代表photo, id代表使用photo.id也就是章节id
# img2pdf也支持合并整个本子把上方的after_photo改为after_album即可。
# https://github.com/hect0x7/JMComic-Crawler-Python/discussions/258
# 配置到after_album时需要修改filename_rule参数不能写Pxx只能写Axx示例如下
- plugin: img2pdf
kwargs:
pdf_dir: D:/pdf/ # pdf存放文件夹
filename_rule: Aname # pdf命名规则A代表album, name代表使用album.name也就是本子名称
# 插件来源https://github.com/hect0x7/JMComic-Crawler-Python/pull/294
# long_img插件是把所有图片合并为一个png长图效果和img2pdf类似
- plugin: long_img
kwargs:
img_dir: D:/pdf/ # 长图存放文件夹
filename_rule: Aname # 长图命名规则,同上
# 请注意⚠
# 下方的j2p插件的功能不如img2pdf插件不建议使用。
# 如有图片转pdf的需求直接使用img2pdf即可下面的内容请忽略。
- plugin: j2p # 图片合并插件可以将下载下来的jpg图片合成为一个pdf插件
# 请注意⚠ 该插件的使用前提是下载下来的图片是jpg图片
# 因此,使用该插件前,需要有如下配置:下载图片格式转为jpg上文有解释过此配置
# download:
# image:
# suffix: .jpg
kwargs:
pdf_dir: D:/pdf/ # pdf存放文件夹
filename_rule: Pid # pdf命名规则
quality: 100 # pdf质量0 - 100
```