基于 Mirai Console 的 Pixiv 插件
基于 Kotlin Pixiv库 PixivClient ,通过清除ServerHostName 绕过SNI审查,免代理
使用前应该查阅的相关文档或项目
Pixiv Helper 2 重构进行中,部分功能还不可用. 需要重新登录Pixiv 账号,你可以使用之前登录得到的 Token
目前没有自动缓存清理,请使用 #删除指令 手动清理
R18图会按照Pixiv所给信息过滤
群聊模式使用默认账号,私聊模式Pixiv账号和QQ号关联,初次使用请先 /pixiv
指令登陆账号
然后使用 /cache recommended
缓存系统推荐作品,然后再使用色图相关指令
推荐使用 /task cache recommended
定时自动缓存
Gif图片需要由机器人自己合成,如果设备性能不足,请调整相关参数
自 1.9.0
起将数据库部分功能拆分
需要 Mirai Hibernate Plugin 做前置插件
这是必要的
MCL安装指令 ./mcl --update-package xyz.cssxsh.mirai:mirai-hibernate-plugin --channel stable --type plugin
打开浏览器,登录PIXIV 需要 Mirai Selenium Plugin 做前置插件 并且需要代理配置(可以打开浏览器后,在浏览器中配置),浏览器登录只是其中一种登录方法,不必要安装 Selenium 插件
群聊默认输出最少作品信息,需要增加请使用 /setting
指令修改
发送模式可以使用 /setting
指令修改为闪照或撤销或转发
注意, 闪照等模式 并不会降低 机器人被封禁
的风险。
机器人被封禁的主要风险来自
- QQ号是新注册的
- Bot挂在服务器上,但是服务器IP被腾讯列为风险IP(腾讯通过IP确定 登录地区)
- Bot被高频使用,(另外,
高频发图再高频撤销
属于不打自招,正常用户有这个手速吗?) - 发送大量违规链接,或者触发关键词
注意: 使用前请确保可以 在聊天环境执行指令
带括号的/
前缀是可选的
<...>
中的是指令名,由空格隔开表示或,选择其中任一名称都可执行例如/色图
[...]
表示参数,当[...]
后面带?
时表示参数可选
{...}
表示连续的多个参数
本插件指令权限ID 格式为 xyz.cssxsh.mirai.plugin.pixiv-helper:command.*
, *
是指令的第一指令名
例如 /pixiv sina
的权限ID为 xyz.cssxsh.mirai.plugin.pixiv-helper:command.pixiv
指令 | 描述 |
---|---|
/<pixiv> <sina> |
扫码登录关联了PIXIV的微博账号,以登录PIXIV |
/<pixiv> <cookie> |
通过Cookie,登录PIXIV |
/<pixiv> <selenium> |
打开浏览器,登录PIXIV |
/<pixiv> <refresh> [token] |
登录 通过 refresh token |
/<pixiv> <bind> [uid] [contact]? |
绑定 Pixiv 账户 |
/<pixiv> <pool> |
账户池详情 |
/<follow> <user> {uid} |
为当前助手关注指定用户 |
/<follow> <copy> [uid] |
关注指定用户的关注 |
/<mark bookmark> <add> [uid] {words}? |
添加指定作品收藏 |
/<mark bookmark> <delete> [pid] |
删除指定作品收藏 |
/<mark bookmark> <random> [tag]? |
随机发送一个收藏的作品 |
/<mark bookmark> <list> |
显示收藏列表 |
Pixiv helper 2 重构中,follow 和 mark 暂不可用
Pixiv helper 2 中 新加入 /pixiv bind
指令,此指令用于为一个联系人(群/用户)绑定一个 pixiv 账号(已登录)
cookie 文件为工作目录下的 cookie.json
内容 为 浏览器插件 EditThisCookie 导出的Json
EditThisCookie 安装地址
Chrome
Firefox
Edge
指令 | 描述 |
---|---|
(/)<ero 色图 涩图> |
缓存中随机一张色图 |
(/)<get 搞快点 gkd> [pid] [flush]? |
获取指定ID图片 |
(/)<tag 标签> [word] [bookmark]? [fuzzy]? |
随机指定TAG图片 |
(/)<boom 射爆 社保> [limit]? [word]? |
随机一组色号图,默认30张 |
(/)<illustrator 画师> <uid id user 用户> [uid] |
根据画师UID随机发送画师作品 |
(/)<illustrator 画师> <name 名称 名字 推特> [name] |
根据画师name或者alias随机发送画师作品 |
(/)<illustrator 画师> <alias 别名> [name] [uid] |
设置画师alias |
(/)<illustrator 画师> <list 列表> |
显示别名列表 |
(/)<illustrator 画师> <info 信息> [uid] |
获取画师信息 |
(/)<illustrator 画师> <search 搜索> [name] [limit]? |
搜索画师 |
(/)<search 搜索 搜图> [image]? |
saucenao、ascii2d 搜索图片 |
Pixiv helper 2 重构中,illustrator 暂不可用
色图指令基于缓存信息,使用前请先缓存一定量的作品,推荐使用 /cache recommended
指令
使用色图指令时 指令后附带 更好
, 可以使收藏数比前一张更高, 如果两次色图指令间隔小于触发时间(默认时间10s)也会触发这个效果
tag指令检索结果过少时,会自动触发缓存
tag指令可以尝试按照格式 角色名(作品名)
检索角色, 举例 红(明日方舟)
tag指令多keyword时,请使用 _
,|
,,
, +
等符号将keyword连接起来,不要使用空格,举例 明日方舟+巨乳
[image]?
为空时会从回复消息
,最近图片
获取
bookmark
参数指收藏数过滤
fuzzy
参数指模糊搜索
boom指令使用时
无 word
会随机给出色图
word
为数字时会查找对应uid画师的色图
其余情况则按 tag
处理
画师别名的uid
为0时表示删除指定别名
搜图使用 https://saucenao.com 的 api,无KEY时,每天限额 100次, KEY参数在设置中添加
举例:
1.9.1
开始,添加 通过At来搜索头像的功能
当 saucenao 的 搜索结果不足时,会自动补充 ascii2d 的搜索结果
指令 | 描述 |
---|---|
/<cache> <follow> |
缓存关注推送 |
/<cache> <rank> [mode] [date]? |
缓存指定排行榜信息 |
/<cache> <recommended> |
缓存推荐作品 |
/<cache> <bookmarks> [uid] |
缓存用户的收藏中缓存色图作品 |
/<cache> <following> [fluhsh]? |
缓存关注画师作品 |
/<cache> <fwm> [jump]? |
缓存关注画师收藏 |
/<cache> <user> [uid] |
缓存指定画师作品 |
/<cache> <tag> [word] |
缓存搜索tag得到的作品 |
/<cache> <ero> [range]? |
缓存色图画师的作品 |
/<cache> <ewm> [range]? |
缓存色图画师的收藏 |
/<cache> <search> |
缓存搜索记录 |
/<cache> <stop> [name] |
停止缓存任务 |
/<cache> <detail> |
缓存任务详情 |
Pixiv helper 2 重构中,部分缓存指令 暂不可用
[uid]?
会自动填充当前用户
mode
可选值: MONTH
, WEEK
, WEEK_ORIGINAL
, WEEK_ROOKIE
, DAY
, DAY_MALE
, DAY_FEMALE
, DAY_MANGA
指令 | 描述 |
---|---|
/<task> <user> [uid] [cron] [target]? |
推送用户新作品 |
/<task> <rank> [mode] [cron] [target]? |
推送排行榜新作品 |
/<task> <follow> [cron] [target]? |
推送关注用户作品 |
/<task> <recommended> [cron] [target]? |
推送推荐作品 |
/<task> <trending> [cron]? [target]? |
推送热门标签 |
/<task> <cache> [uid] [cron] {args} |
数据自动缓存 |
/<task> <cron> [id] [cron] |
查看任务详情 |
/<task> <detail> |
查看任务详情 |
/<task> <delete> [id] |
删除任务 |
Pixiv helper 2 重构中,部分任务指令 暂不可用
备份文件优先推送到群文件,其次百度云
duration 单位分钟,默认3小时
/task cache {args}
是 task 和 cache 指令的组合,举例,/task cache recommended
指令 | 描述 |
---|---|
/<setting> <interval> [sec] |
设置连续发送间隔时间, 单位秒 |
/<setting> <forward> |
设置Task发送模式 |
/<setting> <link> |
设置是否显示Pixiv Cat 原图链接 |
/<setting> <tag> |
设置是否显示TAG INFO |
/<setting> <attr> |
设置是否显示作品属性 |
/<setting> <cooling> |
|
/<setting> <max> [num] |
设置显示最大图片数 |
/<setting> <model> [type] [ms]? |
设置发送模式 |
Pixiv helper 2 重构中,部分设置指令 暂不可用
发送模式 有三种 NORMAL, FLASH, RECALL
, ms
是Recall的延迟时间,单位毫秒
注意:FLASH, RECALL
这两种模式 并不会降低 机器人被封禁
的风险
forward
, link
, tag
, attr
使用指令后会对当前值取反
指令 | 描述 |
---|---|
/<info> <user> [target]? |
获取用户信息 |
/<info> <group> [target]? |
获取群组信息 |
/<info> <top> [limit]? |
获取TAG指令统计信息 |
/<info> <cache> |
获取缓存信息 |
指令 | 描述 |
---|---|
/<delete> <artwork> [pid] [record]? |
删除指定作品 |
/<delete> <user> [uid] [record]? |
删除指定用户作品 |
/<delete> <bookmarks> [max] [record]? |
删除小于指定收藏数作品 |
/<delete> <page> [min] [record]? |
删除大于指定页数作品 |
/<delete> <manga> [record]? |
删除漫画作品 |
/<delete> <record> |
删除已记录作品 |
第二参数 record 表明是否写入数据库,默认为否,只删除图片文件
Pixiv helper 2 重构中,部分自动解析 暂不可用
权限 id: xyz.cssxsh.mirai.plugin.pixiv-helper:url
匹配一下正则表达式的URL将会被解析
val URL_ARTWORK_REGEX = """(?<=pixiv\.net/(i|artworks)/|illust_id=)\d+""".toRegex()
val URL_USER_REGEX = """(?<=pixiv\.net/(u/|users/|member\.php\?id=))\d+""".toRegex()
val URL_PIXIV_ME_REGEX = """(?<=pixiv\.me/)[\w-]{3,32}""".toRegex()
cache_path
缓存目录backup_path
备份目录temp_path
临时目录ero_chunk
色图分块大小 和自动触发TAG缓存有关ero_up_expire
色图自动触发更高收藏数的最大时间,单位毫秒ero_work_types
涩图标准 内容类型ILLUST, UGOIRA, MANGA
, 为空则全部符合ero_bookmarks
涩图标准 收藏ero_page_count
涩图标准 页数ero_tag_exclude
涩图标准 排除的正则表达式ero_user_exclude
涩图标准 排除的UIDpximg
反向代理, 若非特殊情况不要修改这个配置,保持留空,可选代理i.pixiv.re, i.pixiv.cat
proxy
API代理proxy_download
DOWNLOAD代理图片下载器会对代理产生很大的负荷
,请十分谨慎的开启这个功能timeout_apiAPI超时时间, 单位mstimeout_download
DOWNLOAD超时时间, 单位msblock_size
DOWNLOAD分块大小, 单位B, 默认 523264, 为零时, 不会分块下载tag_sfw
tag 是否过滤r18 依旧不会放出图片ero_sfw
ero 是否过滤r18 依旧不会放出图片cache_capacity下载缓存容量,同时下载的任务上限cache_jump缓存是否跳过下载upload压缩完成后是否上传百度云,不上传百度云则会尝试发送文件
key
KEY 不是必须的,无KEY状态下,根据IP每天可以搜索 100 次,有KEY状态下搜索次数依据于账户
KEY 参数请到 https://saucenao.com/ 注册账号,
在用户页面 https://saucenao.com/user.php?page=search-api 获得的KEY填入
信息只在启动时读取,修改后需重启limit
显示的搜索结果数bovw
ascii2d 检索类型,false色合検索 true特徴検索wait
图片等待时间,单位秒forward
转发方式发送搜索结果
quantizer
编码器,com.squareup.gifencoder.ColorQuantizer
的实现
目前可选值,图片质量和所需性能按顺序递增, 推荐使用OctTreeQuantizer
com.squareup.gifencoder.UniformQuantizer
com.squareup.gifencoder.MedianCutQuantizer
com.squareup.gifencoder.OctTreeQuantizer
com.squareup.gifencoder.KMeansQuantizer
xyz.cssxsh.pixiv.tool.OpenCVQuantizer
(需要 安装 OpenCV, 对应jar
放进plugins
文件夹)ditherer
抖动器,com.squareup.gifencoder.Ditherer
的实现
目前可选值, 推荐使用AtkinsonDitherer
com.squareup.gifencoder.FloydSteinbergDitherer
com.squareup.gifencoder.NearestColorDitherer
xyz.cssxsh.pixiv.tool.AtkinsonDitherer
xyz.cssxsh.pixiv.tool.JJNDitherer
xyz.cssxsh.pixiv.tool.SierraLiteDitherer
xyz.cssxsh.pixiv.tool.StuckiDitherer
disposal
切换方法
可选值UNSPECIFIED
,DO_NOT_DISPOSE
,RESTORE_TO_BACKGROUND
,RESTORE_TO_PREVIOUS
max_count
OpenCVQuantizer 最大迭代数
pixiv.rate.limit.delay
默认3 * 60 * 1000L
mspixiv.download.async
默认32
如果不是特殊需要,使用默认的 SQLite 配置就好
配置 mysql 举例 (字符集要设置为utf8mb4_bin),其他数据库类推
下载 mysql-connector-java
, 然后放进 (plugins
文件夹mirai-hibernate-plugin
1.8.3+ 自带 mysql
此步骤不再需要)
配置 文件
hibernate.connection.url=jdbc:mysql://localhost:3306/pixiv?autoReconnect=true
hibernate.connection.driver_class=com.mysql.cj.jdbc.Driver
hibernate.connection.CharSet=utf8mb4
hibernate.connection.useUnicode=true
hibernate.connection.username=username
hibernate.connection.password=password
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider
hibernate.hbm2ddl.auto=none
hibernate-connection-autocommit=true
hibernate.connection.show_sql=false
hibernate.autoReconnect=true
关于表的自动创建可以查看 model