summaryrefslogtreecommitdiff
path: root/ATRI/plugins/pixiv.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/pixiv.py')
-rw-r--r--ATRI/plugins/pixiv.py174
1 files changed, 174 insertions, 0 deletions
diff --git a/ATRI/plugins/pixiv.py b/ATRI/plugins/pixiv.py
new file mode 100644
index 0000000..d5b5b62
--- /dev/null
+++ b/ATRI/plugins/pixiv.py
@@ -0,0 +1,174 @@
+# -*- coding:utf-8 -*-
+import time
+import json
+from nonebot import on_command, CommandSession
+import nonebot
+
+from ATRI.modules import response # type: ignore
+
+
+bot = nonebot.get_bot()
+master = bot.config.SUPERUSERS
+
+URL_1 = f'https://api.imjad.cn/pixiv/v1/?type=illust&id=' #单图搜索
+URL_2 = f'https://api.imjad.cn/pixiv/v1/?type=member_illust&id=' #画师作品搜索
+URL_3 = f'https://api.imjad.cn/pixiv/v1/?type=rank' #每日排行榜
+
+
+IMG_SEACH_REPLY = """[CQ:at,qq={user}]
+搜索结果如下:
+Pid: {pid}
+Title: {title}
+宽高: {width}x{height}
+Tags: {tags}
+账号名称: {account}
+名称: {name}
+Link: {user_link}
+{img}
+---------------
+完成时间:{time}s"""
+
+
+@on_command('pixiv_seach_img', aliases = ['p站搜图', 'P站搜图', '批站搜图'], only_to_me = False)
+async def _(session: CommandSession):
+ with open(f'ATRI\\plugins\\switch\\switch.json', 'r') as f:
+ data = json.load(f)
+
+ if data["pixiv_seach_img"] == 0:
+ user = session.event.user_id
+ pid = session.current_arg.strip()
+
+ if not pid:
+ pid = session.get('message', prompt = '请告诉ATRI需要查询的Pid码')
+
+ start =time.perf_counter()
+ await session.send('开始P站搜图\n如搜索时间过长或许为图片过大上传较慢')
+
+ URL = URL_1 + pid
+
+ dc = json.loads(response.request_api(URL))
+
+ if not dc:
+ session.finish('ATRI在网络上走散了...请重试...')
+
+ img = f'https://pixiv.cat/{pid}.jpg'
+
+ end = time.perf_counter()
+
+ await session.send(
+ IMG_SEACH_REPLY.format(
+ user = user,
+ pid = pid,
+ title = dc["response"][0]["title"],
+ width = dc["response"][0]["width"],
+ height = dc["response"][0]["height"],
+ tags = dc["response"][0]["tags"],
+ account = dc["response"][0]["user"]["account"],
+ name = dc["response"][0]["user"]["name"],
+ user_link = f'https://www.pixiv.net/users/' + f'{dc["response"][0]["user"]["id"]}',
+ img = f'[CQ:image, file={img}]',
+ time = round(end - start, 3)
+ )
+ )
+
+ else:
+ await session.send('该功能已被禁用...')
+
+
+@on_command('pixiv_seach_author', aliases = ['画师'], only_to_me = False)
+async def _(session: CommandSession):
+ with open(f'ATRI\\plugins\\switch\\switch.json', 'r') as f:
+ data = json.load(f)
+
+ if data["pixiv_seach_author"] == 0:
+ user = session.event.user_id
+ author_id = session.current_arg.strip()
+
+ if not author_id:
+ author_id = session.get('message', prompt = '请告诉ATRI需要查询的画师ID')
+
+ start =time.perf_counter()
+ await session.send(f'开始获取画师{author_id}的前三项作品\n如获取时间过长或许为图片过大上传较慢')
+
+ URL = URL_2 + author_id
+
+ dc = json.loads(response.request_api(URL))
+
+ if not dc:
+ session.finish('ATRI在网络上走散了...请重试...')
+
+ d ={}
+
+ for i in range(0,3):
+ pid = dc["response"][i]["id"]
+ pidURL = f'https://pixiv.cat/{pid}.jpg'
+ d[i] = [f'{pid}',f'{pidURL}']
+
+ msg0 = (f'[CQ:at,qq={user}]\n画师id:{author_id},接下来展示前三作品')
+
+ result = sorted(
+ d.items(),
+ key = lambda x:x[1],
+ reverse = True
+ )
+
+ t = 0
+
+ for i in result:
+ t += 1
+ msg = (f'\n---------------\n({t})\nPid: {i[1][0]}\n[CQ:image, file={i[1][1]}]')
+ msg0 += msg
+ end = time.perf_counter()
+
+ msg1 = (f'\n---------------\n完成时间:{round(end - start, 3)}s')
+ msg0 += msg1
+
+ await session.send(msg0)
+
+ else:
+ await session.send('该功能已被禁用...')
+
+
+@on_command('pixiv_daily_rank', aliases = ['P站排行榜', '批站排行榜', 'p站排行榜'], only_to_me = False)
+async def _(session: CommandSession):
+ with open(f'ATRI\\plugins\\switch\\switch.json', 'r') as f:
+ data = json.load(f)
+
+ if data["pixiv_daily_rank"] == 0:
+ user = session.event.user_id
+
+ await session.send('ATRI正在获取P站每日排行榜前五作品...')
+
+ start =time.perf_counter()
+ dc = json.loads(response.request_api(URL_3))
+
+ d = {}
+
+ for i in range(0,5):
+ pid = dc["response"][0]["works"][i]["work"]["id"]
+ pidURL = f'https://pixiv.cat/{pid}.jpg'
+ d[i] = [f'{pid}',f'{pidURL}']
+
+ msg0 = (f'[CQ:at,qq={user}]')
+
+ result = sorted(
+ d.items(),
+ key = lambda x:x[1],
+ reverse = True
+ )
+
+ t = 0
+
+ for i in result:
+ t += 1
+ msg = (f'\n---------------\n({t})\nPid: {i[1][0]}\n[CQ:image, file={i[1][1]}]')
+ msg0 += msg
+ end = time.perf_counter()
+
+ msg1 = (f'\n---------------\n完成时间:{round(end - start, 3)}s')
+ msg0 += msg1
+
+ await session.send(msg0)
+
+ else:
+ await session.send('该功能已被禁用...') \ No newline at end of file