diff options
Diffstat (limited to 'ATRI/plugins/plugin_pixiv')
-rw-r--r-- | ATRI/plugins/plugin_pixiv/__init__.py | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/ATRI/plugins/plugin_pixiv/__init__.py b/ATRI/plugins/plugin_pixiv/__init__.py new file mode 100644 index 0000000..5826b49 --- /dev/null +++ b/ATRI/plugins/plugin_pixiv/__init__.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python3 +# -*- encoding: utf-8 -*- +''' +@File : __init__.py +@Time : 2020/10/11 14:38:49 +@Author : Kyomotoi +@Contact : [email protected] +@Github : https://github.com/Kyomotoi +@License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved. +''' +__author__ = 'kyomotoi' + +import re +import json + +from nonebot.plugin import on_command +from nonebot.adapters.cqhttp import Bot, Event + +from utils.utils_error import errorRepo +from utils.utils_banList import banList +from utils.utils_switch import checkSwitch +from utils.utils_request import request_get + + +plugin_name_0 = "pixiv-pic-search" +pixivSearchIMG = on_command('p站搜图') + [email protected]() # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + user = str(event.user_id) + group = str(event.group_id) + + state["user"] = user + state["group"] = group + + if banList(user, group): + if checkSwitch(plugin_name_0, group): + pid = str(event.message).strip() + + if pid: + state["pid"] = pid + else: + await pixivSearchIMG.finish(f"Service-{plugin_name_0} has been closed.") + [email protected]("pid", prompt="请发送目标PID码") # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + pid = state["pid"] + pid = re.findall(r"\d+", pid) + + if len(pid): + pass + else: + await pixivSearchIMG.reject("请发送纯阿拉伯数字的pid") + + await bot.send_msg( + user_id=state["user"], + group_id=state["group"], + message="别急!在搜索了!" + ) + + URL = f"https://api.imjad.cn/pixiv/v1/?type=illust&id={pid}" + data = {} + + try: + data = json.loads(request_get(URL)) + except: + await pixivSearchIMG.finish(errorRepo("请求数据失败")) + + msg0 = f'[CQ:at,qq={state["user"]}]\n' + msg0 += f"Search result:\n" + msg0 += f"Pid: {pid}\n" + msg0 += f'Title {data["response"][0]["title"]}\n' + msg0 += f'W&H: {data["response"][0]["width"]}x{data["response"][0]["height"]}\n' + msg0 += f'Tags: {data["response"][0]["tags"]}\n' + msg0 += f'Account Name: {data["response"][0]["user"]["account"]}\n' + msg0 += f'Author Name: {data["response"][0]["user"]["name"]}\n' + msg0 += f'Link: https://www.pixiv.net/users/{data["response"][0]["user"]["id"]}\n' + msg0 += f'IMG: https://pixiv.cat/{pid}.jpg' + + await pixivSearchIMG.finish(msg0) + + +plugin_name_1 = "pixiv-author-search" +pixivSearchAuthor = on_command("p站画师") + [email protected]() # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + user = str(event.user_id) + group = str(event.group_id) + + state["user"] = user + state["group"] = group + + if banList(user, group): + if checkSwitch(plugin_name_1, group): + author_id = str(event.message).strip() + + if author_id: + state["author_id"] = author_id + else: + await pixivSearchAuthor.finish(f"Service-{plugin_name_1} has been closed.") + [email protected]("author_id", prompt="请发送目标画师id") # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + author_id = state["author_id"] + author_id = re.findall(r"\d+", author_id) + + if len(author_id): + pass + else: + await pixivSearchAuthor.reject("请发送纯阿拉伯数字的画师id") + + await bot.send_msg( + user_id=state["user"], + group_id=state["group"], + message=f"别急!在搜索了!\n将展示画师[{author_id}]的前三项作品" + ) + + URL = f"https://api.imjad.cn/pixiv/v1/?type=member_illust&id={author_id}" + data = {} + + try: + data = json.loads(request_get(URL)) + except: + await pixivSearchAuthor.finish(errorRepo("请求网络失败")) + + for i in range(0,3): + pid = data["response"][i]["id"] + IMG = f"https://pixiv.cat/{author_id}.jpg" + data[i] = [f"{pid}", f"{IMG}"] + + msg0 = f'[CQ:at,qq={state["user"]}]\n' + + result = sorted( + data.items(), + key=lambda x:x[1], + reverse=True + ) + + t = 0 + + for i in result: + t += 1 + msg = f"\n---------------\n" + msg += f"({t})\n" + msg += f"Pid: {i[1][0]}\n{i[1][1]}" + msg0 += msg + + await pixivSearchAuthor.finish(msg0) + + +plugin_name_2 = "pixiv_rank" +pixivRank = on_command("p站排行榜") + [email protected]() # type: ignore +async def _(bot: Bot, event: Event, state: dict) -> None: + user = str(event.user_id) + group = str(event.group_id) + + if banList(user, group): + if checkSwitch(plugin_name_2, group): + + await bot.send_msg( + user_id=int(user), + group_id=int(group), + message="正在获取P站每日排行榜前五作品" + ) + + URL = "https://api.imjad.cn/pixiv/v1/?type=rank" + data = {} + + try: + data = json.loads(request_get(URL)) + except: + await pixivRank.finish(errorRepo("网络请求失败")) + + for i in range(0,5): + pid = data["response"][0]["works"][i]["work"]["id"] + IMG = f"https://pixiv.cat/{pid}.jpg" + data[i] = [f"{pid}", f"{IMG}"] + + msg0 = f"[CQ:at,qq={user}]" + + result = sorted( + data.items(), + key=lambda x:x[1], + reverse=True + ) + + t = 0 + + for i in result: + t += 1 + msg = "\n---------------\n" + msg += f"({t})\n" + msg += f"Pid: {i[1][0]}" + msg += f"{i[1][1]}" + msg0 += msg + + await pixivRank.finish(msg0) + + else: + await pixivRank.finish(f"Service-{plugin_name_2} has been closed.")
\ No newline at end of file |