feat: support author prefix in output filename

This commit is contained in:
wangshaoqing 2026-05-06 17:19:33 +08:00
parent 96f96c2295
commit 5ba771f882
2 changed files with 21 additions and 2 deletions

View File

@ -138,9 +138,19 @@ def choose_video_url(url_list: list[str]) -> str:
raise ValueError("url_list 为空,无法选择视频地址。")
def build_output_path(title: str, video_id: str, output_dir: Path = Path("video")) -> Path:
def build_output_path(
title: str,
video_id: str,
output_dir: Path = Path("video"),
author_name: str | None = None,
) -> Path:
safe_title = sanitize_filename(title, fallback="untitled")
return output_dir / f"{safe_title}-{video_id}.mp4"
if author_name:
safe_author = sanitize_filename(author_name, fallback="unknown")
filename = f"[{safe_author}]{safe_title}-{video_id}.mp4"
else:
filename = f"{safe_title}-{video_id}.mp4"
return output_dir / filename
def build_browser_address(browser_port: int | None) -> str | None:

View File

@ -82,6 +82,15 @@ class DouyinModuleTests(unittest.TestCase):
output_path = module.build_output_path("测试标题", "123456")
self.assertEqual(output_path.as_posix(), "video/测试标题-123456.mp4")
def test_build_output_path_with_author_uses_bracket_format(self) -> None:
module = importlib.import_module("Douyin")
output_path = module.build_output_path(
title="测试标题",
video_id="123456",
author_name="测试博主"
)
self.assertEqual(output_path.as_posix(), "video/[测试博主]测试标题-123456.mp4")
def test_extract_aweme_payload_uses_dict_body(self) -> None:
module = importlib.import_module("Douyin")
response = FakeResponse({"aweme_list": []}, "")