#!/usr/bin/env python3 # -*- encoding: utf-8 -*- ''' @File : __init__.py @Time : 2020/11/07 14:31:30 @Author : Kyomotoi @Contact : kyomotoiowo@gmail.com @Github : https://github.com/Kyomotoi @License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved. ''' __author__ = 'kyomotoi' import re import json from requests import exceptions from nonebot.plugin import on_command from nonebot.adapters.cqhttp import Bot, Event from utils.utils_error import errorRepo from utils.utils_request import request_get from utils.utils_rule import check_banlist, check_switch plugin_name_0 = "pixiv-pic-search" pixivSearchIMG = on_command('p站搜图', rule=check_banlist() & check_switch(plugin_name_0)) @pixivSearchIMG.handle() # 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 pid = str(event.message).strip() if pid: state["pid"] = pid @pixivSearchIMG.got("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(event, "别急!在搜索了!") URL = f"https://api.imjad.cn/pixiv/v1/?type=illust&id={pid}" data = {} try: data = json.loads(request_get(URL)) except exceptions: await pixivSearchIMG.finish(errorRepo("请求数据失败")) msg0 = f'[CQ:at,qq={state["user"]}]\n' msg0 += "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站画师", rule=check_banlist() & check_switch(plugin_name_1)) @pixivSearchAuthor.handle() # 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 author_id = str(event.message).strip() if author_id: state["author_id"] = author_id @pixivSearchAuthor.got("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(event, 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 exceptions: 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 = "\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站排行榜", rule=check_banlist() & check_switch(plugin_name_2)) @pixivRank.handle() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: user = str(event.user_id) await bot.send(event, "正在获取P站每日排行榜前五作品") URL = "https://api.imjad.cn/pixiv/v1/?type=rank" data = {} try: data = json.loads(request_get(URL)) except exceptions: 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)