diff --git a/plugins/search_image/__init__.py b/plugins/search_image/__init__.py deleted file mode 100644 index d10b9505..00000000 --- a/plugins/search_image/__init__.py +++ /dev/null @@ -1,133 +0,0 @@ -# # -*- coding: utf-8 -*- -# from typing import Dict -# -# from aiohttp.client_exceptions import ClientError -# from nonebot.plugin import on_command, on_message -# from nonebot.adapters.cqhttp import Bot, MessageEvent, GroupMessageEvent -# from nonebot.typing import T_State -# from services.log import logger -# from utils.utils import get_message_text, get_message_imgs -# from configs.config import Config -# from nonebot.rule import to_me -# -# -# -# __zx_plugin_name__ = "识图" -# __plugin_usage__ = """ -# usage: -# 识别图片 [二次元图片] -# 指令: -# 识图 [图片] -# """.strip() -# __plugin_des__ = "以图搜图,看破本源" -# __plugin_cmd__ = ["识图"] -# __plugin_type__ = ("一些工具",) -# __plugin_version__ = 0.1 -# __plugin_author__ = "synodriver" -# __plugin_settings__ = { -# "level": 5, -# "default_status": True, -# "limit_superuser": False, -# "cmd": ["识图"], -# } -# __plugin_configs__ = { -# "MAX_FIND_IMAGE_COUNT": {"value": 3, "help": "识图返回的最大结果数", "default_value": 3} -# } -# -# -# async def get_des(url: str, mode: str, user_id: int): -# """ -# :param url: 图片链接 -# :param mode: 图源 -# :param user_id: 用户 id -# """ -# if mode == "iqdb": -# async for msg in get_des_iqdb(url): -# yield msg -# elif mode == "ex": -# async for msg in get_des_ex(url): -# yield msg -# elif mode == "trace": -# async for msg in get_des_trace(url): -# yield msg -# elif mode == "yandex": -# async for msg in get_des_yandex(url): -# yield msg -# elif mode.startswith("asc"): -# async for msg in get_des_asc(url, user_id): -# yield msg -# else: -# async for msg in get_des_sau(url, user_id): -# yield msg -# -# -# setu = on_command("识图", aliases={"search"}, block=True, priority=5) -# -# -# @setu.handle() -# async def handle_first_receive(bot: Bot, event: MessageEvent, state: T_State): -# msg = get_message_text(event.json()) -# imgs = get_message_imgs(event.json()) -# if imgs: -# state["setu"] = imgs[0] -# if msg: -# state["mod"] = msg -# -# -# # ex/nao/trace/iqdb/ascii2d -# # @setu.got("mod", prompt="从哪里查找呢? ex/nao/trace/iqdb/ascii2d") -# # async def get_func(bot: Bot, event: MessageEvent, state: dict): -# # pass -# -# -# @setu.args_parser -# async def get_setu(bot: Bot, event: MessageEvent, state: T_State): -# imgs = get_message_imgs(event.json()) -# msg = get_message_text(event.json()) -# if not imgs: -# await setu.reject() -# if msg: -# state["mod"] = msg -# state["setu"] = imgs[0] -# -# -# @setu.got("setu", prompt="图呢?") -# async def get_setu(bot: Bot, event: MessageEvent, state: T_State): -# """ -# 发现没有的时候要发问 -# :return: -# """ -# url: str = state["setu"] -# mod: str = state["mod"] if state.get("mod") else "nao" # 模式 -# try: -# await bot.send(event=event, message="正在处理图片") -# idx = 1 -# async for msg in get_des(url, mod, event.user_id): -# if msg: -# await bot.send(event=event, message=msg) -# if idx == Config.get_config( -# "nonebot_plugin_picsearcher", "MAX_FIND_IMAGE_COUNT" -# ): -# break -# idx += 1 -# if id == 1: -# await bot.send(event=event, message="没找着.") -# logger.info( -# f"(USER {event.user_id}, GROUP " -# f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'}) 识图:{url}" -# ) -# # image_data: List[Tuple] = await get_pic_from_url(url) -# # await setu.finish("hso") -# except IndexError: -# # await bot.send(event, traceback.format_exc()) -# await setu.finish("参数错误") -# except ClientError: -# await setu.finish("连接失败") -# -# -# -# -# -# -# -# diff --git a/plugins/search_image/config.py b/plugins/search_image/config.py deleted file mode 100644 index 121ce757..00000000 --- a/plugins/search_image/config.py +++ /dev/null @@ -1,4 +0,0 @@ - -API_URL_SAUCENAO = 'https://saucenao.com/search.php' -API_URL_ASCII2D = 'https://ascii2d.net/search/url/' -API_URL_IQDB = 'https://iqdb.org/' diff --git a/plugins/search_image/saucenao.py b/plugins/search_image/saucenao.py deleted file mode 100644 index 8dd14280..00000000 --- a/plugins/search_image/saucenao.py +++ /dev/null @@ -1,47 +0,0 @@ -from utils.user_agent import get_user_agent -from utils.utils import get_local_proxy - - - - - -async def get_saucenao_identify_result(url: str) -> Result.DictListResult: - fetcher = HttpFetcher(timeout=10, flag='search_image_saucenao', headers=HEADERS) - - if not API_KEY: - logger.opt(colors=True).warning(f'Saucenao API KEY未配置, 无法使用Saucenao API进行识图!') - return Result.DictListResult(error=True, info='Saucenao API KEY未配置', result=[]) - - __payload = {'output_type': 2, - 'api_key': API_KEY, - 'testmode': 1, - 'numres': 6, - 'db': 999, - 'url': url} - saucenao_result = await fetcher.get_json(url=API_URL_SAUCENAO, params=__payload) - if saucenao_result.error: - logger.warning(f'get_saucenao_identify_result failed, Network error: {saucenao_result.info}') - return Result.DictListResult(error=True, info=f'Network error: {saucenao_result.info}', result=[]) - - __result_json = saucenao_result.result - - if __result_json['header']['status'] != 0: - logger.error(f"get_saucenao_identify_result failed, DataSource error, " - f"status code: {__result_json['header']['status']}") - return Result.DictListResult( - error=True, info=f"DataSource error, status code: {__result_json['header']['status']}", result=[]) - - __result = [] - for __item in __result_json['results']: - try: - if int(float(__item['header']['similarity'])) < 75: - continue - else: - __result.append({'similarity': __item['header']['similarity'], - 'thumbnail': __item['header']['thumbnail'], - 'index_name': __item['header']['index_name'], - 'ext_urls': __item['data']['ext_urls']}) - except Exception as res_err: - logger.warning(f"get_saucenao_identify_result failed: {repr(res_err)}, can not resolve results") - continue - return Result.DictListResult(error=False, info='Success', result=__result) \ No newline at end of file