From 9eef6e93edc028c25b349c4ea3a2adadd58f4a87 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 17 Oct 2026 12:57:00 +0800 Subject: [PATCH] fix: satisfy subscription search type checks --- app/chain/subscribe/search.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/chain/subscribe/search.py b/app/chain/subscribe/search.py index a802d4d36..ce968f918 100644 --- a/app/chain/subscribe/search.py +++ b/app/chain/subscribe/search.py @@ -109,7 +109,11 @@ def _best_version_target_episodes( target: SubscriptionSearchTarget, ) -> set[int]: """返回本轮洗版搜索覆盖的目标集数,用于区分首次下载与升级候选。""" - season_info = (target.missing.get(target.media_key) or {}).get(subscribe.season) + media_key = str(target.media_key) if target.media_key is not None else "" + season_info = ( + (target.missing.get(media_key) or {}).get(subscribe.season) + if subscribe.season is not None else None + ) if season_info and season_info.episodes: return set(season_info.episodes) start_episode = subscribe.start_episode or 1 @@ -126,8 +130,9 @@ def _build_subscription_candidate_filter( """按资源覆盖范围选择普通规则或洗版规则,再执行订阅候选校验。""" normal_groups, best_groups = _subscription_rule_groups(subscribe) if not subscribe.best_version or target.media.type != MediaType.TV: - return partial(owner._filter_search_contexts, subscribe) + return partial(cast(Any, owner)._filter_search_contexts, subscribe) + media = cast(MediaInfo, target.media) target_episodes = _best_version_target_episodes(subscribe, target) downloaded_episodes = set( owner._SubscribeChain__get_downloaded_best_version_episodes( @@ -156,15 +161,15 @@ def _build_subscription_candidate_filter( if not candidates: continue candidates = SearchResultOwner._filter_identified_contexts( - searchchain, + cast(Any, searchchain), candidates, - target.media, + media, groups, {}, None, ) filtered.extend( - owner._filter_search_contexts( + cast(Any, owner)._filter_search_contexts( subscribe, candidates, apply_best_version=apply_best_version,