summaryrefslogtreecommitdiff
path: root/ATRI/plugins/plugin_pixiv
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/plugin_pixiv')
-rw-r--r--ATRI/plugins/plugin_pixiv/__init__.py203
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