"""通用平台视频解析编排层 — B站 / YouTube / Twitter 等""" from typing import Optional from nonebot import logger from nonebot_plugin_alconna import UniMessage from ..policy import Policy from ..services.fetchers.video_downloader import download_video from .sender import PendingMedia, _as_paths async def handle_universal( url: str, is_private: bool, policy: Policy | None = None, platform: str | None = None, ) -> tuple[Optional[PendingMedia], Optional[str]]: """ 下载通用平台视频 → 打包待发送媒体(上传/发送由 sender 按 policy 多级处理) Returns: (PendingMedia, public_url) — None 表示下载失败 """ video_file, title = await download_video(url) if not video_file: await UniMessage.text("视频下载失败。").send() return None, None logger.info(f"文件路径:{video_file}") return ( PendingMedia( files=_as_paths(video_file), image_post=False, is_private=is_private, policy=policy, platform=platform, title=title, ), None, )