Rs794613 / LocalSetu

可协同维护图库质量的本地setu插件,基于HoshinoBot v2.0,支持私聊上传、自动审核、获取P站TAG、原画

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LocalSetu

基于HoshinoBot v2的本地setu插件

特点

  • 全功能支持私聊
  • 支持所有用户上传图片,提交删除图片申请,共同维护色图库
  • 支持按上传者,ID,TAG等模糊查询色图
  • 支持并发上传时自定义每张TAG
  • 自动审核上传图片,未通过自动提交申请
  • 自动获取上传图片P站id,中日文tag,是否r18,原图文件
  • 自动检测重复色图(以P站id及md5作唯一性约束)
  • 优化指令,空参时自动进入上传、审核模式,方便手机端操作
  • 权限分离,普通用户无权进行敏感操作,全申请均可自动推送至审核人员
  • 支持反和谐
  • 多线程并发,大幅优化效率
  • 数据存储基于sqlite,更加轻量
  • 支持上传男同图,指令区分(不是

首次部署

  1. 在HoshinoBot的插件目录modules下clone本项目 git clone https://github.com/benx1n/LocalSetu.git
  2. 在项目文件夹下执行pip install -r requirements.txt安装依赖
  3. 获取sauceNAO apikeyPixiv refresh_token
  • windows环境(其他环境您也可以在windows上得到refresh token后给服务器使用)

    在项目文件夹下执行

    pip install selenium
    python pixiv_auth.py login
    

    可能会出现Cloudflare验证,手动验证或切换其他代理即可通过
    成功后会在窗口内自动显示refresh_token
    注:如果在墙内访问,请手动设置 REQUESTS_KWARGS.proxies 的代理,不然获取code后无法正确提交请求到Pixiv(现象是 [INFO] Get code: xxxxx 后一直卡住,未requests配置代理即可)

  1. 将配置文件 config_default.json 重命名为 config.json , 修改配置文件中的设置
  • 若您不准备使用代理,且能正常访问sauceNAO,请在setu.py中作下列修改(若您不能访问sauceNAO,请将配置文件中的on设置为0)

    删除get_pixiv_id函数中的,**_REQUESTS_KWARGS
    修改get_pixiv_tag_url函数中如下部分

    api = AppPixivAPI()
    api.set_accept_language('zh-cn')
    api.auth(refresh_token=refresh_token)
    

    更变为

    api = ByPassSniApi()
    api.require_appapi_hosts(hostname="public-api.secure.pixiv.net")
    api.set_accept_language('zh-cn')
    api.auth(refresh_token=refresh_token)
    
  1. 将数据库文件demo.db重命名为LocalSetu.db
  2. config/__bot__.py的模块列表里加入 LocalSetu
  3. 重启hoshinoBot

更新

  1. 在项目文件夹下执行
    git pull
    
  2. 对比config_default中是否有新增配置项,同步至本地config
  3. 重启hoshinobot

DLC

  • 私聊支持:(可能会引起其他插件部分功能异常)

    修改Hoshinobot文件夹中.\hoshino\priv.py内check_priv函数,返回值改为True

    def check_priv(ev: CQEvent, require: int) -> bool:
    if ev['message_type'] == 'group':
       return bool(get_user_priv(ev) >= require)
    else:
       return True
    

    注释Hoshinobot文件夹中.\hoshino\msghandler.py内下方代码

    if event.detail_type != 'group':
       return
    

    修改Hoshinobot文件夹中.\hoshino\service.py内on_message函数,将event='group'及结尾的event替换为*events

    def on_message(self, *events) -> Callable:
    def deco(func) -> Callable:
       @wraps(func)
       async def wrapper(ctx):
           if self._check_all(ctx):
               try:
                   return await func(self.bot, ctx)
               except Exception as e:
                   self.logger.error(f'{type(e)} occured when {func.__name__} handling message {ctx["message_id"]}.')
                   self.logger.exception(e)
               return
       return self.bot.on_message(*events)(wrapper)
    return deco
    

指令说明

指令 必要参数 可选参数 说明
kkqyxp
kkntxp
ID,@上传者,TAG 随机发送色图/男同图
上传色图
上传男图
[TAG][IMAGE] 支持批量,[TAG][IMAGE][TAG][IMAGE]
空参时进入上传模式,用户发送的所有图片均视为上传,无操作20秒后自动退出
查看原图 [ID] 可用于保存原画画质的色图
删除色图 [ID] 删除指定ID色图,非审核人员仅可删除本人上传的色图,删除他人色图请使用'申请删除色图'
申请删除色图 [ID] 提交色图删除申请,自动推送至审核人员
修改TAG [ID] [TAG] 修改指定ID的自定义TAG
反和谐 [ID] 色图被TX屏蔽时使用该指令,进行一次反和谐,后续发送色图均使用反和谐后文件

以下指令仅限审核人员使用

指令 必要参数 可选参数 说明
审核色图上传
审核色图删除
进入审核模式,每次发送待审核的色图
使用指令[保留][删除]后自动发送下一张,发送[退出审核]或20秒无操作自动退出
快速审核 [ID] 快速通过指定ID的申请(默认保留)

TODO

  • 改用Sqlite
  • WEB控制台
  • 在线图库API
  • 更自由的组合条件查询
  • 自动审核方式改为炼丹
  • 优化无代理模式

感谢

HoshinoBot
go-cqhttp
PicImageSearch
pixivpy

开源协议

GPL-3.0 License

About

可协同维护图库质量的本地setu插件,基于HoshinoBot v2.0,支持私聊上传、自动审核、获取P站TAG、原画

License:GNU General Public License v3.0


Languages

Language:Python 100.0%