适用于 NoneBot2 的 JM(禁漫天堂) 插件,支持分页搜索、下载漫画并上传群文件、查看漫画元信息、漫画文件缓存及定时清理等功能。
git clone https://github.com/X-Zero-L/jmhelper.git
或者使用 git 子模块
git submodule add https://github.com/X-Zero-L/jmhelper.git path/to/plugins/jmhelper
- 如果你使用 uv, 请使用以下命令
uv add -r path/to/plugins/jmhelper/requirements.txt
- 如果你不知道 uv 是什么,请查看 uv
- 如果你不想使用 uv,那么你可以使用以下命令
pip install -r requirements.txt
- 复制插件目录中的
option.example.yml
为option.yml
:
cp option.example.yml option.yml
- 编辑
option.yml
文件,修改以下关键配置:
client.postman.meta_data.proxies
: 设置代理(必须,不然可能无法访问)dir_rule.base_dir
: 设置下载和 PDF 输出的根目录, 注意和pdf_dir
保持一致
主要配置项解释:
client:
impl: html # 客户端实现,html(网页端)或api(APP端)
domain: # 可用域名列表
- 18comic.vip
- 18comic.org
postman:
meta_data:
proxies: 127.0.0.1:7890 # 代理设置,根据你的环境修改
download:
cache: true # 是否启用缓存
image:
decode: true # 是否解码图片
suffix: .jpg # 图片格式
dir_rule:
base_dir: /your/path/to/download # 下载根目录,必须修改
rule: Bd_Ptitle # 目录结构规则
# 插件的配置示例
plugins:
after_photo:
# 把章节的所有图片合并为一个pdf的插件
# 使用前需要安装依赖库: [pip install img2pdf]
- plugin: img2pdf
kwargs:
pdf_dir: /your/path/to/download # pdf存放文件夹,和dir_rule.base_dir保持一致
filename_rule: Pid # pdf命名规则,P代表photo, id代表使用photo.id也就是章节id
after_album:
# 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: /your/path/to/download # pdf存放文件夹,和dir_rule.base_dir保持一致
filename_rule: Aid # pdf命名规则,A代表album, id代表使用album.id也就是本子id
- 配置项详情请看 jmcomic 项目的文档
- 如果你使用 docker 部署 nonebot/llonebot/napcat 等,建议这里的下载目录都对等挂载,不然你只能自己修改插件代码了 🤭
- 本插件每天凌晨 3 点会清理今天之前的下载文件,所以请保证您输入的下载目录仅用于 jm 资源的下载,如果您不希望清理文件,请在环境变量中设置
JM_CLEAN=False
- 由于渲染图片时会用到漫画对应的封面图,如果你无法正常访问对应地址,或速度较慢,请在环境变量设置
htmlrender_proxy_host
,具体看nonebot-plugin-htmlrender
插件注册了以下指令:
/jm [漫画ID]
- 下载并转换指定 ID 的漫画,上传 PDF 文件/jmt [漫画ID]
- 查看指定 ID 的漫画元信息,如标题、作者、标签等/jms [关键词] [页码]
- 搜索关键词,返回搜索结果,默认第一页/jmh
- 查看帮助信息
示例:
/jm 123456
/jmt 123456
/jms genshin
/jmh
- 请确保配置了正确的代理设置,否则可能无法访问资源
- 确保机器人有上传群文件的权限
- 部分敏感内容需要在
option.yml
中配置 cookies 才能下载 - 请合理使用,避免频繁请求造成服务器压力
- 虽然本插件使用了
nonebot_plugin_alconna
,但是文件上传接口使用的是 onebot11 的,所以不支持其他协议 😀 - 如果你需要日志记录,请看logfire
jmhelper/
├── __init__.py # 插件主入口
├── config.py # 配置定义
├── converter.py # PDF转换器
├── downloader.py # 下载器
├── utils.py # 工具函数
└── option.example.yml # 配置示例