mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-09 09:26:55 +08:00
Merge remote-tracking branch 'origin/v3' into codex/manual-source-classification
This commit is contained in:
@@ -139,46 +139,46 @@ A field name ending in `*` is required. Put every action parameter in the `argum
|
||||
| `server.users.count` | Read provider user count.; no arguments |
|
||||
|
||||
### `activity.backdrops`
|
||||
Read recent provider backdrop images. Effect: `safe_read`. Providers: `ugreen, trimemedia`.
|
||||
Read recent provider backdrop images. Effect: `safe_read`. Providers: `ugreen, trimemedia, mediavault`.
|
||||
- `limit` (integer; default `50`): Number of items to return, from 1 to 200.
|
||||
- `remote` (boolean; default `False`): Return provider URLs that are remotely accessible.
|
||||
|
||||
### `activity.latest`
|
||||
Read recently added provider items. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Read recently added provider items. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `limit` (integer; default `50`): Number of items to return, from 1 to 200.
|
||||
- `username` (string): Read for this username; supported by Emby, Jellyfin, and ZSpace.
|
||||
|
||||
### `activity.resume`
|
||||
Read in-progress/resumable provider items. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Read in-progress/resumable provider items. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `limit` (integer; default `50`): Number of items to return, from 1 to 200.
|
||||
- `username` (string): Read for this username; supported by Emby, Jellyfin, and ZSpace.
|
||||
|
||||
### `capabilities.list`
|
||||
List supported media-server actions and their complete argument contracts. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
List supported media-server actions and their complete argument contracts. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `action_name` (string): Optional exact action name used to return one capability contract.
|
||||
|
||||
### `instances.list`
|
||||
List configured media-server instances without connection secrets. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
List configured media-server instances without connection secrets. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `arguments`: `{}`
|
||||
|
||||
### `items.count`
|
||||
Count items below one library or parent. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Count items below one library or parent. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `parent` (string|integer): Library or parent item ID; Navidrome may omit it and use music.
|
||||
- Rule: parent is required except for Navidrome, which defaults to music.
|
||||
|
||||
### `items.detail`
|
||||
Read one provider item by native ID. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Read one provider item by native ID. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `item_id*` (string): Provider-native item ID returned by the selected media server.
|
||||
|
||||
### `items.list`
|
||||
Page items below one library or parent. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Page items below one library or parent. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `parent` (string|integer): Library or parent item ID; Navidrome may omit it and use music.
|
||||
- `offset` (integer; default `0`): Zero-based list offset.
|
||||
- `limit` (integer; default `50`): Number of items to return, from 1 to 200.
|
||||
- Rule: parent is required except for Navidrome, which ignores it.
|
||||
|
||||
### `items.movies.search`
|
||||
Search provider-native movie items by title and optional year. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia`.
|
||||
Search provider-native movie items by title and optional year. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, mediavault`.
|
||||
- `title*` (string): Movie title.
|
||||
- `year` (string|integer): Optional release year.
|
||||
|
||||
@@ -190,7 +190,7 @@ Search provider-native music by title, artist, or album. Effect: `safe_read`. Pr
|
||||
- Rule: Provide at least one of title, artist, and album.
|
||||
|
||||
### `items.season_episodes`
|
||||
Read native episode coverage for one series and optional season. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia`.
|
||||
Read native episode coverage for one series and optional season. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, mediavault`.
|
||||
- `item_id` (string): Provider-native item ID returned by the selected media server.
|
||||
- `title` (string): Series title; provide it or item_id.
|
||||
- `year` (string|integer): Optional premiere year.
|
||||
@@ -198,12 +198,12 @@ Read native episode coverage for one series and optional season. Effect: `safe_r
|
||||
- Rule: Provide at least one of item_id and title.
|
||||
|
||||
### `libraries.list`
|
||||
List visible provider libraries. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
List visible provider libraries. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `hidden` (boolean; default `False`): Return only libraries configured for synchronization.
|
||||
- `username` (string): Read libraries visible to this username; supported by Emby, Jellyfin, and ZSpace.
|
||||
|
||||
### `library.scan`
|
||||
Trigger a provider library scan. Effect: `external_side_effect`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Trigger a provider library scan. Effect: `external_side_effect`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `scan_mode` (string|integer): UGREEN-native scan mode; omit it for every other provider.
|
||||
|
||||
### `metadata.refresh`
|
||||
@@ -215,11 +215,11 @@ Read active playback sessions. Effect: `safe_read`. Providers: `emby, jellyfin,
|
||||
- `arguments`: `{}`
|
||||
|
||||
### `playback.url`
|
||||
Build the provider play URL for one item. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Build the provider play URL for one item. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `item_id*` (string): Provider-native item ID returned by the selected media server.
|
||||
|
||||
### `server.statistics`
|
||||
Read media counts and provider statistics. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome`.
|
||||
Read media counts and provider statistics. Effect: `safe_read`. Providers: `emby, jellyfin, plex, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `arguments`: `{}`
|
||||
|
||||
### `server.user.library_folders`
|
||||
@@ -227,7 +227,7 @@ Read the current user's visible library folders. Effect: `safe_read`. Providers:
|
||||
- `arguments`: `{}`
|
||||
|
||||
### `server.users.count`
|
||||
Read provider user count. Effect: `safe_read`. Providers: `emby, jellyfin, zspace, ugreen, trimemedia, navidrome`.
|
||||
Read provider user count. Effect: `safe_read`. Providers: `emby, jellyfin, zspace, ugreen, trimemedia, navidrome, mediavault`.
|
||||
- `arguments`: `{}`
|
||||
|
||||
## Safety And Verification
|
||||
|
||||
@@ -25,6 +25,7 @@ ALL_PROVIDERS = (
|
||||
"ugreen",
|
||||
"trimemedia",
|
||||
"navidrome",
|
||||
"mediavault",
|
||||
)
|
||||
PROVIDER_CLASSES = {
|
||||
"emby": "app.modules.emby.emby:Emby",
|
||||
@@ -34,6 +35,7 @@ PROVIDER_CLASSES = {
|
||||
"ugreen": "app.modules.ugreen.ugreen:Ugreen",
|
||||
"trimemedia": "app.modules.trimemedia.trimemedia:TrimeMedia",
|
||||
"navidrome": "app.modules.navidrome.navidrome:Navidrome",
|
||||
"mediavault": "app.modules.mediavault.mediavault:MediaVault",
|
||||
}
|
||||
_UNSET = object()
|
||||
|
||||
@@ -122,7 +124,7 @@ ACTIONS: dict[str, ActionSpec] = {
|
||||
"server.users.count": ActionSpec(
|
||||
"Read provider user count.",
|
||||
"safe_read",
|
||||
("emby", "jellyfin", "zspace", "ugreen", "trimemedia", "navidrome"),
|
||||
("emby", "jellyfin", "zspace", "ugreen", "trimemedia", "navidrome", "mediavault"),
|
||||
),
|
||||
"server.user.library_folders": ActionSpec(
|
||||
"Read the current user's visible library folders.",
|
||||
@@ -157,7 +159,7 @@ ACTIONS: dict[str, ActionSpec] = {
|
||||
"items.movies.search": ActionSpec(
|
||||
"Search provider-native movie items by title and optional year.",
|
||||
"safe_read",
|
||||
("emby", "jellyfin", "plex", "zspace", "ugreen", "trimemedia"),
|
||||
("emby", "jellyfin", "plex", "zspace", "ugreen", "trimemedia", "mediavault"),
|
||||
(
|
||||
ArgumentSpec("title", "string", "Movie title.", required=True),
|
||||
ArgumentSpec("year", "string|integer", "Optional release year."),
|
||||
@@ -177,7 +179,7 @@ ACTIONS: dict[str, ActionSpec] = {
|
||||
"items.season_episodes": ActionSpec(
|
||||
"Read native episode coverage for one series and optional season.",
|
||||
"safe_read",
|
||||
("emby", "jellyfin", "plex", "zspace", "ugreen", "trimemedia"),
|
||||
("emby", "jellyfin", "plex", "zspace", "ugreen", "trimemedia", "mediavault"),
|
||||
(
|
||||
ITEM_ID,
|
||||
ArgumentSpec("title", "string", "Series title; provide it or item_id."),
|
||||
@@ -199,7 +201,7 @@ ACTIONS: dict[str, ActionSpec] = {
|
||||
"activity.backdrops": ActionSpec(
|
||||
"Read recent provider backdrop images.",
|
||||
"safe_read",
|
||||
("ugreen", "trimemedia"),
|
||||
("ugreen", "trimemedia", "mediavault"),
|
||||
(
|
||||
LIMIT,
|
||||
ArgumentSpec("remote", "boolean", "Return provider URLs that are remotely accessible.", default=False),
|
||||
|
||||
@@ -1460,6 +1460,7 @@ Purpose: Recommend an episode-number extraction template from supplied file samp
|
||||
### `transfer.file`
|
||||
`POST /api/v1/transfer/manual`; policy effect: `external_side_effect`.
|
||||
Purpose: Run MoviePilot's manual file-transfer and organization workflow.
|
||||
Failed durable history, including a `logid` request, retries the frozen plan through the scheduler unless an explicit media identity or `reorganize=true` requests replanning. Explicit replanning must first validate and discard the settled failed task; a pending manual review must be resolved before retrying.
|
||||
- `path_params`: none
|
||||
- `query`: `background` (boolean|null; default `False`): Run the transfer asynchronously and return before completion.
|
||||
- `body`: `episode_detail` (string|null): Episode mapping details used by manual transfer.; `episode_format` (string|null): Episode-number formatting rule used by manual transfer.; `episode_group` (string|null): TMDB episode-group identifier used for alternate episode ordering.; `episode_offset` (string|null): Integer offset added to detected episode numbers.; `episode_part` (string|null): Episode part number used when one episode is split across files.; `fileitem` (FileItem-Input): One complete source storage item returned by storage.list.; `fileitems` (array<FileItem-Input>|null): Additional source storage items included in the same manual transfer.; `from_history` (boolean|null; default `False`): Treat the transfer input as originating from an existing history record.; `library_category_folder` (boolean|null): Create or use a category-level folder in the target library.; `library_type_folder` (boolean|null): Create or use a media-type folder in the target library.; `logid` (integer|null): One download-history or transfer-log identifier used by manual transfer.; `logids` (array<integer>|null): Multiple download-history or transfer-log identifiers included in manual transfer.; `media_id` (string|null): Source-native media ID. Always pair it with the exact media_source returned by search.; `media_source` (MediaSource|null): Metadata source identifier. Preserve the exact value returned with media_id.; `min_filesize` (integer|null; default `0`): Minimum source file size accepted by manual transfer, in bytes.; `music_type` (string(recording,album)|null): Music identity level: recording, album, or artist where supported.; `preview` (boolean|null; default `False`): Validate and preview manual-transfer output without committing file changes.; `reorganize` (boolean|null; default `False`): Allow manual transfer to organize an item that was already processed.; `scrape` (boolean|null; default `False`): Generate metadata and images after manual transfer.; `season` (integer|null): Season number used by the media, search, subscription, or transfer operation.; `target_path` (string|null): Destination path used by manual transfer.; `target_storage` (string|null): Configured storage name receiving the manual transfer.; `transfer_type` (string|null): Manual-transfer mode, such as move, copy, link, or softlink.; `type_name` (string|null): Explicit media type name used when source IDs alone are ambiguous.
|
||||
|
||||
Reference in New Issue
Block a user