2021-11-28 14:55:10 +00:00
|
|
|
import re
|
2022-09-23 08:57:04 +00:00
|
|
|
from io import BytesIO
|
2021-11-28 14:55:10 +00:00
|
|
|
|
|
|
|
from pyrogram import Client, filters, ContinuePropagation
|
|
|
|
from pyrogram.types import Message
|
|
|
|
|
2023-01-12 13:19:54 +00:00
|
|
|
from defs.bilibili import (
|
|
|
|
b23_extract,
|
|
|
|
video_info_get,
|
|
|
|
binfo_image_create,
|
|
|
|
get_dynamic_screenshot_pc,
|
2023-08-05 05:33:03 +00:00
|
|
|
check_and_refresh_credential,
|
2023-01-12 13:19:54 +00:00
|
|
|
)
|
2021-11-28 14:55:10 +00:00
|
|
|
from defs.button import gen_button, Button
|
2023-08-18 13:28:16 +00:00
|
|
|
from defs.glover import bili_auth_user, bili_auth_chat
|
2023-06-23 15:37:55 +00:00
|
|
|
from init import bot
|
2023-08-05 05:33:03 +00:00
|
|
|
from scheduler import scheduler
|
2021-11-28 14:55:10 +00:00
|
|
|
|
|
|
|
|
2023-06-23 15:37:55 +00:00
|
|
|
@bot.on_message(
|
2023-01-12 13:19:54 +00:00
|
|
|
filters.incoming
|
|
|
|
& filters.text
|
|
|
|
& filters.regex(r"av(\d{1,12})|BV(1[A-Za-z0-9]{2}4.1.7[A-Za-z0-9]{2})|b23.tv")
|
2023-08-18 14:26:05 +00:00
|
|
|
& ~(
|
|
|
|
filters.command(["download", "bilibili_fav"])
|
|
|
|
& (filters.user(bili_auth_user) | filters.chat(bili_auth_chat))
|
|
|
|
)
|
2023-01-12 13:19:54 +00:00
|
|
|
)
|
2022-07-25 09:35:54 +00:00
|
|
|
async def bili_resolve(_: Client, message: Message):
|
2021-11-28 14:55:10 +00:00
|
|
|
"""
|
2023-01-12 13:19:54 +00:00
|
|
|
解析 bilibili 链接
|
2021-11-28 14:55:10 +00:00
|
|
|
"""
|
|
|
|
if "b23.tv" in message.text:
|
|
|
|
message.text = await b23_extract(message.text)
|
|
|
|
p = re.compile(r"av(\d{1,12})|BV(1[A-Za-z0-9]{2}4.1.7[A-Za-z0-9]{2})")
|
|
|
|
video_number = p.search(message.text)
|
|
|
|
if video_number:
|
2022-07-25 09:35:54 +00:00
|
|
|
video_number = video_number[0]
|
|
|
|
video_info = await video_info_get(video_number) if video_number else None
|
2023-05-27 13:45:56 +00:00
|
|
|
if video_info:
|
2023-05-27 12:55:04 +00:00
|
|
|
image = await binfo_image_create(video_info)
|
2023-08-18 09:26:57 +00:00
|
|
|
buttons = [Button(0, "Link", "https://b23.tv/" + video_info["bvid"])]
|
2023-08-18 13:28:16 +00:00
|
|
|
if (message.from_user and message.from_user.id in bili_auth_user) or (
|
|
|
|
message.chat and message.chat.id in bili_auth_chat
|
|
|
|
):
|
2023-08-18 09:26:57 +00:00
|
|
|
buttons.append(Button(1, "Download", "download_" + video_info["bvid"]))
|
2022-09-23 08:51:38 +00:00
|
|
|
await message.reply_photo(
|
|
|
|
image,
|
|
|
|
quote=True,
|
2023-08-18 09:26:57 +00:00
|
|
|
reply_markup=gen_button(buttons),
|
2022-09-23 08:51:38 +00:00
|
|
|
)
|
|
|
|
raise ContinuePropagation
|
|
|
|
|
|
|
|
|
2023-06-23 15:37:55 +00:00
|
|
|
@bot.on_message(
|
2023-01-12 13:19:54 +00:00
|
|
|
filters.incoming & filters.text & filters.regex(r"t.bilibili.com/([0-9]*)")
|
|
|
|
)
|
2022-09-23 08:51:38 +00:00
|
|
|
async def bili_dynamic(_: Client, message: Message):
|
|
|
|
# sourcery skip: use-named-expression
|
|
|
|
p = re.compile(r"t.bilibili.com/([0-9]*)")
|
|
|
|
dynamic_number = p.search(message.text)
|
|
|
|
if dynamic_number:
|
|
|
|
dynamic_id = dynamic_number[1]
|
|
|
|
image = await get_dynamic_screenshot_pc(dynamic_id)
|
|
|
|
if image:
|
2022-09-23 08:57:04 +00:00
|
|
|
# 将bytes结果转化为字节流
|
|
|
|
photo = BytesIO(image)
|
|
|
|
photo.name = "screenshot.png"
|
2022-09-23 08:51:38 +00:00
|
|
|
await message.reply_photo(
|
2022-09-23 08:57:04 +00:00
|
|
|
photo,
|
2022-09-23 08:51:38 +00:00
|
|
|
quote=True,
|
2023-01-12 13:19:54 +00:00
|
|
|
reply_markup=gen_button(
|
|
|
|
[Button(0, "Link", f"https://t.bilibili.com/{dynamic_id}")]
|
|
|
|
),
|
2022-09-23 08:51:38 +00:00
|
|
|
)
|
2021-11-28 14:55:10 +00:00
|
|
|
raise ContinuePropagation
|
2023-08-05 05:33:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
@scheduler.scheduled_job("interval", hours=1, id="bili_cookie_refresh")
|
|
|
|
async def bili_cookie_refresh():
|
|
|
|
await check_and_refresh_credential()
|