summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/plugins/essential.py1
-rw-r--r--ATRI/plugins/setu/__init__.py30
-rw-r--r--ATRI/plugins/setu/data_source.py8
-rw-r--r--ATRI/plugins/setu/tf_dealer.py4
4 files changed, 32 insertions, 11 deletions
diff --git a/ATRI/plugins/essential.py b/ATRI/plugins/essential.py
index 4cc0ac2..09107d5 100644
--- a/ATRI/plugins/essential.py
+++ b/ATRI/plugins/essential.py
@@ -310,5 +310,6 @@ async def _recall_private_event(bot: Bot, event: FriendRecallNoticeEvent):
async def _clear_cache():
try:
shutil.rmtree(TEMP_PATH)
+ os.makedirs(TEMP_PATH, exist_ok=True)
except Exception:
log.warning("清除缓存失败,请手动清除:data/temp")
diff --git a/ATRI/plugins/setu/__init__.py b/ATRI/plugins/setu/__init__.py
index fb5736a..ffaae8d 100644
--- a/ATRI/plugins/setu/__init__.py
+++ b/ATRI/plugins/setu/__init__.py
@@ -77,6 +77,9 @@ async def _tag_setu(bot: Bot, event: MessageEvent):
await bot.delete_msg(message_id=event_id)
+_catcher_max_file_size = 128
+
+
setu_catcher = Setu().on_message("涩图嗅探", block=False)
@@ -91,7 +94,7 @@ async def _setu_catcher(bot: Bot, event: MessageEvent):
hso = list()
for i in args:
try:
- data = await Setu().detecter(i)
+ data = await Setu().detecter(i, _catcher_max_file_size)
except Exception:
return
if data[1] > 0.7:
@@ -139,7 +142,7 @@ async def _deal_check(bot: Bot, event: MessageEvent, state: T_State):
if not args:
await nsfw_checker.reject("请发送图片而不是其他东西!!")
- data = await Setu().detecter(args[0])
+ data = await Setu().detecter(args[0], _catcher_max_file_size)
hso = data[1]
if not hso:
await nsfw_checker.finish("图太小了!不测!")
@@ -147,7 +150,7 @@ async def _deal_check(bot: Bot, event: MessageEvent, state: T_State):
resu = f"涩值:{'{:.2%}'.format(hso)}\n"
if hso >= 0.75:
resu += "hso!不行我要发给别人看"
- repo = f"涩图来咧!\n{MessageSegment.image(args[0])}\n涩值:{'{:.2%}'.format(hso[0])}"
+ repo = f"涩图来咧!\n{MessageSegment.image(args[0])}\n涩值:{'{:.2%}'.format(hso)}"
for superuser in BotSelfConfig.superusers:
await bot.send_private_msg(user_id=superuser, message=repo)
@@ -159,6 +162,27 @@ async def _deal_check(bot: Bot, event: MessageEvent, state: T_State):
await nsfw_checker.finish(resu)
+catcher_setting = Setu().on_command("嗅探", "涩图检测图片文件大小设置")
+
+@catcher_setting.handle()
+async def _catcher_setting(bot: Bot, event: MessageEvent, state: T_State):
+ msg = str(event.message).strip()
+ if msg:
+ state["catcher_set"] = msg
+
+@catcher_setting.got("catcher_set", "数值呢?(1对应1kb,默认128)")
+async def _deal_setting(bot: Bot, event: MessageEvent, state: T_State):
+ global _catcher_max_file_size
+ msg = state["catcher_set"]
+ try:
+ _catcher_max_file_size = int(msg)
+ except Exception:
+ await catcher_setting.reject("请发送阿拉伯数字~!")
+
+ repo = f"好诶!涩图检测文件最小值已设为:{_catcher_max_file_size}kb"
+ await catcher_setting.finish(repo)
+
+
@scheduler.scheduled_job(
"interval", name="涩批诱捕器", hours=1, misfire_grace_time=60, args=[Bot]
)
diff --git a/ATRI/plugins/setu/data_source.py b/ATRI/plugins/setu/data_source.py
index 39f3815..cca2767 100644
--- a/ATRI/plugins/setu/data_source.py
+++ b/ATRI/plugins/setu/data_source.py
@@ -62,11 +62,11 @@ class Setu(Service):
return repo, setu
@staticmethod
- async def detecter(url: str) -> list:
+ async def detecter(url: str, file_size: int) -> list:
"""
涩值检测.
"""
- data = await detect_image(url)
+ data = await detect_image(url, file_size)
return data
@staticmethod
@@ -85,10 +85,6 @@ class Setu(Service):
tag = choice(temp_data.get("tags", ["女孩子"]))
- temp_arg = temp_data[0].get(
- "urls",
- "https://i.pixiv.cat/img-original/img/2021/02/28/22/44/49/88124144_p0.jpg",
- )
url = temp_data[0]["urls"].get(
"original",
"https://i.pixiv.cat/img-original/img/2021/02/28/22/44/49/88124144_p0.jpg",
diff --git a/ATRI/plugins/setu/tf_dealer.py b/ATRI/plugins/setu/tf_dealer.py
index f41de49..bf68020 100644
--- a/ATRI/plugins/setu/tf_dealer.py
+++ b/ATRI/plugins/setu/tf_dealer.py
@@ -49,14 +49,14 @@ def prepare_image(img):
return image
-async def detect_image(url) -> list:
+async def detect_image(url: str, file_size: int) -> list:
try:
req = await request.get(url)
except RequestError:
raise RequestError("Get info from download image failed!")
img_byte = getsizeof(req.read()) // 1024
- if img_byte < 256:
+ if img_byte < file_size:
return [0, 0]
try: