summaryrefslogtreecommitdiff
path: root/ATRI/plugins/saucenao
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/saucenao')
-rw-r--r--ATRI/plugins/saucenao/__init__.py52
-rw-r--r--ATRI/plugins/saucenao/data_source.py26
2 files changed, 36 insertions, 42 deletions
diff --git a/ATRI/plugins/saucenao/__init__.py b/ATRI/plugins/saucenao/__init__.py
index b1ab9ab..6361ade 100644
--- a/ATRI/plugins/saucenao/__init__.py
+++ b/ATRI/plugins/saucenao/__init__.py
@@ -21,55 +21,53 @@ __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=SauceNAO.key)
data = json.loads(await task.search(img[0]))
except RequestError:
- raise RequestError('Request failed!')
-
- res = data['results']
+ 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 + (
@@ -78,5 +76,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))
diff --git a/ATRI/plugins/saucenao/data_source.py b/ATRI/plugins/saucenao/data_source.py
index cd88554..efe8fe1 100644
--- a/ATRI/plugins/saucenao/data_source.py
+++ b/ATRI/plugins/saucenao/data_source.py
@@ -5,23 +5,19 @@ URL = "https://saucenao.com/search.php"
class SauceNao:
- def __init__(self,
- api_key: str,
- output_type=2,
- testmode=1,
- dbmaski=32768,
- db=5,
- numres=5) -> None:
+ def __init__(
+ self, api_key: str, output_type=2, testmode=1, dbmaski=32768, db=5, numres=5
+ ) -> None:
params = dict()
- params['api_key'] = api_key
- params['output_type'] = output_type
- params['testmode'] = testmode
- params['dbmaski'] = dbmaski
- params['db'] = db
- params['numres'] = numres
+ params["api_key"] = api_key
+ params["output_type"] = output_type
+ params["testmode"] = testmode
+ params["dbmaski"] = dbmaski
+ params["db"] = db
+ params["numres"] = numres
self.params = params
-
+
async def search(self, url: str):
- self.params['url'] = url
+ self.params["url"] = url
res = await post_bytes(url=URL, params=self.params)
return res