diff --git a/app/api/endpoints/douban.py b/app/api/endpoints/douban.py index fa8e9cd0f..bc334a3bf 100644 --- a/app/api/endpoints/douban.py +++ b/app/api/endpoints/douban.py @@ -70,7 +70,7 @@ async def douban_credits( """ 根据豆瓣ID查询演员阵容,type_name: 电影/电视剧 """ - mediatype = MediaType(type_name) + mediatype = MediaType.from_agent(type_name) or MediaType(type_name) if mediatype == MediaType.MOVIE: return await DoubanChain().async_movie_credits(doubanid=doubanid) elif mediatype == MediaType.TV: @@ -93,7 +93,7 @@ async def douban_recommend( """ 根据豆瓣ID查询推荐电影/电视剧,type_name: 电影/电视剧 """ - mediatype = MediaType(type_name) + mediatype = MediaType.from_agent(type_name) or MediaType(type_name) if mediatype == MediaType.MOVIE: medias = await DoubanChain().async_movie_recommend(doubanid=doubanid) elif mediatype == MediaType.TV: diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index fc256483c..ef1e67c4f 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -697,7 +697,7 @@ async def detail( """ 根据媒体来源和原生 ID 查询影视或音乐信息 """ - mtype = MediaType(type_name) + mtype = MediaType.from_agent(type_name) or MediaType(type_name) normalized_source, normalized_media_id = resolve_media_identity( media_source=media_source, media_id=media_id, diff --git a/app/api/endpoints/mediaserver.py b/app/api/endpoints/mediaserver.py index dc20fce75..e2c99f5c6 100644 --- a/app/api/endpoints/mediaserver.py +++ b/app/api/endpoints/mediaserver.py @@ -166,7 +166,7 @@ def not_exists( """ # 媒体信息 meta = MetaInfo(title=media_in.title) - mtype = MediaType(media_in.type) if media_in.type else None + mtype = MediaType.from_agent(media_in.type) or MediaType(media_in.type) if media_in.type else None if mtype: meta.type = mtype if media_in.season is not None: diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index 9e4148698..41d3bc42d 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -251,7 +251,7 @@ async def create_subscribe( """ # 类型转换 if subscribe_in.type: - mtype = MediaType(subscribe_in.type) + mtype = MediaType.from_agent(subscribe_in.type) or MediaType(subscribe_in.type) else: mtype = None # 非 TMDB 来源的标题可能自带季标记,入库前统一拆分。 @@ -625,7 +625,7 @@ async def popular_subscribes( if min_sub and count < min_sub: continue media = MediaInfo() - media.type = MediaType(sub.get("type")) + media.type = MediaType.from_agent(sub.get("type")) or MediaType(sub.get("type")) media.media_source = normalize_media_source(sub.get("media_source")) media.media_id = str(sub.get("media_id")) if sub.get("media_id") is not None else None # 处理标题 diff --git a/app/api/endpoints/tmdb.py b/app/api/endpoints/tmdb.py index b51a87069..412bab36b 100644 --- a/app/api/endpoints/tmdb.py +++ b/app/api/endpoints/tmdb.py @@ -116,7 +116,7 @@ async def tmdb_similar( """ 根据TMDBID查询类似电影/电视剧,type_name: 电影/电视剧 """ - mediatype = MediaType(type_name) + mediatype = MediaType.from_agent(type_name) or MediaType(type_name) if mediatype == MediaType.MOVIE: medias = await TmdbChain().async_movie_similar(tmdbid=tmdbid) elif mediatype == MediaType.TV: @@ -143,7 +143,7 @@ async def tmdb_recommend( """ 根据TMDBID查询推荐电影/电视剧,type_name: 电影/电视剧 """ - mediatype = MediaType(type_name) + mediatype = MediaType.from_agent(type_name) or MediaType(type_name) if mediatype == MediaType.MOVIE: medias = await TmdbChain().async_movie_recommend(tmdbid=tmdbid) elif mediatype == MediaType.TV: @@ -189,7 +189,7 @@ async def tmdb_credits( """ 根据TMDBID查询演员阵容,type_name: 电影/电视剧 """ - mediatype = MediaType(type_name) + mediatype = MediaType.from_agent(type_name) or MediaType(type_name) if mediatype == MediaType.MOVIE: persons = await TmdbChain().async_movie_credits(tmdbid=tmdbid, page=page) elif mediatype == MediaType.TV: diff --git a/app/api/endpoints/transfer.py b/app/api/endpoints/transfer.py index ebe6a9182..f7b5dd79e 100644 --- a/app/api/endpoints/transfer.py +++ b/app/api/endpoints/transfer.py @@ -790,12 +790,15 @@ def _execute_manual_transfer( mtype = None type_name = str(transer_item.type_name).strip() if transer_item.type_name else "" if type_name and type_name.lower() not in {"自动", "auto", "none"}: - try: - mtype = MediaType(type_name) - except ValueError: - return _SchemaResponse( - success=False, message=f"不支持的媒体类型:{type_name}" - ) + # 先按 Agent 使用的 movie/tv/music 取值解析,再回退到原生中文枚举值。 + mtype = MediaType.from_agent(type_name) + if mtype is None: + try: + mtype = MediaType(type_name) + except ValueError: + return _SchemaResponse( + success=False, message=f"不支持的媒体类型:{type_name}" + ) def _resolve_music_type(file_item: FileItem) -> Optional[str]: """为未显式指定实体的旧客户端按源项类型补全音乐命名空间。"""