mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
refactor: unify tmdb query contracts
This commit is contained in:
+240
-148
@@ -3216,159 +3216,194 @@
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_collection": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbCollectionRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"collection_id"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_discover": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbDiscoverRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"mtype",
|
||||
"page",
|
||||
"release_date",
|
||||
"sort_by",
|
||||
"vote_average",
|
||||
"vote_count",
|
||||
"with_genres",
|
||||
"with_keywords",
|
||||
"with_original_language",
|
||||
"with_watch_providers"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_episodes": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbEpisodesRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"episode_group",
|
||||
"season",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[TmdbEpisode]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_group_seasons": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbGroupRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"group_id"
|
||||
],
|
||||
"result_contract": "list[TmdbSeason]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_info": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "first_non_empty",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbInfoRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"mtype",
|
||||
"season",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "dict | None",
|
||||
"result_shape": "mapping",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_movie_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaPerson]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_movie_recommend": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_movie_similar": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_person_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbPersonPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"person_id"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_person_detail": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "first_non_empty",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbPersonRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"required_parameters": [
|
||||
"person_id"
|
||||
],
|
||||
"result_contract": "MediaPerson | None",
|
||||
"result_shape": "any",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
@@ -3376,80 +3411,91 @@
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_seasons": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[TmdbSeason]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_trending": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbTrendingRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_tv_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaPerson]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_tv_recommend": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"async_tmdb_tv_similar": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
@@ -5659,159 +5705,194 @@
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_collection": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbCollectionRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"collection_id"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_discover": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbDiscoverRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"mtype",
|
||||
"page",
|
||||
"release_date",
|
||||
"sort_by",
|
||||
"vote_average",
|
||||
"vote_count",
|
||||
"with_genres",
|
||||
"with_keywords",
|
||||
"with_original_language",
|
||||
"with_watch_providers"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_episodes": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbEpisodesRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"episode_group",
|
||||
"season",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[TmdbEpisode]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_group_seasons": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbGroupRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"group_id"
|
||||
],
|
||||
"result_contract": "list[TmdbSeason]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_info": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "first_non_empty",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbInfoRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"mtype",
|
||||
"season",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "dict | None",
|
||||
"result_shape": "mapping",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_movie_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaPerson]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_movie_recommend": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_movie_similar": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_person_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbPersonPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"person_id"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_person_detail": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "first_non_empty",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbPersonRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"required_parameters": [
|
||||
"person_id"
|
||||
],
|
||||
"result_contract": "MediaPerson | None",
|
||||
"result_shape": "any",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
@@ -5819,80 +5900,91 @@
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_seasons": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[TmdbSeason]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_trending": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbTrendingRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_tv_credits": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaPageRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"page",
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaPerson]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_tv_recommend": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
"version": 1
|
||||
},
|
||||
"tmdb_tv_similar": {
|
||||
"aggregation": "legacy",
|
||||
"aggregation": "ordered_list_merge",
|
||||
"error_policy": "isolate_provider",
|
||||
"execution": "sync_or_async",
|
||||
"family": "tmdb",
|
||||
"input_contract": "TmdbKeywordArguments",
|
||||
"input_contract": "TmdbMediaRequest",
|
||||
"plugin_short_circuit": true,
|
||||
"public_to_plugins": true,
|
||||
"required_parameters": [],
|
||||
"result_contract": "TmdbProviderResult",
|
||||
"result_shape": "any",
|
||||
"required_parameters": [
|
||||
"tmdbid"
|
||||
],
|
||||
"result_contract": "list[MediaInfo]",
|
||||
"result_shape": "list",
|
||||
"supports_async": true,
|
||||
"supports_sync": true,
|
||||
"timeout_policy": "caller_budget",
|
||||
|
||||
@@ -397,6 +397,37 @@ def test_sync_and_async_anilist_capabilities_share_contracts() -> None:
|
||||
assert contract.aggregation is expected
|
||||
|
||||
|
||||
def test_sync_and_async_tmdb_capabilities_share_contracts() -> None:
|
||||
"""TMDB 同步与异步查询应共享列表或首值契约。"""
|
||||
list_methods = {
|
||||
"tmdb_collection",
|
||||
"tmdb_discover",
|
||||
"tmdb_episodes",
|
||||
"tmdb_group_seasons",
|
||||
"tmdb_movie_credits",
|
||||
"tmdb_movie_recommend",
|
||||
"tmdb_movie_similar",
|
||||
"tmdb_person_credits",
|
||||
"tmdb_seasons",
|
||||
"tmdb_trending",
|
||||
"tmdb_tv_credits",
|
||||
"tmdb_tv_recommend",
|
||||
"tmdb_tv_similar",
|
||||
}
|
||||
value_methods = {"tmdb_info", "tmdb_person_detail"}
|
||||
|
||||
for sync_method in list_methods | value_methods:
|
||||
contract = get_module_method_contract(sync_method)
|
||||
assert contract is get_module_method_contract(f"async_{sync_method}")
|
||||
expected = (
|
||||
ModuleResultAggregation.ORDERED_LIST_MERGE
|
||||
if sync_method in list_methods
|
||||
else ModuleResultAggregation.FIRST_NON_EMPTY
|
||||
)
|
||||
assert contract.aggregation is expected
|
||||
assert contract.required_parameters
|
||||
|
||||
|
||||
def test_attachment_result_diagnostics_distinguish_bytes_and_strings() -> None:
|
||||
"""附件契约应区分二进制内容和可展示字符串,偏差仍仅供诊断。"""
|
||||
assert diagnose_module_result("download_qq_file_bytes", b"content") == ()
|
||||
|
||||
Reference in New Issue
Block a user