From 0722b04734418cab58a6827d0b1fa5b4b62d4573 Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:08:51 +0800 Subject: Add files via upload --- ATRI/plugins/SauceNAO.py | 112 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 ATRI/plugins/SauceNAO.py (limited to 'ATRI') diff --git a/ATRI/plugins/SauceNAO.py b/ATRI/plugins/SauceNAO.py new file mode 100644 index 0000000..a80e23b --- /dev/null +++ b/ATRI/plugins/SauceNAO.py @@ -0,0 +1,112 @@ +import requests +import json +import re +from datetime import datetime +from random import choice +from nonebot import on_command, CommandSession +from aiohttp import ClientSession + +from ATRI.modules.funcControl import checkSwitch, checkNoob # type: ignore + +__plugin_name__ = "saucenao_search" + +async def get_bytes(url, headers = None): + async with ClientSession() as asyncSession: + async with asyncSession.get(url, headers = headers) as response: + a = await response.read() + return a + +def now_time(): + now_ = datetime.now() + hour = now_.hour + minute = now_.minute + now = hour + minute / 60 + return now + +class SauceNAO: + + def __init__(self, api_key, output_type=2, testmode=0, dbmask=None, dbmaski=32768, db=5, numres=1): + api = 'https://saucenao.com/search.php' + self.api = api + params = dict() + params['api_key'] = api_key + params['output_type'] = output_type + params['testmode'] = testmode + params['dbmask'] = dbmask + params['dbmaski'] = dbmaski + params['db'] = db + params['numres'] = numres + self.params = params + + def search(self, url): + self.params['url'] = url + res = requests.get(url=self.api,params=self.params) + return res.content + +@on_command('SauceNAO', aliases = ['以图识图'], only_to_me = False) +async def SaucenaoSearch(session: CommandSession): + user = session.event.user_id + group = session.event.group_id + msg = session.current_arg.strip() + + if checkNoob(user, group): + if 0 <= now_time() < 5.5: + await session.send( + choice( + [ + 'zzzz......', + 'zzzzzzzz......', + 'zzz...好涩哦..zzz....', + '别...不要..zzz..那..zzz..', + '嘻嘻..zzz..呐~..zzzz..' + ] + ) + ) + else: + if checkSwitch(__plugin_name__): + if not msg: + msg = session.get('message', prompt="请发送一张图片") + + await session.send("开始以图识图\n(如搜索时间过长或无反应则为图片格式有问题)") + + p = '\\[CQ\\:image\\,file\\=.*?\\,url\\=(.*?)\\]' + + img = re.findall(p, msg) + + task = SauceNAO(api_key='2cc2772ca550dbacb4c35731a79d341d1a143cb5') + data = task.search(url=img) + msg0 = '' + try: + data = json.loads(data)['results'][0] + url = data['data']['ext_urls'][0] + title = data['data']['title'] + pixiv_id = data['data']['pixiv_id'] + member_name = data['data']['member_name'] + member_id = data['data']['member_id'] + similarity = data['header']['similarity'] + mini_url = data['header']['thumbnail'] + msg0 = f'SauceNAO结果:' + msg0 += f'[CQ:image,file={mini_url}]\n' + msg0 += f'相似度:{similarity}%\n' + msg0 += f'标题:{title}\n' + msg0 += f'插画ID:{pixiv_id}\n' + msg0 += f'画师:{member_name}\n' + msg0 += f'画师ID:{member_id}\n' + msg0 += f'直链:https://pixiv.cat/{pixiv_id}.jpg' + except: + print('网络请求失败...') + if msg0: + if float(similarity) > 70: + await session.send(msg0) + else: + await session.send("找不到相似的图呢...") + else: + await session.send("搜索似乎失败了呢...") + else: + session.finish('该功能已关闭...') + + +@SaucenaoSearch.args_parser +async def _(session: CommandSession): + if not session.is_first_run and session.current_arg.startswith('算了'): + session.switch(session.current_arg[len('算了'):]) -- cgit v1.2.3 From 3114c005b837e491b1533473b614b726072b9420 Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:10:22 +0800 Subject: add saucenao_search --- ATRI/plugins/switch/switch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ATRI') diff --git a/ATRI/plugins/switch/switch.json b/ATRI/plugins/switch/switch.json index 13cdfa0..df65fb7 100644 --- a/ATRI/plugins/switch/switch.json +++ b/ATRI/plugins/switch/switch.json @@ -1 +1 @@ -{"pixiv_seach_img": "on", "pixiv_seach_author": "off", "pixiv_daily_rank": "on", "approve_friend_add": "on", "approve_invite_join_group": "on", "setu": "on", "setu_img": "on", "anime_search": "on", "change_face": "on", "chouYou": "off"} \ No newline at end of file +{"pixiv_seach_img": "on", "pixiv_seach_author": "off", "pixiv_daily_rank": "on", "approve_friend_add": "on", "approve_invite_join_group": "on", "setu": "on", "setu_img": "on", "anime_search": "on", "change_face": "on", "chouYou": "off", "saucenao_search": "on"} -- cgit v1.2.3 From 24f70fb78d98eaeecc81c29ba59167a1822ade5a Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:12:37 +0800 Subject: add SauceNAO --- ATRI/plugins/switch.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'ATRI') diff --git a/ATRI/plugins/switch.py b/ATRI/plugins/switch.py index 8abb408..47e6067 100644 --- a/ATRI/plugins/switch.py +++ b/ATRI/plugins/switch.py @@ -49,7 +49,10 @@ async def _(session: CommandSession): elif com == 'Kyaru': data["chouYou"] = "on" - + + elif com == 'SauceNAO': + data["saucenao_search"] = "on" + else: pass @@ -84,6 +87,9 @@ async def _(session: CommandSession): elif com == 'Kyaru': data["chouYou"] = "off" + elif com == 'SauceNAO': + data["saucenao_search"] = "on" + else: pass @@ -94,4 +100,4 @@ async def _(session: CommandSession): await session.send('Success!') else: - await session.send('恁哪位?') \ No newline at end of file + await session.send('恁哪位?') -- cgit v1.2.3 From 46bc4d0b0366ca8cda4cdacb893b427c65d5c63c Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:21:50 +0800 Subject: add SauceNAO --- ATRI/plugins/SauceNAO.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ATRI') diff --git a/ATRI/plugins/SauceNAO.py b/ATRI/plugins/SauceNAO.py index a80e23b..bacbae2 100644 --- a/ATRI/plugins/SauceNAO.py +++ b/ATRI/plugins/SauceNAO.py @@ -8,6 +8,7 @@ from aiohttp import ClientSession from ATRI.modules.funcControl import checkSwitch, checkNoob # type: ignore +API_KEY = config.SAUCENAO_API_KEY() __plugin_name__ = "saucenao_search" async def get_bytes(url, headers = None): @@ -73,7 +74,7 @@ async def SaucenaoSearch(session: CommandSession): img = re.findall(p, msg) - task = SauceNAO(api_key='2cc2772ca550dbacb4c35731a79d341d1a143cb5') + task = SauceNAO(api_key=API_KEY) data = task.search(url=img) msg0 = '' try: -- cgit v1.2.3 From 9aa53eabbd977ebe2ed737554f19137b37295238 Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:45:32 +0800 Subject: add SauceNAO --- ATRI/plugins/SauceNAO.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ATRI') diff --git a/ATRI/plugins/SauceNAO.py b/ATRI/plugins/SauceNAO.py index bacbae2..cb32345 100644 --- a/ATRI/plugins/SauceNAO.py +++ b/ATRI/plugins/SauceNAO.py @@ -6,9 +6,10 @@ from random import choice from nonebot import on_command, CommandSession from aiohttp import ClientSession +import config # type: ignore from ATRI.modules.funcControl import checkSwitch, checkNoob # type: ignore -API_KEY = config.SAUCENAO_API_KEY() +API_KEY = config.SAUCENAO_KEY() __plugin_name__ = "saucenao_search" async def get_bytes(url, headers = None): -- cgit v1.2.3 From 9dbe983c0332c0b56805fb2ce15c8db238afeb11 Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Sat, 29 Aug 2020 10:49:10 +0800 Subject: add SauceNAO --- ATRI/plugins/switch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ATRI') diff --git a/ATRI/plugins/switch.py b/ATRI/plugins/switch.py index 47e6067..71b7f62 100644 --- a/ATRI/plugins/switch.py +++ b/ATRI/plugins/switch.py @@ -88,7 +88,7 @@ async def _(session: CommandSession): data["chouYou"] = "off" elif com == 'SauceNAO': - data["saucenao_search"] = "on" + data["saucenao_search"] = "off" else: pass -- cgit v1.2.3