Skip to content

LangBot插件,用于JM漫画下载🧩,支持缓存,指定章节下载,文案匹配,定时撤回,关键词搜索,白名单管理✨

Notifications You must be signed in to change notification settings

AmethystTim/JM-PDF-plugin

Repository files navigation

JM PDF Plugin

一个基于LangBot的漫画下载插件🧩

将你想看的漫画转换为PDF,上传到QQ群聊/QQ私信中

支持缓存指定章节下载文案匹配定时撤回关键词搜索白名单管理

Status Python Version Contributors forks stars issues


✨ 插件特性

功能描述 实现情况
漫画转PDF
指定章节转换
匹配文案对应jmID
定时撤回
缓存漫画
关键词搜索
白名单管理
指令管理
定时撤回
获取分类/排行榜

⚙️ 插件架构

JM-PDF-plugin/
│
├── cells/                # 独立模块
│   ├── apicaller.py      # 消息平台API调用模块
│   ├── argsparser.py     # 参数解析模块
│   ├── controller.py     # 访问控制模块
│   ├── converter.py      # 转换器模块
│   └── downloader.py     # 下载器模块
│
├── utils/                # 实用工具模块
│   ├── cacheclener.py    # 缓存清理模块
│   ├── filehandler.py    # 文件处理模块
│   ├── searchhandler.py  # 站内搜索模块
│   └── rankhandler.py    # 排行榜模块
│
├── handlers/             # 指令处理模块
│   ├── jmmanga.py        # 处理漫画下载
│   ├── jmsearch.py       # 处理漫画搜索
│   ├── jmclear.py        # 处理缓存清理
│   └── jmrank.py         # 处理排行榜查询
│
├── config.yml            # JM下载配置文件
├── commands.yml          # 指令管理配置文件
├── docker.yml            # docker补丁配置文件
│
├── main.py               # 插件主程序入口
├── requirements.txt      # 依赖列表
│
└── README.md             # 项目说明文档

🧭 使用方法

1. 插件安装

方法一:管理员账号安装

配置完成 LangBot 主程序后使用管理员账号向机器人发送命令即可安装:

!plugin get https://github.com/AmethystTim/JM-PDF-plugin.git

或查看详细的安装说明

方法二:git安装(推荐)

进入Langbotplugins目录,使用git克隆仓库:

git clone https://github.com/AmethystTim/JM-PDF-plugin.git

方法三:插件市场安装

访问Langbot webui(默认为127.0.0.1:5300),进入插件市场,搜索JM-PDF-plugin进行安装


2. 网络配置

请根据你的消息平台进行网络配置

2.1 NapCat配置

  • 访问NapCat消息平台的webui(默认为http://127.0.0.1:6099
  • 网络配置栏目中新建HTTP服务器
  • 主机填写为127.0.0.1,端口填写为3000

Warning

请勿在网络配置中填写token,确保token一栏为空

2.2 Lagrange配置

  • appsettings.json中修改Implementations部分
  • 新增"Type": "HTTP"一项,具体配置参考如下:
"Implementations": [
    {
        "Type": "ReverseWebSocket",
        "Host": "127.0.0.1",
        "Port": 2280,
        "Suffix": "/ws",
        "ReconnectInterval": 5000,
        "HeartBeatInterval": 5000,
        "AccessToken": ""
    },
    {
        "Type": "Http",
        "Host": "127.0.0.1",
        "Port": 3000,
        "AccessToken": ""
    }
]

Note

目前Lagrange不支持在私聊中发送PDF文件,为体验所有功能,推荐使用NapCat消息平台

2.3 LLOneBot配置

  • 在注入版QQ中打开设置,进入LLOneBot栏目,进行网络配置
  • 启用HTTP服务,并将HTTP服务监听端口设置为3000

Tip

网络配置完成后可以使用curl 127.0.0.1:3000测试是否连通,出现

StatusCode        : 200
StatusDescription : OK
Content           : xxx is running/xxx 已启动

则说明网络配置成功

若发生端口冲突,请将端口修改为其他值,比如3001,同时将main.py文件

self.msg_platform = MsgPlatform(port=3000)

一行的端口3000修改为新端口值


3. 偏好配置

Note

由于LangBot v4.0之后采用清单文件来注册插件,所以此后的配置编写会在webui上进行

目前作者正在努力适配,LangBot v3.x的用户仍然使用配置文件进行配置

3.1 下载配置 config.yml

  • dir_rule部分:修改base_dir为你想存储漫画的目录,若使用Docker部署LangBot,请参考注释说明
  • client部分:若均无法访问可尝试用“#”注释掉client所有部分,使用默认配置的域名列表
  • download部分:一般情况下可忽略
  • plugins部分:大部分漫画都可以在无登录状态下访问/下载,但是有些漫画需要登录才可以查看,若有需要可以配置你的账号信息
# Github Actions 下载脚本配置
version: '2.0'

################################################
# 特别注意:                            
# 如果你是使用Docker部署LangBot的用户,请按照以下步骤修改配置文件:
#
# 将dir_rule中的base_dir一项修改为LangBot容器内的可达路径
#
# 根据LangBot的挂载配置,你目前可以在这两个目录下选择你想存储PDF的位置
#    - /app/data
#    - /app/plugins 
#
# 例如:"/app/plugins/JM-PDF-plugin/downloads/"
################################################

dir_rule:
  base_dir: "C:\\Users\\Hello\\Desktop\\downloads" # 漫画/PDF的存储目录(注意转义字符的使用)
  rule: Bd_Aid_Pindex

# 域名配置,若均无法访问可尝试用“#”注释client所有部分,以使用默认配置的域名列表
client:
  impl: api
  domain:
    api:
      - www.cdnmhws.cc
      - www.cdnuc.vip
      - www.cdnmhwscc.vip
      - www.cdnblackmyth.club

# 下载配置,无需关注
download:
  cache: true # 如果要下载的文件在磁盘上已存在,不用再下一遍了吧?
  image:
    decode: true # JM的原图是混淆过的,要不要还原?
    suffix: .jpg # 把图片都转为.jpg格式
  threading:
    # batch_count: 章节的批量下载图片线程数
    batch_count: 45

# jmcomic包插件项配置,非必需配置
plugins:
  after_init:
    - plugin: login # 登录插件,以下载某些需要登录才能下载的漫画,需要配置登录信息
      kwargs:
        username: your_username # 用户名
        password: your_password # 密码

Warning

如果使用MacOS部署NapCat,需要将base_dir一项修改为NapCat的缓存目录

/Users/<your_username>/Library/Containers/com.tencent.qq/Data/.config/QQ/NapCat/temp

否则无法进行PDF文件的发送


3.2 指令管理 commands.yml

  • whitelist部分:若要启用群聊白名单,请将enabled设置为true,并填入需要加入白名单的群聊id
  • commands部分:为了防止意外触发某些指令炸群,请根据你的实际需求禁用/激活指令,若要禁用某指令,请将对应值由true修改为false
  • 以上配置需要重载插件/重启bot后才会生效
# 插件指令管理

# 白名单机制,启用后仅允许白名单群聊/用户使用指令
whitelist: 
  # 是否启用白名单
  enabled: false
  # 白名单群聊/用户id
  groups: [
    114514,
  ]
  users: [
    1919810,
  ]

# 指令管理列表,若需禁用某指令,则将其对应值由true修改为false
commands: [
  # 指令:/jm [jmID] [chapter]
  "/jm [ID] [CHAPTER]": true,
  # 指令:/jm search [keyword]
  "/jm search [KEYWORD]": true,
  # 指令: 清除缓存
  "/jm clear": true,
  # 指令:文案匹配
  "[text]": false,
]

3.3 Docker相关配置 docker.yml

针对使用Docker部署Langbot的用户的配置,若不是使用Docker部署LangBot的用户,请忽略此项配置

  • docker_cfg部分:修改enabledtrue
  • host_base_dir部分:修改为宿主机上PDF的实际存储目录
################################################
# 特别注意:                            
# 如果你是使用Docker部署LangBot的用户,请按照以下步骤修改配置文件:
# 修改docker_cfg配置项
# - 将enabeld设置为true
# - 将host_base_dir修改为宿主机上PDF的实际存储目录
#
# 例如: "C:\\Users\\Hello\\Desktop\\downloads"
################################################

docker_cfg: # 非Docker部署LangBot用户请无视此项
  enabled: false # 是否使用Docker部署LangBot
  host_base_dir: "C:\\Users\\Hello\\Desktop\\downloads" # 宿主机上PDF的实际存储目录(注意转义字符的使用)

❓ 常见问题

Q A
漫画下载失败 1. 检查网络配置,推荐添加网络代理
2. 检查jmcomic包是否为最新版本,建议pip install -U jmcomic后重启bot(issue #23
3. 在config.ymlclientdomain一项中添加可用域名或将client全部注释掉以使用默认域名列表
langbot内置AI对话冲突 issue #4
控制台报错:无效的apikey 非插件报错,可能是LangBot的provider.json配置有误

有其他问题欢迎提issue或在交流群讨论


🤖 指令

指令 说明 参数 备注
/jm (help) 查看帮助信息 - 可选参数:help
/jm [jmID] [chapter] 下载漫画指定章节 jmID chapter chapter:指定章节,若不指定默认转换第一章
/jm search [keyword] 搜索漫画 keyword keyword:搜索关键字
/jm rank [duration] 查询排行榜 duration duration:排行榜时间范围,可选值:weekmonth,若不指定默认为week
/jm clear 清除缓存漫画与转化的PDF - -

📸 效果展示

单章节漫画

展开查看

多章节漫画

展开查看

文案匹配

展开查看

搜索漫画

展开查看

排行榜查询

展开查看

📜 参考项目

🥳 贡献者

contributors

⭐ Star Trend

如果你觉得这个插件还不错,欢迎给我们一个star!🥰

Stargazers over time

About

LangBot插件,用于JM漫画下载🧩,支持缓存,指定章节下载,文案匹配,定时撤回,关键词搜索,白名单管理✨

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages