import time import json from datetime import datetime from random import choice from pathlib import Path import nonebot from nonebot import on_command, CommandSession from ATRI.modules import response # type: ignore bot = nonebot.get_bot() master = bot.config.SUPERUSERS URL_1 = 'https://api.imjad.cn/pixiv/v1/?type=illust&id=' #单图搜索 URL_2 = 'https://api.imjad.cn/pixiv/v1/?type=member_illust&id=' #画师作品搜索 URL_3 = '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""" def now_time(): now_ = datetime.now() hour = now_.hour minute = now_.minute now = hour + minute / 60 return now @on_command('pixiv_seach_img', aliases = ['p站搜图', 'P站搜图', '批站搜图'], only_to_me = False) async def _(session: CommandSession): user = session.event.user_id group = session.event.group_id try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f: data = json.load(f) except: data = {} try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f: data1 = json.load(f) except: data1 = {} if str(group) in data.keys(): pass else: if str(user) in data1.keys(): pass else: if 0 <= now_time() < 5.5: await session.send( choice( [ 'zzzz......', 'zzzzzzzz......', 'zzz...好涩哦..zzz....', '别...不要..zzz..那..zzz..', '嘻嘻..zzz..呐~..zzzz..' ] ) ) else: with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f: data = json.load(f) if data["pixiv_seach_img"] == "on": 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 = img, time = round(end - start, 3) ) ) else: await session.send('该功能已被禁用...') @on_command('pixiv_seach_author', aliases = ['画师', '搜索画师', '画师搜索'], only_to_me = False) async def _(session: CommandSession): user = session.event.user_id group = session.event.group_id try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f: data = json.load(f) except: data = {} try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f: data1 = json.load(f) except: data1 = {} if str(group) in data.keys(): pass else: if str(user) in data1.keys(): pass else: if 0 <= now_time() < 5.5: await session.send( choice( [ 'zzzz......', 'zzzzzzzz......', 'zzz...好涩哦..zzz....', '别...不要..zzz..那..zzz..', '嘻嘻..zzz..呐~..zzzz..' ] ) ) else: with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f: data = json.load(f) if data["pixiv_seach_author"] == "on": 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{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): user = session.event.user_id group = session.event.group_id try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobGroup.json', 'r') as f: data = json.load(f) except: data = {} try: with open(Path('.') / 'ATRI' / 'plugins' / 'noobList' / 'noobList.json', 'r') as f: data1 = json.load(f) except: data1 = {} if str(group) in data.keys(): pass else: if str(user) in data1.keys(): pass else: if 0 <= now_time() < 5.5: await session.send( choice( [ 'zzzz......', 'zzzzzzzz......', 'zzz...好涩哦..zzz....', '别...不要..zzz..那..zzz..', '嘻嘻..zzz..呐~..zzzz..' ] ) ) else: with open(Path('.') / 'ATRI' / 'plugins' / 'switch' / 'switch.json', 'r') as f: data = json.load(f) if data["pixiv_daily_rank"] == "on": 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{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('该功能已被禁用...')