mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-08-14 10:14:36 +08:00
feat(media): support iqiyi discover source
This commit is contained in:
@@ -59,6 +59,7 @@ _MEDIA_SOURCE_VALUE_ALIASES = {
|
||||
"mango_tv": "mangguodiscover",
|
||||
"migu_video": "migu",
|
||||
"tencent_video": "tencentvideodiscover",
|
||||
"iqiyi": "iqiyidiscover",
|
||||
}
|
||||
|
||||
|
||||
@@ -78,6 +79,7 @@ class MediaSource(str, Enum):
|
||||
MangoTV = "mangguodiscover"
|
||||
MiguVideo = "migu"
|
||||
TencentVideo = "tencentvideodiscover"
|
||||
Iqiyi = "iqiyidiscover"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""返回可直接用于 API 和数据库的规范值。"""
|
||||
|
||||
@@ -28,6 +28,8 @@ MEDIA_SOURCE_ALIASES = {
|
||||
"migu_video": MediaSource.MiguVideo,
|
||||
"tencentvideodiscover": MediaSource.TencentVideo,
|
||||
"tencent_video": MediaSource.TencentVideo,
|
||||
"iqiyi": MediaSource.Iqiyi,
|
||||
"iqiyidiscover": MediaSource.Iqiyi,
|
||||
}
|
||||
|
||||
MEDIA_SOURCE_PREFIXES = {
|
||||
@@ -44,6 +46,7 @@ MEDIA_SOURCE_PREFIXES = {
|
||||
MediaSource.MangoTV: "mangguodiscover",
|
||||
MediaSource.MiguVideo: "migu",
|
||||
MediaSource.TencentVideo: "tencentvideodiscover",
|
||||
MediaSource.Iqiyi: "iqiyidiscover",
|
||||
}
|
||||
|
||||
MUSIC_MEDIA_SOURCE_ORDER = (
|
||||
|
||||
@@ -4,7 +4,11 @@ from app.chain import ChainBase
|
||||
from app.core.context import MediaInfo
|
||||
from app.core.meta import MetaBase
|
||||
from app.schemas.types import MediaSource, MediaType
|
||||
from app.utils.media import resolve_media_identity
|
||||
from app.utils.media import (
|
||||
build_media_key,
|
||||
parse_media_source_selection,
|
||||
resolve_media_identity,
|
||||
)
|
||||
|
||||
|
||||
def _chain_without_init() -> ChainBase:
|
||||
@@ -22,6 +26,18 @@ def test_generic_source_id_resolves_as_fixed_enum() -> None:
|
||||
) == (MediaSource.AniList, "154587")
|
||||
|
||||
|
||||
def test_iqiyi_source_routes_through_unified_identity() -> None:
|
||||
"""爱奇艺探索来源应支持选择解析、身份解析和媒体键构造。"""
|
||||
assert parse_media_source_selection("iqiyi,iqiyidiscover") == (
|
||||
MediaSource.Iqiyi,
|
||||
)
|
||||
assert resolve_media_identity(
|
||||
media_source="iqiyi",
|
||||
media_id="album-1",
|
||||
) == (MediaSource.Iqiyi, "album-1")
|
||||
assert build_media_key("iqiyi", "album-1") == "iqiyidiscover:album-1"
|
||||
|
||||
|
||||
def test_plugin_source_is_preserved_as_dynamic_enum() -> None:
|
||||
"""格式合法的插件来源应作为动态枚举成员进入通用识别链。"""
|
||||
assert resolve_media_identity(
|
||||
|
||||
@@ -20,6 +20,13 @@ def test_media_source_normalization_accepts_plugin_source() -> None:
|
||||
assert normalize_media_source("plugin source:invalid") is None
|
||||
|
||||
|
||||
def test_iqiyi_media_source_aliases_are_normalized() -> None:
|
||||
"""爱奇艺探索来源的历史前缀和规范前缀应归一到同一媒体来源。"""
|
||||
assert normalize_media_source("iqiyi") is MediaSource.Iqiyi
|
||||
assert normalize_media_source("iqiyidiscover") is MediaSource.Iqiyi
|
||||
assert MediaSource("iqiyi") is MediaSource.Iqiyi
|
||||
|
||||
|
||||
def test_resolve_anilist_search_params_preserves_identity() -> None:
|
||||
"""精确搜索参数应保留枚举来源和原生 ID。"""
|
||||
params, message = asyncio.run(
|
||||
|
||||
Reference in New Issue
Block a user