diff options
Diffstat (limited to 'ATRI/plugins/animeSearch.py')
-rw-r--r-- | ATRI/plugins/animeSearch.py | 137 |
1 files changed, 75 insertions, 62 deletions
diff --git a/ATRI/plugins/animeSearch.py b/ATRI/plugins/animeSearch.py index c8f0007..5323e53 100644 --- a/ATRI/plugins/animeSearch.py +++ b/ATRI/plugins/animeSearch.py @@ -1,5 +1,6 @@ import re import json +from pathlib import Path from datetime import datetime from random import choice from aiohttp import ClientSession @@ -58,78 +59,90 @@ def toSimpleString(str): ) async def _(session: CommandSession): user = session.event.user_id + group = session.event.group_id msg = session.current_arg.strip() - if 0 <= now_time() < 5.5: - await session.send( - choice( - [ - 'zzzz......', - 'zzzzzzzz......', - 'zzz...好涩哦..zzz....', - '别...不要..zzz..那..zzz..', - '嘻嘻..zzz..呐~..zzzz..' - ] - ) - ) - else: - with open('ATRI/plugins/noobList/noobList.json', 'r') as f: + try: + with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f: data = json.load(f) - - if str(user) in data.keys(): + except: + data = {} + try: + with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f: + data1 = json.load(f) + except: + data1 = {} + + if str(group) in data.keys(): + pass + else: + if str(user) in data1.keys(): pass else: - if not msg: - msg = session.get('message', prompt = "请发送一张图片") - - await session.send("开始以图搜番\n(如搜索时间过长或无反应则为图片格式有问题)") - - p = '\\[CQ\\:image\\,file\\=.*?\\,url\\=(.*?)\\]' + if 0 <= now_time() < 5.5: + await session.send( + choice( + [ + 'zzzz......', + 'zzzzzzzz......', + 'zzz...好涩哦..zzz....', + '别...不要..zzz..那..zzz..', + '嘻嘻..zzz..呐~..zzzz..' + ] + ) + ) + else: + if not msg: + msg = session.get('message', prompt = "请发送一张图片") + + await session.send("开始以图搜番\n(如搜索时间过长或无反应则为图片格式有问题)") - img = re.findall(p, msg) + p = '\\[CQ\\:image\\,file\\=.*?\\,url\\=(.*?)\\]' - if img: - URL = f'https://trace.moe/api/search?url={img[0]}' + img = re.findall(p, msg) - req = await get_bytes(URL) + if img: + URL = f'https://trace.moe/api/search?url={img[0]}' - if req: - data = json.loads(req.decode()) + req = await get_bytes(URL) - d = {} + if req: + data = json.loads(req.decode()) - for i in range(len(data['docs'])): - if data['docs'][i]['title_chinese'] in d.keys(): - d[data['docs'][i]['title_chinese']][0] += data['docs'][i]['similarity'] - - else: - m = data['docs'][i]['at']/60 - s = data['docs'][i]['at']%60 + d = {} - if data['docs'][i]['episode'] == '': - n = 1 - + for i in range(len(data['docs'])): + if data['docs'][i]['title_chinese'] in d.keys(): + d[data['docs'][i]['title_chinese']][0] += data['docs'][i]['similarity'] + else: - n = data['docs'][i]['episode'] - - d[toSimpleString(data['docs'][i]['title_chinese'])] = [data['docs'][i]['similarity'],f'第{n}集',f'{int(m)}分{int(s)}秒处'] - - result = sorted( - d.items(), - key = lambda x:x[1], - reverse = True - ) - - t = 0 - - msg0 = f'[CQ:at,qq={user}]\n根据所提供的图片按照相似度找到{len(d)}个结果:' - - for i in result: - t +=1 - lk = ('%.2f%%' % (i[1][0] * 100)) - msg = (f'\n——————————\n({t})\n相似度:{lk}\n动漫名:《{i[0]}》\n时间点:{i[1][1]} {i[1][2]}') - msg0 += msg + m = data['docs'][i]['at']/60 + s = data['docs'][i]['at']%60 + + if data['docs'][i]['episode'] == '': + n = 1 + + else: + n = data['docs'][i]['episode'] + + d[toSimpleString(data['docs'][i]['title_chinese'])] = [data['docs'][i]['similarity'],f'第{n}集',f'{int(m)}分{int(s)}秒处'] + + result = sorted( + d.items(), + key = lambda x:x[1], + reverse = True + ) + + t = 0 + + msg0 = f'[CQ:at,qq={user}]\n根据所提供的图片按照相似度找到{len(d)}个结果:' + + for i in result: + t +=1 + lk = ('%.2f%%' % (i[1][0] * 100)) + msg = (f'\n——————————\n({t})\n相似度:{lk}\n动漫名:《{i[0]}》\n时间点:{i[1][1]} {i[1][2]}') + msg0 += msg + + await session.send(msg0) - await session.send(msg0) - - else: - await session.send("搜索似乎失败了呢...")
\ No newline at end of file + else: + await session.send("搜索似乎失败了呢...")
\ No newline at end of file |