1- # Pixiv 画师订阅插件
1+ # Pixiv 插画推送插件
22
3- 一个基于 HoshinoBot 的 Pixiv 画师订阅插件,支持自动推送订阅画师的最新作品到群聊 。
3+ 一个基于 HoshinoBot 的 Pixiv 插件,包含 ** 画师订阅 ** 和 ** Pixiv工具 ** 两个独立的服务,支持自动推送、作品预览、pixiv排行榜查询等功能 。
44
55## 功能特性
66
7- - ** 自动推送** :定时检查订阅画师的最新作品并推送到群聊
8- - ** 权限管理** :支持群管理员设置,普通用户只能查看
9- - ** R18 控制** :可选择是否推送 R18 内容
10- - ** 标签屏蔽** :支持屏蔽包含特定标签的作品
11- - ** 多画质选择** :支持多种图片画质选项
12- - ** 智能过滤** :根据群设置智能过滤推送内容
13- - ** 批量推送限制** :防止连投时刷屏,可配置最大显示作品数量
7+ ### Pixiv 画师订阅 (` pixiv-subscription ` )
8+ - ** 自动推送** : 定时检查订阅画师的最新作品并推送到群聊。
9+ - ** 权限管理** : 支持群管理员设置订阅、屏蔽规则等。
10+ - ** R18 控制** : 可选择是否推送 R18 内容。
11+ - ** 标签屏蔽** : 支持屏蔽包含特定标签的作品。
1412
15- ## 更新记录
13+ ### Pixiv 工具 (` pixiv-tools ` ) - <font color =" red " >默认关闭</font >
14+ - ** 作品预览** : 通过画师id或者URL预览画师最新作品。
15+ - ** 作品获取** : 通过作品ID或URL获取指定插画。
16+ - ** 排行榜** : 获取Pixiv日、周、月、男性向、女性向、原画等多种排行榜。
17+ - ** 防刷屏** : 排行榜和画师预览默认使用合并转发消息,避免刷屏。
1618
17- - 2025.10.14 添加了 ` pixiv获取插画|pget ` 命令
18- - 可以使用插画的id获取指定插画, 并且有每日调用上限可在配置中修改
19- - 修改了 ` config.py ` 和` pixiv.py ` 两个文件
20- - 2025.11.11 让输入画师主页URL也可以订阅和取消订阅, pget可以使用URL获取插图
19+ ## 更新记录
20+ - ** 2025.11.23 给排行榜功能添加频率限制**
21+ - 修改了 ` pixiv_tools.py ` , ` config.py ` 文件
22+ - ** 2025.11.18 插件拆分为 ` pixiv-subscription ` 和 ` pixiv-tools ` 两个服务**
23+ - 将 ` pget ` 命令从` pixiv-subscription ` 移动到 ` pixiv-tools ` 服务中
24+ - 修改了 ` pixiv.py ` 文件, 新增 ` pixiv_tools.py ` 文件
25+ - ** 2025.11.11 让输入画师主页URL也可以订阅和取消订阅, pget可以使用URL获取插图**
2126 - 修改了 ` pixiv.py ` 文件
27+ - ** 2025.10.14 添加了 ` pixiv获取插画|pget ` 命令**
28+ - 可以使用插画的id获取指定插画, 并且有每日调用上限可在配置中修改。
29+ - 修改了 ` config.py ` 和` pixiv.py ` 两个文件。
2230
2331## 安装配置
2432
4452# 代理设置(可选)
4553PROXY_URL = None # 例如: "http://127.0.0.1:10808"
4654
47- # 每次推送时最多展示的作品数量
55+ # 每次推送时最多展示的作品数量,当画师连投(检查时间间隔内发布多个独立作品)时生效,多图作品仅展示首图
4856MAX_DISPLAY_WORKS = 3
4957
50- # 图片画质选择
51- # ���选值: 'square_medium', 'medium', 'large', 'original'
52- # 注意: original 质量的图片体积较大,可能导致发送失败
58+ # 可选值: 'square_medium', 'medium', 'large', 'original' (可以大致理解为从小到大)
59+ # 注意: original质量的图片体积较大,可能导致发送失败
5360IMAGE_QUALITY = 'large'
5461
55- # 检查更新的时间间隔(小时)
56- CHECK_INTERVAL_HOURS = 3
62+ CHECK_INTERVAL_HOURS = 3 # 检查更新的时间间隔,单位为小时
63+
64+ # 单用户pixiv获取插画命令每日获取作品的上限
65+ PGET_DAILY_LIMIT = 10
66+
67+ # 单用户预览画师信息命令每日使用上限
68+ PREVIEW_ILLUSTRATOR_LIMIT = 10
5769
58- # pixiv获取插画命令每日获取作品的上限
59- PGET_DAILY_LIMIT = 10
70+ # 是否启用合并转发回复模式
71+ CHAIN_REPLY = True
72+
73+ # 每次推送排行榜时最多展示的作品数量
74+ RANK_LIMIT = 5
75+
76+ # 是否启用“推送机器人账号关注的画师”功能
77+ # 开启后,各群管理员才能通过指令选择是否接收推送
78+ # 出于隐��和性能考虑,默认关闭
79+ ENABLE_FOLLOWING_SUBSCRIPTION = False
6080` ` `
6181
6282# ## 3. 使用`pixiv_auth.py`获取 Pixiv Refresh Token
@@ -88,55 +108,46 @@ PGET_DAILY_LIMIT = 10
88108 更多信息请参考 [pixivpy3 仓库](https://github.com/upbit/pixivpy),
89109 以及 [@ZipFile Pixiv OAuth Flow](https://gist.github.com/ZipFile/c9ebedb224406f4f11845ab700124362)
90110
91- # # 使用指南
92-
93- | 命令 | 权限要求 | 说明 |
94- | --------------------------------| ------| --------------------|
95- | ` pixiv订阅列表` | 所有用户 | 查看当前群的订阅列表 |
96- | ` pixiv群设置` | 所有用户 | 查看当前群的设置状态 |
97- | ` pixiv订阅画师 < 画师ID/主页URL> ` | 管理员 | 通过画师id订阅指定画师 |
98- | ` pixiv取消订阅 < 画师ID/主页URL> ` | 管理员 | 取消订阅指定画师 |
99- | ` pixiv获取插画\| pget < 画师ID/主页URL> ` | 所有用户 | 获取指定ID的插画(每日有调用上限) |
100- | ` pixiv开启r18` | 管理员 | 本群允许推送 R18 内容 |
101- | ` pixiv关闭r18` | 管理员 | 本群屏蔽 R18 内容 |
102- | ` pixiv屏蔽tag < 标签名> ` | 管理员 | 屏蔽包含指定标签的作品 |
103- | ` pixiv取消屏蔽tag < 标签名> ` | 管理员 | 取消屏蔽指定标签 |
104-
105- # ## 超级用户命令
111+ # # Service使用指南
106112
107- | 命令 | 权限要求 | 说明 |
108- | --------------------------| ------| ------------------------|
109- | ` pixiv重设登录token < token> ` | 超级用户 | 设置 Pixiv refresh_token |
110- | ` pixiv强制检查` | 超级用户 | 手动触发一次更新检查(测试用) |
111-
112- # # 使用示例
113-
114- # ## 订阅画师
113+ # ## Pixiv 画师订阅 (`pixiv-subscription`)
115114
116- ```
117- # 订阅画师(需要知道画师的用户ID)例如: 用户https://www.pixiv.net/users/73798
118- pixiv订阅画师 73798
119- pixiv订阅画师 https://www.pixiv.net/users/73798
115+ 此服务默认开启,主要用于自动推送画师更新。
120116
121- # 查看订阅列表
122- pixiv订阅列表
117+ | 命令 | 权限要求 | 说明 |
118+ | :-------------------------| :-----| :---------------|
119+ | ` pixiv订阅列表` | 所有用户 | 查看当前群的订阅列表 |
120+ | ` pixiv群设置` | 所有用户 | 查看订阅相关的群设置 |
121+ | ` pixiv订阅画师 < 画师ID/主页URL> ` | 管理员 | 订阅指定画师 |
122+ | ` pixiv取消订阅 < 画师ID/主页URL> ` | 管理员 | 取消订阅指定画师 |
123+ | ` pixiv开启r18` | 管理员 | 本群允许推送 R18 内容 |
124+ | ` pixiv关闭r18` | 管理员 | 本群屏蔽 R18 内容 |
125+ | ` pixiv屏蔽tag < 标签名> ` | 管理员 | 屏蔽包含指定标签的作品 |
126+ | ` pixiv取消屏蔽tag < 标签名> ` | ���理员 | 取消屏蔽指定标签 |
127+ | ` pixiv开启关注推送` | 管理员 | 向群内推送机器人账号关注的画师新作 |
128+ | ` pixiv关闭关注推送` | 管理员 | 取消向群内推送机器人账号关注的画师新作 |
123129
124- # 查看群设置
125- pixiv群设置
130+ # ### 超级用户命令
126131
127- # 取消订阅
128- pixiv取消订阅 12345678
132+ | 命令 | 权限要求 | 说明 |
133+ | :-------------------------| :-----| :-----------------------|
134+ | ` pixiv重设登录token < token> ` | 超级用户 | 设置 Pixiv refresh_token |
135+ | ` pixiv强制检查` | 超级用户 | 手动触发一次订阅更新检查(测试用) |
129136
130- # 屏蔽标签 (tag应为pixiv上的日文标准标签)
131- pixiv屏蔽tag 巨乳
132- ```
137+ # ## Pixiv 工具 (`pixiv-tools`)
133138
134- ## 工作原理
139+ ** 注意: 此服务默认关闭,手动在需要群中开启 **
135140
136- 1. **定时检查**:插件会根据 `CHECK_INTERVAL_HOURS` 设置的间隔时间自动检查订阅画师的新作品
137- 2. **作品过滤**:根据每个群的设置(R18开关、屏蔽标签)过滤推送内容
138- 3. **防刷屏**:当画师在检查间隔内发布多个作品时,最多只显示 `MAX_DISPLAY_WORKS` 个作品,其余以文字提示
139- 4. **错误处理**:包含登录失效自动重试、网络异常处理等机制
141+ | 命令 | 权限要求 | 说明 |
142+ | :-------------------------------| :-----| :-----------|
143+ | ` pixiv预览画师 < 画师ID/主页URL> ` | 所有用户 | 预览画师最新作品 |
144+ | ` pixiv获取插画\| pget < 作品ID/作品URL> ` | 所有用户 | 获取指定ID的插画 |
145+ | ` pixiv日榜` | 所有用户 | 获取插画日榜 |
146+ | ` pixiv周榜` | 所有用户 | 获取插画周榜 |
147+ | ` pixiv月榜` | 所有用户 | 获取插画月榜 |
148+ | ` pixiv男性向排行` | 所有用户 | 获取男性向插画排行榜 |
149+ | ` pixiv女性向排行` | 所有用户 | 获取女性向插画排行榜 |
150+ | ` pixiv原画榜` | 所有用户 | 获取原画榜 |
140151
141152# # 注意事项
142153
@@ -151,16 +162,14 @@ pixiv-subscription/
151162├── config.py # 配置文件
152163├── requiements.txt # 依赖列表
153164├── pixiv_auth.py # 用于获取refresh_token的脚本
165+ ├── pixiv_tools.py # pixiv-tools服务主文件
166+ ├── pixiv.py # pixiv-subscription服务主文件
154167├── refresh-token.json # Pixiv 认证信息, 需要在这里填写 refresh_token
155168└── subscriptions.json # 群组订阅数据以及设置(启动后自动生成)
156169```
157170
158171## Future Plans
159172
160- - 目前[插件列表](https://github.com/pcrbot/HoshinoBot-plugins-index)
161- 已经有[P站搜索](https://github.com/scofieldle/LeoBot/tree/main/hoshino/modules/pixiv_new)插件,
162- 提供了搜索画师作品和查看日月榜单等功能, 但是我加入的群中其实并没有太大的使用需求, 不清楚是否需要这个功能?
163- 如果有需要的话确实可以考虑将两个插件合并
164173- pixivpy3会通过`refresh_token`来获取`access_token`, 后续的请求都是携带`access_token`进行的, 但`access_token`
165174 的有效期只有[1+小时](https://github.com/upbit/pixivpy/issues/182), 所以在不做任何处理的情况下, 过一段时间后就会出现登陆失效的情况.
166175 目前采用的策略是直接进行api的请求, 如果发现请求失败则使用`api.login(refresh_token)`来重新登陆, 但是作为时长大于3小时的定时任务来说,
@@ -172,4 +181,4 @@ pixiv-subscription/
172181
173182---
174183
175- 如有问题或建议,请在项目仓库中提交 Issue。
184+ 如有问题或建议,请在项目仓库中提交 Issue。
0 commit comments