Skip to content

Commit 84a2c14

Browse files
committed
Merge branch 'master' into virgo-master
# Conflicts: # pixiv.py
2 parents fffc189 + 9f639d7 commit 84a2c14

File tree

4 files changed

+648
-244
lines changed

4 files changed

+648
-244
lines changed

‎README.md‎

Lines changed: 77 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,32 @@
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

@@ -44,19 +52,31 @@
4452
# 代理设置(可选)
4553
PROXY_URL = None # 例如: "http://127.0.0.1:10808"
4654
47-
# 每次推送时最多展示的作品数量
55+
# 每次推送时最多展示的作品数量,当画师连投(检查时间间隔内发布多个独立作品)时生效,多图作品仅展示首图
4856
MAX_DISPLAY_WORKS = 3
4957
50-
# 图片画质选择
51-
# ���选值: 'square_medium', 'medium', 'large', 'original'
52-
# 注意: original 质量的图片体积较大,可能导致发送失败
58+
# 可选值: 'square_medium', 'medium', 'large', 'original' (可以大致理解为从小到大)
59+
# 注意: original质量的图片体积较大,可能导致发送失败
5360
IMAGE_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。

‎config.py‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,17 @@
1010

1111
CHECK_INTERVAL_HOURS = 3 # 检查更新的时间间隔,单位为小时
1212

13-
PGET_DAILY_LIMIT = 10 # pixiv获取插画命令每日获取作品的上限
13+
PGET_DAILY_LIMIT = 10 # 单用户pixiv获取插画命令每日获取作品的上限
14+
15+
PREVIEW_ILLUSTRATOR_LIMIT = 10 # 单用户预览画师信息命令每日使用上限
16+
17+
RANK_CD_MINUTES = 60 # 排行榜命令的冷却时间,单位为秒
18+
19+
CHAIN_REPLY = True # 是否启用合并转发回复模式
20+
21+
RANK_LIMIT = 5 # 每次推送排行榜时最多展示的作品数量
22+
23+
# 是否启用“推送机器人账号关注的画师”功能
24+
# 开启后,各群管理员才能通过指令选择是否接收推送
25+
# 出于隐私和性能考虑,默认关闭
26+
ENABLE_FOLLOWING_SUBSCRIPTION = False

0 commit comments

Comments
 (0)