summaryrefslogtreecommitdiff
path: root/ATRI/plugins/saucenao/__init__.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-05-04 14:27:56 +0800
committerKyomotoi <[email protected]>2021-05-04 14:27:56 +0800
commitea7f48011c34fdaec7e91af7eb373c8174e439e6 (patch)
treee4f14eaacde37774d49e7f98ac1ff4635049d80a /ATRI/plugins/saucenao/__init__.py
parent07a7e41f72cfa9dfd207a04445f4aa5b0b6fa3ce (diff)
downloadATRI-ea7f48011c34fdaec7e91af7eb373c8174e439e6.tar.gz
ATRI-ea7f48011c34fdaec7e91af7eb373c8174e439e6.tar.bz2
ATRI-ea7f48011c34fdaec7e91af7eb373c8174e439e6.zip
✨🐛 更新
新增:老婆! 新增:涩图 修复:manage中出现的bug 优化:nsfw不再用float,换为int
Diffstat (limited to 'ATRI/plugins/saucenao/__init__.py')
-rw-r--r--ATRI/plugins/saucenao/__init__.py60
1 files changed, 31 insertions, 29 deletions
diff --git a/ATRI/plugins/saucenao/__init__.py b/ATRI/plugins/saucenao/__init__.py
index b4b1497..b1ab9ab 100644
--- a/ATRI/plugins/saucenao/__init__.py
+++ b/ATRI/plugins/saucenao/__init__.py
@@ -6,10 +6,10 @@ from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot.adapters.cqhttp.message import Message, MessageSegment
from nonebot.typing import T_State
-from ATRI.config import Config
+from ATRI.config import SauceNAO
from ATRI.service import Service as sv
from ATRI.rule import is_in_service
-from ATRI.exceptions import RequestTimeOut
+from ATRI.exceptions import RequestError
from .data_source import SauceNao
@@ -21,53 +21,55 @@ __doc__ = """
以图搜图 (pic)
"""
-saucenao = sv.on_command(cmd="以图搜图", docs=__doc__, rule=is_in_service("以图搜图"))
-
+saucenao = sv.on_command(
+ cmd='以图搜图',
+ docs=__doc__,
+ rule=is_in_service('以图搜图')
+)
@saucenao.args_parser # type: ignore
-async def _load_saucenao(bot: Bot, event: MessageEvent, state: T_State) -> None:
+async def _load_saucenao(bot: Bot, event: MessageEvent,
+ state: T_State) -> None:
msg = str(event.message)
- quit_list = ["算了", "罢了", "不搜了"]
+ quit_list = ['算了', '罢了', '不搜了']
if msg in quit_list:
- await saucenao.finish("好吧...")
-
+ await saucenao.finish('好吧...')
+
if not msg:
- await saucenao.reject("图呢?")
+ await saucenao.reject('图呢?')
else:
- state["pic_sau"] = msg
-
+ state['pic_sau'] = msg
@saucenao.handle()
async def _sauce_nao(bot: Bot, event: MessageEvent, state: T_State) -> None:
msg = str(event.message).strip()
if msg:
- state["pic_sau"] = msg
+ state['pic_sau'] = msg
-
[email protected]("pic_sau", prompt="图呢?")
[email protected]('pic_sau', prompt='图呢?')
async def _deal_saucenao(bot: Bot, event: MessageEvent, state: T_State) -> None:
- msg = state["pic_sau"]
- img = re.findall(r"url=(.*?)]", msg)
+ msg = state['pic_sau']
+ img = re.findall(r'url=(.*?)]', msg)
if not img:
- await saucenao.finish("请发送图片而不是其他东西!!")
-
+ await saucenao.finish('请发送图片而不是其他东西!!')
+
try:
- task = SauceNao(api_key=Config.SauceNAO.key)
+ task = SauceNao(api_key=SauceNAO.key)
data = json.loads(await task.search(img[0]))
- except RequestTimeOut:
- raise RequestTimeOut("Request failed!")
-
- res = data["results"]
+ except RequestError:
+ raise RequestError('Request failed!')
+
+ res = data['results']
result = list()
for i in range(0, 3):
data = res[i]
-
+
_result = dict()
- _result["similarity"] = data["header"]["similarity"]
- _result["index_name"] = data["header"]["index_name"]
- _result["url"] = choice(data["data"].get("ext_urls", ["None"]))
+ _result['similarity'] = data['header']['similarity']
+ _result['index_name'] = data['header']['index_name']
+ _result['url'] = choice(data['data'].get('ext_urls', ['None']))
result.append(_result)
-
+
msg0 = f"> {MessageSegment.at(event.user_id)}"
for i in result:
msg0 = msg0 + (
@@ -76,5 +78,5 @@ async def _deal_saucenao(bot: Bot, event: MessageEvent, state: T_State) -> None:
f"Name: {i['index_name']}\n"
f"URL: {i['url'].replace('https://', '')}"
)
-
+
await saucenao.finish(Message(msg0))