diff --git a/CHANGELOG b/CHANGELOG index 1ba02fb1..31e55701 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -54,6 +54,11 @@ Fixes a Bug where the `dimensional_asset_rename` Setting would rename title card Fixes [`trakt_userlist` Builder](https://metamanager.wiki/en/latest/metadata/builders/trakt.html#trakt-userlist) where option `recommended` should have been `recommendations`. Fixes overlay remove/reset operations. Closes #1325 Fixes a Bug where `tmdb_vote_count` would be rejected as a filter. -Closes #1189 Fixes a Bug in the Resolution Default where the position would be completely off when changed +Closes #1189 Fixes a Bug in the Resolution Default where the position would be completely off when changed. +Closes #1336 Fixed "Mass Originally Available Update" attribute name within the wiki. +Closes #1327 Fixed an issue where searching for item assets could take longer than expected. +Closes #1346 Fixed an issue where using `PMM_TIME` with multiple times could ignore all but the last specified time. + + Various other Minor Fixes \ No newline at end of file diff --git a/VERSION b/VERSION index bf87a4fc..954bb72e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.3-develop170 +1.18.3-develop171 diff --git a/defaults/movie/seasonal.yml b/defaults/movie/seasonal.yml index daaac8b5..cb2d0cff 100644 --- a/defaults/movie/seasonal.yml +++ b/defaults/movie/seasonal.yml @@ -22,8 +22,8 @@ templates: imdb_list_<>: <> trakt_list_<>: <> mdblist_list_<>: <> - summary_<>: <> - name_<>: <> + summary_<>: <> + name_<>: <> emoji: "" emoji_<>: <> optional: diff --git a/defaults/overlays/images/resolution/1080phdr10plus.png b/defaults/overlays/images/resolution/1080pplus.png similarity index 100% rename from defaults/overlays/images/resolution/1080phdr10plus.png rename to defaults/overlays/images/resolution/1080pplus.png diff --git a/defaults/overlays/images/resolution/480phdr10plus.png b/defaults/overlays/images/resolution/480pplus.png similarity index 100% rename from defaults/overlays/images/resolution/480phdr10plus.png rename to defaults/overlays/images/resolution/480pplus.png diff --git a/defaults/overlays/images/resolution/4khdr10plus.png b/defaults/overlays/images/resolution/4kplus.png similarity index 100% rename from defaults/overlays/images/resolution/4khdr10plus.png rename to defaults/overlays/images/resolution/4kplus.png diff --git a/defaults/overlays/images/resolution/576phdr10plus.png b/defaults/overlays/images/resolution/576pplus.png similarity index 100% rename from defaults/overlays/images/resolution/576phdr10plus.png rename to defaults/overlays/images/resolution/576pplus.png diff --git a/defaults/overlays/images/resolution/720phdr10plus.png b/defaults/overlays/images/resolution/720pplus.png similarity index 100% rename from defaults/overlays/images/resolution/720phdr10plus.png rename to defaults/overlays/images/resolution/720pplus.png diff --git a/defaults/overlays/images/resolution/hdr10plus.png b/defaults/overlays/images/resolution/plus.png similarity index 100% rename from defaults/overlays/images/resolution/hdr10plus.png rename to defaults/overlays/images/resolution/plus.png diff --git a/defaults/overlays/resolution.yml b/defaults/overlays/resolution.yml index e046294d..ca2e3978 100644 --- a/defaults/overlays/resolution.yml +++ b/defaults/overlays/resolution.yml @@ -15,27 +15,27 @@ external_templates: conditions: - type: edition_dovetail value: - - 4K-HDR10PLUS + - 4K-Plus - 4K-DV - 4K-HDR - 4K - - 1080P-HDR10PLUS + - 1080P-Plus - 1080P-DV - 1080P-HDR - 1080P - - 720P-HDR10PLUS + - 720P-Plus - 720P-DV - 720P-HDR - 720P - - 576P-HDR10PLUS + - 576P-Plus - 576P-DV - 576P-HDR - 576P - - 480P-HDR10PLUS + - 480P-Plus - 480P-DV - 480P-HDR - 480P - - HDR10PLUS + - Plus - DV - HDR - type: resolution_dovetail @@ -219,7 +219,7 @@ templates: overlays: - 4K-HDR10PLUS-Dovetail: + 4K-Plus-Dovetail: variables: {key: 4k, alt: plus, weight: 160, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] 4K-DV-Dovetail: @@ -231,7 +231,7 @@ overlays: 4K-Dovetail: variables: {key: 4k, alt: "", weight: 130, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] - 1080P-HDR10PLUS-Dovetail: + 1080P-Plus-Dovetail: variables: {key: 1080p, alt: plus, weight: 125, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] 1080P-DV-Dovetail: @@ -243,7 +243,7 @@ overlays: 1080P-Dovetail: variables: {key: 1080p, alt: "", weight: 100, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] - 720P-HDR10PLUS-Dovetail: + 720P-Plus-Dovetail: variables: {key: 720p, alt: plus, weight: 95, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] 720P-DV-Dovetail: @@ -255,7 +255,7 @@ overlays: 720P-Dovetail: variables: {key: 720p, alt: "", weight: 70, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] - 576P-HDR10PLUS-Dovetail: + 576P-Plus-Dovetail: variables: {key: 576p, alt: plus, weight: 65, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] 576P-DV-Dovetail: @@ -267,7 +267,7 @@ overlays: 576P-Dovetail: variables: {key: 576p, alt: "", weight: 40, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] - 480P-HDR10PLUS-Dovetail: + 480P-Plus-Dovetail: variables: {key: 480p, alt: plus, weight: 35, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] 480P-DV-Dovetail: @@ -279,7 +279,7 @@ overlays: 480P-Dovetail: variables: {key: 480p, alt: "", weight: 10, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] - HDR10PLUS-Dovetail: + Plus-Dovetail: variables: {key: "", alt: plus, weight: 7, type: resolution_dovetail, allowed_libraries: movie} template: [name: resolution, name: standard] DV-Dovetail: @@ -359,7 +359,7 @@ overlays: variables: {key: ulysses, weight: 6, search: Ulysses, type: edition_dovetail, allowed_libraries: movie} template: [name: edition, name: standard] - 4K-HDR10PLUS: + 4K-Plus: variables: {key: 4k, alt: plus, weight: 160, type: resolution} template: [name: resolution, name: standard] 4K-DV: @@ -371,7 +371,7 @@ overlays: 4K: variables: {key: 4k, alt: "", weight: 130, type: resolution} template: [name: resolution, name: standard] - 1080P-HDR10PLUS: + 1080P-Plus: variables: {key: 1080p, alt: plus, weight: 125, type: resolution} template: [name: resolution, name: standard] 1080P-DV: @@ -383,7 +383,7 @@ overlays: 1080P: variables: {key: 1080p, alt: "", weight: 100, type: resolution} template: [name: resolution, name: standard] - 720P-HDR10PLUS: + 720P-Plus: variables: {key: 720p, alt: plus, weight: 95, type: resolution} template: [name: resolution, name: standard] 720P-DV: @@ -395,7 +395,7 @@ overlays: 720P: variables: {key: 720p, alt: "", weight: 70, type: resolution} template: [name: resolution, name: standard] - 576P-HDR10PLUS: + 576P-Plus: variables: {key: 576p, alt: plus, weight: 65, type: resolution} template: [name: resolution, name: standard] 576P-DV: @@ -407,7 +407,7 @@ overlays: 576P: variables: {key: 576p, alt: "", weight: 40, type: resolution} template: [name: resolution, name: standard] - 480P-HDR10PLUS: + 480P-Plus: variables: {key: 480p, alt: plus, weight: 35, type: resolution} template: [name: resolution, name: standard] 480P-DV: @@ -419,7 +419,7 @@ overlays: 480P: variables: {key: 480p, alt: "", weight: 10, type: resolution} template: [name: resolution, name: standard] - HDR10PLUS: + Plus: variables: {key: "", alt: plus, weight: 7, type: resolution} template: [name: resolution, name: standard] DV: diff --git a/docs/metadata/builders/plex.md b/docs/metadata/builders/plex.md index fe2d9800..756c414e 100644 --- a/docs/metadata/builders/plex.md +++ b/docs/metadata/builders/plex.md @@ -218,7 +218,7 @@ Tag search can take multiple values as a **list or a comma-separated string**. | `season_collection` | Uses the collection tags to match for season collections | ❌ | ✅ | ❌ | | `episode_collection` | Uses the collection tags to match for episode collections | ❌ | ✅ | ❌ | | `content_rating` | Uses the content rating tags to match | ✅ | ✅ | ❌ | -| `country` | Uses the country tags to match | ✅ | ❌ | ❌ | +| `country` | Uses the country tags to match | ✅ | ✅ | ❌ | | `decade`1 | Uses the year tag to match the decade | ✅ | ❌ | ❌ | | `director` | Uses the director tags to match | ✅ | ❌ | ❌ | | `genre` | Uses the genre tags to match | ✅ | ✅ | ❌ | diff --git a/docs/metadata/builders/smart.md b/docs/metadata/builders/smart.md index d2c0e4e9..4e0d4104 100644 --- a/docs/metadata/builders/smart.md +++ b/docs/metadata/builders/smart.md @@ -152,7 +152,7 @@ Tag filter can take multiple values as a **list or a comma-separated string**. | `season_collection` | Uses the collection tags to match for season collections | ❌ | ✅ | ❌ | | `episode_collection` | Uses the collection tags to match for episode collections | ❌ | ✅ | ❌ | | `content_rating` | Uses the content rating tags to match | ✅ | ✅ | ❌ | -| `country` | Uses the country tags to match | ✅ | ❌ | ❌ | +| `country` | Uses the country tags to match | ✅ | ✅ | ❌ | | `decade`1 | Uses the year tag to match the decade | ✅ | ❌ | ❌ | | `director` | Uses the director tags to match | ✅ | ❌ | ❌ | | `genre` | Uses the genre tags to match | ✅ | ✅ | ❌ | diff --git a/docs/metadata/filters.md b/docs/metadata/filters.md index dbced14e..cb481874 100644 --- a/docs/metadata/filters.md +++ b/docs/metadata/filters.md @@ -34,6 +34,18 @@ You can use the `plex_all: true` builder to filter from your entire library. **Filters can be very slow. Try to build or narrow your items using [Plex Search](builders/plex.md#plex-search) or another [Builder](builders) if possible.** +## Table Annotations + +**1** Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition). + +**2** Also filters out missing movies/shows from being added to Radarr/Sonarr. These Values also cannot use the `count` modifiers. + +**3** You can use `current_year` to have PMM use the current years value. This can be combined with a `-#` at the end to subtract that number of years. i.e. `current-2` + +**4** The actual numbers are pulled from the [PMM-Mediastingers](https://github.com/meisnate12/PMM-Mediastingers) Repo. + +**5** Also is a Tag Filter and can use all of those modifiers. + ## String Filters String filters can be used with either no modifier or with `.not`, `.is`, `.isnot`, `.begins`, `.ends`, or `.regex`. @@ -54,25 +66,21 @@ String filters can take multiple values **only as a list**. ### Attribute -| String Filter | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:-------------------------|:-----------------------------------------|:--------:|:-------------------:|:-------------------:|:--------:|:-------------------:|:-------------------:|:--------:| -| `title` | Uses the title attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `tmdb_title`2 | Uses the title from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `summary` | Uses the summary attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `studio` | Uses the studio attribute to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `edition` | Uses the edition attribute to match | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `record_label` | Uses the record label attribute to match | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | -| `folder` | Uses the item's folder to match | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | -| `filepath` | Uses the item's filepath to match | ✅ | ✅1 | ✅1 | ✅ | ✅1 | ✅1 | ✅ | -| `audio_track_title` | Uses the audio track titles to match | ✅ | ✅1 | ✅1 | ✅ | ✅1 | ✅1 | ✅ | -| `video_codec` | Uses the video codec tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `video_profile` | Uses the video profile tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `audio_codec` | Uses the audio codec tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `audio_profile` | Uses the audio profile tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | - -1 Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition). - -2 Also filters out missing movies/shows from being added to Radarr/Sonarr. These Values also cannot use the `count` modifiers. +| String Filter | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:---------------------------------------------------|:-----------------------------------------|:--------:|:---------------------------------------------:|:---------------------------------------------:|:---------:|:---------------------------------------------:|:---------------------------------------------:|:--------:| +| `title` | Uses the title attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `tmdb_title`**[2](#table-annotations)** | Uses the title from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `summary` | Uses the summary attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `studio` | Uses the studio attribute to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `edition` | Uses the edition attribute to match | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `record_label` | Uses the record label attribute to match | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | +| `folder` | Uses the item's folder to match | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | +| `filepath` | Uses the item's filepath to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | +| `audio_track_title` | Uses the audio track titles to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | +| `video_codec` | Uses the video codec tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `video_profile` | Uses the video profile tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `audio_codec` | Uses the audio codec tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `audio_profile` | Uses the audio profile tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | ## Tag Filters @@ -94,32 +102,26 @@ Tag filters can take multiple values as a **list or a comma-separated string**. ### Attribute -| Tag Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:-----------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:-------------------:|:-------------------:|:--------:|:--------:|:--------:|:--------:| -| `actor` | Uses the actor tags to match | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `collection` | Uses the collection tags to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `content_rating` | Uses the content rating tags to match | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `network` | Uses the network tags to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `country` | Uses the country tags to match | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | -| `director` | Uses the director tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `genre` | Uses the genre tags to match | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | -| `label` | Uses the label tags to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `producer` | Uses the actor tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `year`3 | Uses the year tag to match | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | -| `writer` | Uses the writer tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `resolution` | Uses the resolution tag to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `audio_language` | Uses the audio language tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `subtitle_language` | Uses the subtitle language tags to match | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `tmdb_genre`2 | Uses the genres from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `tmdb_keyword`2 | Uses the keywords from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `origin_country`2 | Uses TMDb origin country [ISO 3166-1 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) to match
Example: `origin_country: us` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `imdb_keyword`2 | Uses the keywords from IMDb to match See [Special](#special-filters) for more attributes | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | - -1 Filters using the special `episodes` [filter](#special-filters) with the [default percent](details/definition). - -2 Also filters out missing movies/shows from being added to Radarr/Sonarr. These Values also cannot use the `count` modifiers. - -3 You can use `current_year` to have PMM use the current years value. This can be combined with a `-#` at the end to subtract that number of years. i.e. `current-2` +| Tag Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:-------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:---------------------------------------------:|:---------------------------------------------:|:--------:|:--------:|:--------:|:--------:| +| `actor` | Uses the actor tags to match | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `collection` | Uses the collection tags to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `content_rating` | Uses the content rating tags to match | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `network` | Uses the network tags to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `country` | Uses the country tags to match | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | +| `director` | Uses the director tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `genre` | Uses the genre tags to match | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | +| `label` | Uses the label tags to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `producer` | Uses the actor tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `year`**[3](#table-annotations)** | Uses the year tag to match | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | +| `writer` | Uses the writer tags to match | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `resolution` | Uses the resolution tag to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `audio_language` | Uses the audio language tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `subtitle_language` | Uses the subtitle language tags to match | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `tmdb_genre`**[2](#table-annotations)** | Uses the genres from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `tmdb_keyword`**[2](#table-annotations)** | Uses the keywords from TMDb to match | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `origin_country`**[2](#table-annotations)** | Uses TMDb origin country [ISO 3166-1 alpha-2 codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) to match
Example: `origin_country: us` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `imdb_keyword`**[2](#table-annotations)** | Uses the keywords from IMDb to match See [Special](#special-filters) for more attributes | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ## Boolean Filters @@ -127,15 +129,13 @@ Boolean Filters have no modifiers. ### Attribute -| Boolean Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:-------------------|:---------------------------------------------------------------------------------------------------------|:-------:|:-------------------:|:-------------------:|:--------:|:--------:|:--------:|:--------:| -| `has_collection` | Matches every item that has or does not have a collection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `has_edition` | Matches every item that has or does not have an edition | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `has_stinger` | Matches every item that has a [media stinger](http://www.mediastinger.com/) (After/During Credits Scene) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `has_dolby_vision` | Matches every item that has or does not have a dolby vision | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `has_overlay` | Matches every item that has or does not have an overlay | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | - -1 Filters using the special `episodes` [filter](#special-filters) with the [default percent](details/definition). +| Boolean Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:-------------------|:---------------------------------------------------------------------------------------------------------|:-------:|:---------------------------------------------:|:---------------------------------------------:|:--------:|:--------:|:--------:|:--------:| +| `has_collection` | Matches every item that has or does not have a collection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `has_edition` | Matches every item that has or does not have an edition | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `has_stinger` | Matches every item that has a [media stinger](http://www.mediastinger.com/) (After/During Credits Scene) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `has_dolby_vision` | Matches every item that has or does not have a dolby vision | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `has_overlay` | Matches every item that has or does not have an overlay | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ## Date Filters @@ -155,16 +155,14 @@ Date filters can **NOT** take multiple values. ### Attribute -| Date Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:------------------------------------------|:-------------------------------------------------------------------------------|:--------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:| -| `release` | Uses the release date attribute (originally available) to match | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | -| `added` | Uses the date added attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `last_played` | Uses the date last played attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `first_episode_aired`1 | Uses the first episode aired date to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `last_episode_aired`1 | Uses the last episode aired date to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `last_episode_aired_or_never`1 | Similar to `last_episode_aired` but also includes those that haven't aired yet | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | - -1 Also filters out missing movies/shows from being added to Radarr/Sonarr. +| Date Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:----------------------------------------------------------------|:-------------------------------------------------------------------------------|:--------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:| +| `release` | Uses the release date attribute (originally available) to match | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | +| `added` | Uses the date added attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `last_played` | Uses the date last played attribute to match | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `first_episode_aired`**[2](#table-annotations)** | Uses the first episode aired date to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `last_episode_aired`**[2](#table-annotations) | Uses the last episode aired date to match | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `last_episode_aired_or_never`[2](#table-annotations) | Similar to `last_episode_aired` but also includes those that haven't aired yet | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ## Number Filters @@ -185,30 +183,22 @@ Number filters can **NOT** take multiple values. ### Attribute -| Number Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------:|:-------------------:|:-------------------:|:--------:|:-------------------:|:-------------------:|:--------:| -| `year`3 | Uses the year attribute to match
minimum: `1` | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | -| `tmdb_year`23 | Uses the year on TMDb to match
minimum: `1` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `critic_rating` | Uses the critic rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | -| `audience_rating` | Uses the audience rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | -| `user_rating` | Uses the user rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `tmdb_vote_count`2 | Uses the tmdb vote count to match
minimum: `1` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `plays` | Uses the plays attribute to match
minimum: `1` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `duration` | Uses the duration attribute to match using minutes
minimum: `0.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | -| `channels` | Uses the audio channels attribute to match
minimum: `0` | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `height` | Uses the height attribute to match
minimum: `0` | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `width` | Uses the width attribute to match
minimum: `0` | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `aspect` | Uses the aspect attribute to match
minimum: `0.0` | ✅ | ✅1 | ✅1 | ✅ | ❌ | ❌ | ❌ | -| `versions` | Uses the number of versions found to match
minimum: `0` | ✅ | ✅1 | ✅1 | ✅ | ✅1 | ✅1 | ✅ | -| `stinger_rating`4 | Uses the [media stinger](http://www.mediastinger.com/) rating to match. The media stinger rating is if the after/during credits scene is worth staying for.
minimum: `0` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | - -1 Filters using the special `episodes` [filter](#special-filters) with the [default percent](details/definition). - -2 Also filters out missing movies/shows from being added to Radarr/Sonarr. - -3 You can use `current_year` to have PMM use the current years value. This can be combined with a `-#` at the end to subtract that number of years. i.e. `current-2` - -4 The actual numbers are pulled from the [PMM-Mediastingers](https://github.com/meisnate12/PMM-Mediastingers) Repo. +| Number Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:----------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------:|:---------------------------------------------:|:---------------------------------------------:|:--------:|:---------------------------------------------:|:---------------------------------------------:|:--------:| +| `year`**[3](#table-annotations)** | Uses the year attribute to match
minimum: `1` | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | +| `tmdb_year`**[2](#table-annotations)****[3](#table-annotations)** | Uses the year on TMDb to match
minimum: `1` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `critic_rating` | Uses the critic rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | +| `audience_rating` | Uses the audience rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | +| `user_rating` | Uses the user rating attribute to match
`0.0` - `10.0` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `tmdb_vote_count`**[2](#table-annotations)** | Uses the tmdb vote count to match
minimum: `1` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `plays` | Uses the plays attribute to match
minimum: `1` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| `duration` | Uses the duration attribute to match using minutes
minimum: `0.0` | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | +| `channels` | Uses the audio channels attribute to match
minimum: `0` | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `height` | Uses the height attribute to match
minimum: `0` | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `width` | Uses the width attribute to match
minimum: `0` | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `aspect` | Uses the aspect attribute to match
minimum: `0.0` | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ❌ | ❌ | ❌ | +| `versions` | Uses the number of versions found to match
minimum: `0` | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | ✅**[1](#table-annotations)** | ✅**[1](#table-annotations)** | ✅ | +| `stinger_rating`**[4](#table-annotations)** | Uses the [media stinger](http://www.mediastinger.com/) rating to match. The media stinger rating is if the after/during credits scene is worth staying for.
minimum: `0` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ## Special Filters @@ -216,21 +206,17 @@ Special Filters each have their own set of rules for how they're used. ### Attribute -| Special Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | -|:-----------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:| -| `history` | Uses the release date attribute (originally available) to match dates throughout history
`day`: Match the Day and Month to Today's Date
`month`: Match the Month to Today's Date
`1-30`: Match the Day and Month to Today's Date or `1-30` days before Today's Date | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | -| `episodes` | Uses the item's episodes attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items episodes that must match the sub-filter. | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | -| `seasons` | Uses the item's seasons attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items seasons that must match the sub-filter. | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `tracks` | Uses the item's tracks attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items tracks that must match the sub-filter. | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | -| `albums` | Uses the item's albums attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items albums that must match the sub-filter. | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | -| `original_language`1
`original_language.not`1 | Uses TMDb original language [ISO 639-1 codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) to match
Example: `original_language: en, ko` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `tmdb_status`1
`tmdb_status.not`1 | Uses TMDb Status to match
**Values:** `returning`, `planned`, `production`, `ended`, `canceled`, `pilot` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `tmdb_type`1
`tmdb_type.not`1 | Uses TMDb Type to match
**Values:** `documentary`, `news`, `production`, `miniseries`, `reality`, `scripted`, `talk_show`, `video` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `imdb_keyword`12 | Uses the keywords from IMDb to match
`keywords`: list of keywords to match
`minimum_votes`: minimum number of votes keywords must have
`minimum_relevant`: minimum number of relevant votes keywords must have
`minimum_percentage`: minimum percentage of relevant votes keywords must have | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | - -1 Also filters out missing movies/shows from being added to Radarr/Sonarr. - -2 Also is a Tag Filter and can use all of those modifiers. +| Special Filters | Description | Movies | Shows | Seasons | Episodes | Artists | Albums | Track | +|:---------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:| +| `history` | Uses the release date attribute (originally available) to match dates throughout history
`day`: Match the Day and Month to Today's Date
`month`: Match the Month to Today's Date
`1-30`: Match the Day and Month to Today's Date or `1-30` days before Today's Date | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | +| `episodes` | Uses the item's episodes attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items episodes that must match the sub-filter. | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | +| `seasons` | Uses the item's seasons attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items seasons that must match the sub-filter. | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `tracks` | Uses the item's tracks attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items tracks that must match the sub-filter. | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | +| `albums` | Uses the item's albums attributes to match
Use the `percentage` attribute given a number between 0-100 to determine the percentage of an items albums that must match the sub-filter. | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | +| `original_language`**[2](#table-annotations)**
`original_language.not`**[2](#table-annotations)** | Uses TMDb original language [ISO 639-1 codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) to match
Example: `original_language: en, ko` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `tmdb_status`**[2](#table-annotations)**
`tmdb_status.not`**[2](#table-annotations)** | Uses TMDb Status to match
**Values:** `returning`, `planned`, `production`, `ended`, `canceled`, `pilot` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `tmdb_type`**[2](#table-annotations)**
`tmdb_type.not`**[2](#table-annotations)** | Uses TMDb Type to match
**Values:** `documentary`, `news`, `production`, `miniseries`, `reality`, `scripted`, `talk_show`, `video` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `imdb_keyword`**[2](#table-annotations)****[5](#table-annotations)** | Uses the keywords from IMDb to match
`keywords`: list of keywords to match
`minimum_votes`: minimum number of votes keywords must have
`minimum_relevant`: minimum number of relevant votes keywords must have
`minimum_percentage`: minimum percentage of relevant votes keywords must have | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ## Collection Filter Examples diff --git a/modules/plex.py b/modules/plex.py index 68c86960..ecffd69e 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -99,6 +99,7 @@ search_translation = { } show_translation = { "title": "show.title", + "country": "show.country", "studio": "show.studio", "rating": "show.rating", "audienceRating": "show.audienceRating", @@ -250,7 +251,7 @@ or_searches = [ "writer", "decade", "resolution", "year", "episode_title", "episode_year" ] movie_only_searches = [ - "country", "country.not", "director", "director.not", "producer", "producer.not", "writer", "writer.not", + "director", "director.not", "producer", "producer.not", "writer", "writer.not", "decade", "duplicate", "unplayed", "progress", "duration.gt", "duration.gte", "duration.lt", "duration.lte" "edition", "edition.not", "edition.is", "edition.isnot", "edition.begins", "edition.ends"