mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
65 lines
2.8 KiB
Python
65 lines
2.8 KiB
Python
from nonebot import on_message
|
||
from services.log import logger
|
||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||
from nonebot.typing import T_State
|
||
from utils.utils import get_message_json, get_local_proxy
|
||
import json
|
||
from utils.user_agent import get_user_agent
|
||
from nonebot.adapters.cqhttp.permission import GROUP
|
||
from bilibili_api import video
|
||
from utils.message_builder import image
|
||
from models.group_remind import GroupRemind
|
||
from nonebot.adapters.cqhttp.exception import ActionFailed
|
||
import time
|
||
import aiohttp
|
||
from bilibili_api import settings
|
||
|
||
if get_local_proxy():
|
||
settings.proxy = get_local_proxy()
|
||
|
||
parse_bilibili_json = on_message(priority=1, permission=GROUP, block=False)
|
||
|
||
|
||
@parse_bilibili_json.handle()
|
||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||
if await GroupRemind.get_status(event.group_id, "blpar") and get_message_json(
|
||
event.json()
|
||
):
|
||
try:
|
||
data = json.loads(get_message_json(event.json())[0]["data"])
|
||
except (IndexError, KeyError):
|
||
return
|
||
if data:
|
||
if data.get("desc") == "哔哩哔哩":
|
||
async with aiohttp.ClientSession(headers=get_user_agent()) as session:
|
||
async with session.get(
|
||
data["meta"]["detail_1"]["qqdocurl"],
|
||
proxy=get_local_proxy(),
|
||
timeout=7,
|
||
) as response:
|
||
url = str(response.url).split("?")[0]
|
||
bvid = url.split("/")[-1]
|
||
vd_info = await video.Video(bvid=bvid).get_info()
|
||
aid = vd_info["aid"]
|
||
title = vd_info["title"]
|
||
author = vd_info["owner"]["name"]
|
||
reply = vd_info["stat"]["reply"] # 回复
|
||
favorite = vd_info["stat"]["favorite"] # 收藏
|
||
coin = vd_info["stat"]["coin"] # 投币
|
||
# like = vd_info['stat']['like'] # 点赞
|
||
# danmu = vd_info['stat']['danmaku'] # 弹幕
|
||
date = time.strftime("%Y-%m-%d", time.localtime(vd_info["ctime"]))
|
||
try:
|
||
await parse_bilibili_json.send(
|
||
image(vd_info["pic"]) + f"\nav{aid}\n标题:{title}\n"
|
||
f"UP:{author}\n"
|
||
f"上传日期:{date}\n"
|
||
f"回复:{reply},收藏:{favorite},投币:{coin}\n"
|
||
f"{url}"
|
||
)
|
||
except ActionFailed:
|
||
logger.warning(f"{event.group_id} 发送bilibili解析失败")
|
||
logger.info(
|
||
f"USER {event.user_id} GROUP {event.group_id} 解析bilibili转发 {url}"
|
||
)
|