From fc0101a64edd35234dcfd89f7df1ad5d07baed9e Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 19 Sep 2026 17:38:36 +0800 Subject: [PATCH] fix(imdb): handle null seasons response --- app/modules/imdb/api.py | 2 +- tests/test_imdb_module.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/modules/imdb/api.py b/app/modules/imdb/api.py index f01e974dc..cb68f9f45 100644 --- a/app/modules/imdb/api.py +++ b/app/modules/imdb/api.py @@ -508,7 +508,7 @@ class ImdbApi: def _parse_seasons(cls, data: Optional[dict]) -> list[ImdbSeason]: """解析 GraphQL 季编号列表。""" title = cls._first_title(data) or {} - values = title.get("episodes", {}).get("seasons") or [] + values = (title.get("episodes") or {}).get("seasons") or [] return [ImdbSeason(season=str(item["number"])) for item in values] @classmethod diff --git a/tests/test_imdb_module.py b/tests/test_imdb_module.py index 2177bee63..382850f36 100644 --- a/tests/test_imdb_module.py +++ b/tests/test_imdb_module.py @@ -242,6 +242,21 @@ def test_imdb_episode_parser_accepts_null_optional_objects() -> None: assert episodes[0].plot is None +def test_imdb_season_parser_accepts_null_episodes() -> None: + """季列表 GraphQL 的 episodes 为 null 时应按空列表处理。""" + seasons = ImdbApi._parse_seasons( + { + "titles": [ + { + "episodes": None, + } + ] + } + ) + + assert seasons == [] + + def test_imdb_clear_cache_registers_async_cleanup_in_running_loop() -> None: """同步清缓存入口在异步宿主中应登记任务,并保留原同步调用约定。"""