From 0dcbde64dadfec98f235d7fa135654c97e40bc09 Mon Sep 17 00:00:00 2001 From: xtaodada Date: Wed, 27 Nov 2024 17:09:58 +0800 Subject: [PATCH] fix: bilibili up user info --- defs/bilibili.py | 47 ++++++++++++++++++++++------------- defs/bilibili_download.py | 4 +-- defs/inline_result_filters.py | 11 ++++++-- defs/lofter.py | 4 +-- models/apis/twitter/client.py | 6 ++--- models/services/fragment.py | 10 ++++++-- modules/bilibili_download.py | 16 +++++++----- modules/dc.py | 9 +++++-- modules/exchange.py | 7 +++++- modules/geo.py | 4 ++- modules/start.py | 4 ++- modules/sticker_download.py | 20 +++++++++++---- 12 files changed, 96 insertions(+), 46 deletions(-) diff --git a/defs/bilibili.py b/defs/bilibili.py index 4ef2ba8..5332911 100644 --- a/defs/bilibili.py +++ b/defs/bilibili.py @@ -8,7 +8,7 @@ import string from bilibili_api import Credential, ResponseCodeException from bilibili_api.audio import Audio from bilibili_api.video import Video -from bilibili_api.user import User +from bilibili_api.utils.network import Api from pyrogram import ContinuePropagation from qrcode.image.pil import PilImage from io import BytesIO @@ -168,6 +168,13 @@ def numf(num: int): return view +async def get_user_info(mid: int): + api = "https://api.bilibili.com/x/web-interface/card" + params = {"mid": mid} + result = await Api(api, "GET", credential=credential).update_params(**params).result + return result + + async def binfo_up_info(video_info: dict): # UP主 # 等级 0-4 \uE6CB-F 5-6\uE6D0-1 @@ -176,35 +183,41 @@ async def binfo_up_info(video_info: dict): up_list = [] for up in video_info["staff"]: up_mid = up["mid"] - u = User(up_mid, credential=credential) - up_data = await u.get_user_info() + up_data = await get_user_info(up_mid) + nickname_color, level = ( + up_data["card"]["vip"]["nickname_color"], + up_data["card"]["level_info"]["current_level"], + ) up_list.append( { "name": up["name"], "up_title": up["title"], "face": up["face"], - "color": up_data["vip"]["nickname_color"] - if up_data["vip"]["nickname_color"] != "" - else "black", + "color": nickname_color if nickname_color != "" else "black", "follower": up["follower"], - "level": up_data["level"], + "level": level, } ) else: up_mid = video_info["owner"]["mid"] - u = User(up_mid, credential=credential) - up_data = await u.get_user_info() - up_stat = await u.get_relation_info() + up_data = await get_user_info(up_mid) + nickname_color, level = ( + up_data["card"]["vip"]["nickname_color"], + up_data["card"]["level_info"]["current_level"], + ) + name, face, follower = ( + up_data["card"]["name"], + up_data["card"]["face"], + up_data["follower"], + ) up_list = [ { - "name": up_data["name"], + "name": name, "up_title": "UP主", - "face": up_data["face"], - "color": up_data["vip"]["nickname_color"] - if up_data["vip"]["nickname_color"] != "" - else "black", - "follower": up_stat["follower"], - "level": up_data["level"], + "face": face, + "color": nickname_color if nickname_color != "" else "black", + "follower": follower, + "level": level, } ] return up_list diff --git a/defs/bilibili_download.py b/defs/bilibili_download.py index 594e48d..a1118ad 100644 --- a/defs/bilibili_download.py +++ b/defs/bilibili_download.py @@ -383,9 +383,7 @@ def gen_video_caption(v: Video, info: Dict) -> str: f"{info['title']}\n\n{info['desc']}\n\nhttps://b23.tv/{v.get_bvid()}" ) if len(caption) > 800: - caption = ( - f"{info['title']}\n\n简介过长,无法显示\n\nhttps://b23.tv/{v.get_bvid()}" - ) + caption = f"{info['title']}\n\n简介过长,无法显示\n\nhttps://b23.tv/{v.get_bvid()}" return caption diff --git a/defs/inline_result_filters.py b/defs/inline_result_filters.py index d09a78f..45c57fd 100644 --- a/defs/inline_result_filters.py +++ b/defs/inline_result_filters.py @@ -3,7 +3,14 @@ from re import Pattern from typing import Union from pyrogram.filters import create -from pyrogram.types import Message, CallbackQuery, InlineQuery, PreCheckoutQuery, ChosenInlineResult, Update +from pyrogram.types import ( + Message, + CallbackQuery, + InlineQuery, + PreCheckoutQuery, + ChosenInlineResult, + Update, +) def regex(pattern: Union[str, Pattern], flags: int = 0): @@ -27,5 +34,5 @@ def regex(pattern: Union[str, Pattern], flags: int = 0): return create( func, "RegexFilter", - p=pattern if isinstance(pattern, Pattern) else re.compile(pattern, flags) + p=pattern if isinstance(pattern, Pattern) else re.compile(pattern, flags), ) diff --git a/defs/lofter.py b/defs/lofter.py index 526acf4..8eb6d77 100644 --- a/defs/lofter.py +++ b/defs/lofter.py @@ -42,9 +42,7 @@ class LofterItem: async def check_exists(self): if await LofterPostModel.get_by_post_id(self.post_id): - self.text += ( - f'\n📄 此图集已被此频道收录' - ) + self.text += f'\n📄 此图集已被此频道收录' async def init(self): await self.check_exists() diff --git a/models/apis/twitter/client.py b/models/apis/twitter/client.py index 21695f1..f259fac 100644 --- a/models/apis/twitter/client.py +++ b/models/apis/twitter/client.py @@ -90,9 +90,9 @@ class TwitterClient: return await self.client.request(method, url, headers=headers, **kwargs) async def reset_session(self): - self.headers[ - "authorization" - ] = f"Basic {base64.b64encode(self.tokens[0].encode()).decode()}" + self.headers["authorization"] = ( + f"Basic {base64.b64encode(self.tokens[0].encode()).decode()}" + ) response = await self.request( "https://api.twitter.com/oauth2/token", method="POST", diff --git a/models/services/fragment.py b/models/services/fragment.py index 84aa78e..eae54e3 100644 --- a/models/services/fragment.py +++ b/models/services/fragment.py @@ -78,7 +78,10 @@ class UserName(BaseModel): if self.status == AuctionStatus.Available: text += f"最低出价:{self.now_price.text}\n" elif self.status == AuctionStatus.OnAuction: - text += f"目前最高出价:{self.now_price.text}\n" f"距离拍卖结束:{self.end_human_time}\n" + text += ( + f"目前最高出价:{self.now_price.text}\n" + f"距离拍卖结束:{self.end_human_time}\n" + ) elif self.status == AuctionStatus.Sold: text += ( f"售出价格:{self.now_price.text}\n" @@ -86,7 +89,10 @@ class UserName(BaseModel): f"售出时间:{self.strf_end_time}\n" ) elif self.status == AuctionStatus.Sale: - text += f"售价:{self.now_price.text}\n" f"距离出售结束:{self.end_human_time}\n" + text += ( + f"售价:{self.now_price.text}\n" + f"距离出售结束:{self.end_human_time}\n" + ) return text diff --git a/modules/bilibili_download.py b/modules/bilibili_download.py index fbda9fd..6712a55 100644 --- a/modules/bilibili_download.py +++ b/modules/bilibili_download.py @@ -33,9 +33,11 @@ async def bili_download_resolve(_: Client, message: Message): if video_db := await BiliFavAction.get_by_bv_id(video.get_bvid()): await message.reply_video( video_db.file_id, - caption=f"详细信息:https://t.me/{bilifav_channel_username}/{video_db.message_id}" - if video_db.message_id - else None, + caption=( + f"详细信息:https://t.me/{bilifav_channel_username}/{video_db.message_id}" + if video_db.message_id + else None + ), quote=True, ) raise ContinuePropagation @@ -55,9 +57,11 @@ async def bili_audio_download_resolve(_: Client, message: Message): if audio_db := await BiliFavAction.get_by_id(audio.get_auid()): await message.reply_audio( audio_db.file_id, - caption=f"详细信息:https://t.me/{bilifav_channel_username}/{audio_db.message_id}" - if audio_db.message_id - else None, + caption=( + f"详细信息:https://t.me/{bilifav_channel_username}/{audio_db.message_id}" + if audio_db.message_id + else None + ), quote=True, ) raise ContinuePropagation diff --git a/modules/dc.py b/modules/dc.py index c7cdfb3..8350047 100644 --- a/modules/dc.py +++ b/modules/dc.py @@ -66,7 +66,9 @@ async def dc_query(_: Client, inline_query: InlineQuery): results = [ InlineQueryResultArticle( title="查询 dc", - input_message_content=InputTextMessageContent(message_text="加载中,请等待。。。"), + input_message_content=InputTextMessageContent( + message_text="加载中,请等待。。。" + ), reply_markup=InlineKeyboardMarkup( [[InlineKeyboardButton(text="重试", callback_data="dc")]] ), @@ -82,7 +84,10 @@ async def dc_query(_: Client, inline_query: InlineQuery): def get_dc_text(dc: int): - return f"此会话所在数据中心为: DC{dc}\n" f"该数据中心位于 {geo_dic[str(dc)]}" + return ( + f"此会话所在数据中心为: DC{dc}\n" + f"该数据中心位于 {geo_dic[str(dc)]}" + ) @bot.on_chosen_inline_result(inline_result_filters.regex(r"^dc$")) diff --git a/modules/exchange.py b/modules/exchange.py index 6054682..1695f50 100644 --- a/modules/exchange.py +++ b/modules/exchange.py @@ -1,6 +1,11 @@ from pyrogram import Client, filters from pyrogram.enums import ChatType -from pyrogram.types import Message, InlineQuery, InlineQueryResultArticle, InputTextMessageContent +from pyrogram.types import ( + Message, + InlineQuery, + InlineQueryResultArticle, + InputTextMessageContent, +) from defs.exchange import exchange_client from scheduler import scheduler diff --git a/modules/geo.py b/modules/geo.py index cd40982..e4b3ee7 100644 --- a/modules/geo.py +++ b/modules/geo.py @@ -48,4 +48,6 @@ async def geo_command(_: Client, message: Message): msg = await message.reply_location( longitude=float(lat), latitude=float(lon), quote=True ) - await msg.reply(f"坐标:`{lat},{lon}`\n地址:{formatted_address}", quote=True) + await msg.reply( + f"坐标:`{lat},{lon}`\n地址:{formatted_address}", quote=True + ) diff --git a/modules/start.py b/modules/start.py index 836f625..b9783ff 100644 --- a/modules/start.py +++ b/modules/start.py @@ -66,7 +66,9 @@ async def empty_inline(_, inline_query: InlineQuery): ), InlineQueryResultArticle( title="exchange", - input_message_content=InputTextMessageContent("使用 exchange 来查询汇率数据"), + input_message_content=InputTextMessageContent( + "使用 exchange 来查询汇率数据" + ), description="使用 exchange 来查询汇率数据", ), ] diff --git a/modules/sticker_download.py b/modules/sticker_download.py index b4505ab..50a2245 100644 --- a/modules/sticker_download.py +++ b/modules/sticker_download.py @@ -54,7 +54,9 @@ async def process_single_sticker(client: "Client", message: "Message"): if temp := await cache.get(f"sticker:export:{message.from_user.id}"): try: await export_add(temp, message.sticker, client) - await message.reply_text("成功加入导出列表,结束选择请输入 /sticker_export_end", quote=True) + await message.reply_text( + "成功加入导出列表,结束选择请输入 /sticker_export_end", quote=True + ) except ValueError as exc: await message.reply(str(exc), quote=True) else: @@ -87,7 +89,9 @@ async def process_custom_emoji(client: "Client", message: "Message"): except AttributeError: await message.reply("无法获取贴纸", quote=True) raise ContinuePropagation - reply = await message.reply(f"正在下载 {len(stickers)} 个 emoji ...请耐心等待", quote=True) + reply = await message.reply( + f"正在下载 {len(stickers)} 个 emoji ...请耐心等待", quote=True + ) exc = None for sticker in stickers: target_file = None @@ -118,15 +122,21 @@ async def batch_start(_: "Client", message: "Message"): if "start" in message.command[0].lower(): if await cache.get(f"sticker:export:{uid}"): await message.reply( - "已经开始批量导出贴纸,请直接发送贴纸,完成选择请输入 /sticker_export_end", quote=True + "已经开始批量导出贴纸,请直接发送贴纸,完成选择请输入 /sticker_export_end", + quote=True, ) return await cache.set(f"sticker:export:{uid}", tempfile.mkdtemp()) - await message.reply("开始批量导出贴纸,请直接发送贴纸,完成选择请输入 /sticker_export_end", quote=True) + await message.reply( + "开始批量导出贴纸,请直接发送贴纸,完成选择请输入 /sticker_export_end", + quote=True, + ) else: target_dir = await cache.get(f"sticker:export:{uid}") if not target_dir: - await message.reply("未开始批量导出贴纸,请先使用命令 /sticker_export_start", quote=True) + await message.reply( + "未开始批量导出贴纸,请先使用命令 /sticker_export_start", quote=True + ) return file = None try: