diff --git a/Douyin.py b/Douyin.py index 93251d5..8d60063 100644 --- a/Douyin.py +++ b/Douyin.py @@ -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: diff --git a/test_douyin.py b/test_douyin.py index fc11d99..217f545 100644 --- a/test_douyin.py +++ b/test_douyin.py @@ -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": []}, "")