From f51361399d61c1e48cde696e654a68caf92f4ace Mon Sep 17 00:00:00 2001 From: YozoraXCII <96386153+YozoraXCII@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:44:43 +0000 Subject: [PATCH] various doc admonitions, table amendments, fix dynamic collections nav --- docs/builders/anilist.md | 4 +- docs/builders/filters.md | 29 +- docs/builders/smart.md | 4 +- docs/config/anidb.md | 42 +- docs/config/libraries.md | 18 +- docs/config/mdblist.md | 6 +- docs/config/myanimelist.md | 76 +- docs/config/omdb.md | 6 +- docs/config/operations.md | 11 +- docs/config/plex.md | 10 +- docs/config/radarr.md | 11 +- docs/config/settings.md | 638 ++--- docs/config/sonarr.md | 10 +- docs/config/tautulli.md | 6 +- docs/config/trakt.md | 22 +- docs/defaults/chart/anilist.md | 4 +- docs/defaults/chart/basic.md | 6 +- docs/defaults/chart/flixpatrol.md | 4 +- docs/defaults/chart/myanimelist.md | 4 +- docs/defaults/chart/other.md | 2 +- docs/defaults/chart/tautulli.md | 8 +- docs/defaults/chart/tmdb.md | 4 +- docs/defaults/chart/trakt.md | 4 +- docs/defaults/collection_list.md | 1 + docs/defaults/overlay_list.md | 1 + docs/defaults/overlays/flixpatrol.md | 6 +- docs/metadata/dynamic.md | 2246 +----------------- docs/metadata/dynamic_types.md | 2243 +++++++++++++++++ docs/metadata/metadata.md | 2 +- docs/metadata/overlay.md | 6 +- docs/metadata/playlist.md | 6 +- docs/metadata/templates.md | 2 +- docs/pmm/essentials/scripts/overlay-reset.md | 2 +- mkdocs.yml | 71 +- 34 files changed, 2700 insertions(+), 2815 deletions(-) create mode 100644 docs/metadata/dynamic_types.md diff --git a/docs/builders/anilist.md b/docs/builders/anilist.md index e3ca3694..d4b4a3f3 100644 --- a/docs/builders/anilist.md +++ b/docs/builders/anilist.md @@ -111,8 +111,8 @@ The `sync_mode: sync` and `collection_order: custom` Details are recommended sin |:------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `username` | **Description:** A user's AniList Username | | `list_name` | **Description:** A user's AniList List Name | -| `score.gt`1 | **Description:** Only return items that have a score greater then the given number.
**Values:** `0.0`-`10.0` | -| `score.gte`1 | **Description:** Only return items that have a score greater then or equal to the given number.
**Values:** `0.0`-`10.0` | +| `score.gt`1 | **Description:** Only return items that have a score greater than the given number.
**Values:** `0.0`-`10.0` | +| `score.gte`1 | **Description:** Only return items that have a score greater than or equal to the given number.
**Values:** `0.0`-`10.0` | | `score.lt`1 | **Description:** Only return items that have a score less then the given number.
**Values:** `0.0`-`10.0` | | `score.lte`1 | **Description:** Only return items that have a score less then or equal to the given number.
**Values:** `0.0`-`10.0` | | `sort_by` | **Description:** Sort Order to return
**Default:** `score`
**Values:**
`score`Sort by User Score
`popularity`Sort by Popularity
`status`Sort by Status
`progress`Sort by Progress
`last_updated`Sort by Last Updated
`last_added`Sort by Last Added
`start_date`Sort by Start Date
`completed_date`Sort by Completed Date
| diff --git a/docs/builders/filters.md b/docs/builders/filters.md index 7329c040..61423254 100644 --- a/docs/builders/filters.md +++ b/docs/builders/filters.md @@ -5,6 +5,7 @@ Filters allow for you to filter every item added to the collection/overlay/playl ## Using Filters Filters cannot do anything alone they require the use of at least one [Builder](../metadata/builders.md) to function. + You can have multiple filters in each set but an item must match at least one value from **each** filter to not be ignored. The values for each must match what Plex has including special characters in order to match. ```yaml @@ -31,19 +32,9 @@ All filter options are listed below. To display items filtered out add `show_fil 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](plex.md#plex-search) or another [Builder](../metadata/builders.md) if possible.** -[definition.md](details%2Fdefinition.md) -## Table Annotations - -**1** Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition.md). - -**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. +???+ warning + + Filters can be very slow, particularly on larger libraries. Try to build or narrow your items using a [Smart Label Collection](smart.md#smart-label), [Plex Search](plex.md#plex-search) or another [Builder](../metadata/builders.md) if possible. ## String Filters @@ -218,6 +209,18 @@ Special Filters each have their own set of rules for how they're used. | `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` | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | | `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 | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | +## Table Annotations + +**1** Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition.md). + +**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. + ## Collection Filter Examples A few examples are listed below: diff --git a/docs/builders/smart.md b/docs/builders/smart.md index 0bd681c1..66fa0945 100644 --- a/docs/builders/smart.md +++ b/docs/builders/smart.md @@ -2,7 +2,9 @@ Smart Builders allow Plex Meta Manager to create Smart Collections in two different ways. -** Smart Builders do not currently work with Playlists ** +???+ note + + Smart Builders do not currently work with Playlists ## Smart Label diff --git a/docs/config/anidb.md b/docs/config/anidb.md index 8f43574b..f0d96652 100644 --- a/docs/config/anidb.md +++ b/docs/config/anidb.md @@ -8,7 +8,7 @@ Using `username` and `password` allows you to access mature content with AniDB B **All AniDB Builders still work without this, they will just not have mature content** -A `anidb` mapping is in the root of the config file. +An `anidb` mapping is in the root of the config file. Below is a `anidb` mapping example and the full set of attributes: ```yaml @@ -30,31 +30,31 @@ anidb: | `username` | AniDB Username | N/A | :fontawesome-solid-circle-xmark:{ .red } | | `password` | AniDB Password | N/A | :fontawesome-solid-circle-xmark:{ .red } | -* To get a Client Name and Client Version please follow the following steps. +To get a Client Name and Client Version please follow the following steps. -1. Login to [AniDB](https://anidb.net/) -2. Go to you [API Client Page](https://anidb.net/software/add) and go to the `Add New Project` Tab. +1. Login to [AniDB](https://anidb.net/) +2. Go to you [API Client Page](https://anidb.net/software/add) and go to the `Add New Project` Tab. -![AniDB Add Project](anidb-1.png) + ![AniDB Add Project](anidb-1.png) -3. Fill in the Project Name with whatever name you want and then hit `+ Add Project`. The rest of the settings don't matter. -4. After you've added the project you should end up on the Projects Page. If not go back to the [API Client Page](https://anidb.net/software/add) and click your projects name. -5. Once you're on the project page click `Add Client` in the top right. +3. Fill in the Project Name with whatever name you want and then hit `+ Add Project`. The rest of the settings don't matter. +4. After you've added the project you should end up on the Projects Page. If not go back to the [API Client Page](https://anidb.net/software/add) and click your projects name. +5. Once you're on the project page click `Add Client` in the top right. -![AniDB Add Client](anidb-2.png) + ![AniDB Add Client](anidb-2.png) -6a. Come up with and enter a unique to AniDB Client Name -6b. Select `HTTP API` in the API Dropdown -6c. Put `1` for Version. +6. Come up with and enter a unique to AniDB Client Name +7. Select `HTTP API` in the API Dropdown +8. Put `1` for Version. -![AniDB Client Page](anidb-3.png) + ![AniDB Client Page](anidb-3.png) -7. Put the Client Name and Client Version you just created in your config.yml as `client` and `version` respectively. +9. Put the Client Name and Client Version you just created in your config.yml as `client` and `version` respectively. -```yaml -anidb: - client: UniqueAniDBName - version: 1 - language: en - cache_expiration: 60 -``` \ No newline at end of file + ```yaml + anidb: + client: UniqueAniDBName + version: 1 + language: en + cache_expiration: 60 + ``` \ No newline at end of file diff --git a/docs/config/libraries.md b/docs/config/libraries.md index 1dfa5f68..88d3d3dc 100644 --- a/docs/config/libraries.md +++ b/docs/config/libraries.md @@ -155,12 +155,13 @@ libraries: #### Remove Overlays -This will remove all overlays from your library, but will not delete the overlaid images from your system, resulting in [image bloat](../pmm/essentials/scripts/image-cleanup.md). -You can remove overlays from a library by adding `remove_overlays: true` to `overlay_path`. This will remove all overlays when run and not generate new ones. +You can remove overlays from a library by adding `remove_overlays: true` to `overlay_path`. ???+ warning "Proceed with Caution" + This will remove all overlays from your library, but will not delete the overlaid images from your system, resulting in [image bloat](../pmm/essentials/scripts/image-cleanup.md). + ```yaml libraries: TV Shows: @@ -173,11 +174,11 @@ You can remove overlays from a library by adding `remove_overlays: true` to `ove #### Reapply Overlays -This will reapply all overlays on each run until this attribute is set to `false`, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). - You can reapply overlays from a library by adding `reapply_overlays: true` to `overlay_path`. This will reapply overlays to every item in your library. -???+ danger Proceed with Caution +???+ danger "Important Notice" + + This will reapply all overlays on each run until this attribute is set to `false`, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). ```yaml libraries: @@ -191,11 +192,12 @@ You can reapply overlays from a library by adding `reapply_overlays: true` to `o #### Reset Overlays -This will reset all posters to the desired source on each run until this attribute is set to `false`, and will reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). - You can reset overlays from a library by adding `reset_overlays` to `overlay_path` and setting it to either `tmdb` or `plex` depending on where you want to source the images from. This will use the reset image when overlaying items in your library. -???+ danger "Proceed with Caution" +???+ danger "Important Notice" + + This will reset all posters to the desired source on each run until this attribute is set to `false`, and will reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). + ```yaml libraries: diff --git a/docs/config/mdblist.md b/docs/config/mdblist.md index 093c6a72..c93b1608 100644 --- a/docs/config/mdblist.md +++ b/docs/config/mdblist.md @@ -16,6 +16,8 @@ mdblist: | `apikey` | MdbList API Key | N/A | :fontawesome-solid-circle-check:{ .green } | | `cache_expiration` | Number of days before each cache mapping expires and has to be re-cached. | 60 | :fontawesome-solid-circle-xmark:{ .red } | -* The MdbList apikey can be found [here](https://mdblist.com/preferences/). +???+ tip -* The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled + The MdbList apikey can be found [here](https://mdblist.com/preferences/). + + The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled diff --git a/docs/config/myanimelist.md b/docs/config/myanimelist.md index 3428d11c..07710ca3 100644 --- a/docs/config/myanimelist.md +++ b/docs/config/myanimelist.md @@ -5,6 +5,7 @@ Configuring [MyAnimeList](https://myanimelist.net/) is optional but is required A `mal` mapping is in the root of the config file. Below is a `mal` mapping example and the full set of attributes: + ```yaml mal: client_id: ################################ @@ -23,46 +24,55 @@ mal: | `client_secret` | MyAnimeList Application Client Secret | :fontawesome-solid-circle-check:{ .green } | | `localhost_url` | MyAnimeList Authorization URL | :fontawesome-solid-circle-xmark:{ .red } | -* All other attributes will be filled in by Plex Meta Manager. +All other attributes will be filled in by Plex Meta Manager. -* To connect to MyAnimeList.net you must create a MyAnimeList application and supply Plex Meta Manager the `client id` and `client secret` provided, please do the following: +To connect to MyAnimeList.net you must create a MyAnimeList application and supply Plex Meta Manager the `client id` and `client secret` provided, please do the following: -1. [Click here to create a MyAnimeList API application.](https://myanimelist.net/apiconfig/create) -2. Enter an `App Name` for the application. Ex. `Plex Meta Manager` -3. Select `web` for `App Type`. -4. Enter an `App Description` for the application Ex. `Plex Meta Manager manages metadata and collections` -5. Enter `http://localhost/` for `App Redirect URL`. -6. Enter `https://github.com/meisnate12/Plex-Meta-Manager` for `Homepage URL`. -7. Select `non-commercial` for `Commercial / Non-Commercial`. -8. Enter any name under `Name / Company Name`. -9. Select `hobbyist` for `Purpose of Use`. -10. Agree to the API License and Developer Agreement and hit the `Submit` button -11. You should see `Successfully registered.` followed by a link that says `Return to list` click this link. -12. On this page Click the `Edit` button next to the application you just created. -13. Record the `Client ID` and `Client Secret` found on the application page. -14. Go to this URL but replace `CLIENT_ID` with your Client ID - ``` - https://myanimelist.net/v1/oauth2/authorize?response_type=code&client_id=CLIENT_ID&code_challenge=k_UHwN_eHAPQVXiceC-rYGkozKqrJmKxPUIUOBIKo1noq_4XGRVCViP_dGcwB-fkPql8f56mmWj5aWCa2HDeugf6sRvnc9Rjhbb1vKGYLY0IwWsDNXRqXdksaVGJthux - ``` -15. You should see a page that looks like this +1. [Click here to create a MyAnimeList API application.](https://myanimelist.net/apiconfig/create) +2. Enter an `App Name` for the application. Ex. `Plex Meta Manager` +3. Select `web` for `App Type`. +4. Enter an `App Description` for the application Ex. `Plex Meta Manager manages metadata and collections` +5. Enter `http://localhost/` for `App Redirect URL`. +6. Enter `https://github.com/meisnate12/Plex-Meta-Manager` for `Homepage URL`. +7. Select `non-commercial` for `Commercial / Non-Commercial`. +8. Enter any name under `Name / Company Name`. +9. Select `hobbyist` for `Purpose of Use`. +10. Agree to the API License and Developer Agreement and hit the `Submit` button +11. You should see `Successfully registered.` followed by a link that says `Return to list` click this link. +12. On this page Click the `Edit` button next to the application you just created. +13. Record the `Client ID` and `Client Secret` found on the application page. +14. Go to this URL but replace `CLIENT_ID` with your Client ID - ![MAL Details](mal.png) + ``` + https://myanimelist.net/v1/oauth2/authorize?response_type=code&client_id=CLIENT_ID&code_challenge=k_UHwN_eHAPQVXiceC-rYGkozKqrJmKxPUIUOBIKo1noq_4XGRVCViP_dGcwB-fkPql8f56mmWj5aWCa2HDeugf6sRvnc9Rjhbb1vKGYLY0IwWsDNXRqXdksaVGJthux + ``` - Click "Allow" -16. You will be taken to a page that will not load. That's fine and expected. +15. You should see a page that looks like this - ![Localhost Failure](localhost-fail.png) + ![MAL Details](mal.png) -17. Copy the URL, which will be `localhost/?code=BLAH` and paste in your config file next to `localhost_url`. - NOTE: If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers. - You will need to stop that web server while you're doing this in order to grab that localhost URL. -18. Run PMM and the auth will be completed. +16. Click "Allow" +17. You will be taken to a page that will not load. That's fine and expected. -## Alternative Way Letting PMM make the URL + ![Localhost Failure](localhost-fail.png) + +18. Copy the URL, which will be `localhost/?code=BLAH` and paste in your config file next to `localhost_url`. + + **If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.** + + You will need to stop that web server while you're doing this in order to grab that localhost URL. + +19. Run PMM and the auth will be completed. + +## Alternative Way of Letting PMM make the URL You can record just your `client_id` and `client_secret` and pmm will create the url for you described below. -* On the first run, Plex Meta Manager will walk the user through the OAuth flow by producing a MyAnimeList URL for the user to follow. After following the URL login to MyAnimeList.net and authorize the application by clicking the `Allow` button which will redirect the user to `http://localhost/`. Copy the entire URL and paste it into Plex Meta Manager and if the URL is correct then Plex Meta Manager will populate the `authorization` sub-attributes to use in subsequent runs. +On the first run, Plex Meta Manager will walk the user through the OAuth flow by producing a MyAnimeList URL for the user to follow. + +After following the URL login to MyAnimeList.net and authorize the application by clicking the `Allow` button which will redirect the user to `http://localhost/`. + +Copy the entire URL and paste it into Plex Meta Manager and if the URL is correct then Plex Meta Manager will populate the `authorization` sub-attributes to use in subsequent runs. On first run: ``` @@ -87,7 +97,7 @@ Click "Allow", and you will be taken to a page that will not load. That's fine Copy the URL, which will be `localhost/?code=BLAH` and paste it at the prompt. -NOTE: If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers. +**If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.** You will need to stop that web server while you're doing this in order to grab that localhost URL. @@ -99,11 +109,11 @@ You will need to stop that web server while you're doing this in order to grab t ``` -

OAuth Flow using Docker

+### OAuth Flow using Docker To authenticate MyAnimeList the first time, you need run the container with the `-it` flags in order to walk through the OAuth flow mentioned above. Once you have the MyAnimeList authentication data saved into the YAML, you'll be able to run the container normally. -

OAuth Flow using unRAID Docker

+### OAuth Flow using unRAID Docker Directions on how to authenticate MyAnimeList on unRAID can be found on the [unRAID Walkthrough](../pmm/install/guides/unraid.md#advanced-installation-authenticating-trakt-or-myanimelist) page. diff --git a/docs/config/omdb.md b/docs/config/omdb.md index 5f1ce47f..6c462d53 100644 --- a/docs/config/omdb.md +++ b/docs/config/omdb.md @@ -16,6 +16,8 @@ omdb: | `apikey` | OMDb API Key | N/A | :fontawesome-solid-circle-check:{ .green } | | `cache_expiration` | Number of days before each cache mapping expires and has to be re-cached. | 60 | :fontawesome-solid-circle-xmark:{ .red } | -* The OMDb apikey can be generated [here](http://www.omdbapi.com/apikey.aspx). +???+ tip -* The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled + The OMDb apikey can be generated [here](http://www.omdbapi.com/apikey.aspx). + + The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled diff --git a/docs/config/operations.md b/docs/config/operations.md index 9654ca50..6e29ed12 100644 --- a/docs/config/operations.md +++ b/docs/config/operations.md @@ -66,7 +66,7 @@ Deletes collections based on a set of given attributes. The Collection must matc |:-------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `managed` | **Values:**
`true`: Collection must be a Managed Collection to be deleted (the collection has the `PMM` label)
`false`: Collection must be an Unmanaged Collection to be deleted (the collection does not have the `PMM` label) | | `configured` | **Values:**
`true`: Collection must be a Configured Collection to be deleted (collection is in the config file of the specific PMM run)
`false`: Collection must be an Unconfigured Collection to be deleted (collection is not in the config file of the specific PMM run).
**The collection does not need to be scheduled to be considered configured and only needs to be in the config file.** | -| `less` | Collection must contain less then the given number of items to be deleted.
**Values:** Number Greater then 0 | +| `less` | Collection must contain less then the given number of items to be deleted.
**Values:** Number greater than 0 | **Example:** @@ -246,6 +246,11 @@ Updates every item's episode's audience/critic/user rating in the library to the Updates every item's poster to the chosen sites poster. Will fallback to `plex` if the given option fails. Assets will be used over anything else. +???+ warning + + When used in combination with Overlays, this could cause PMM to reset the poster and then reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). + + **Attribute:** `mass_poster_update` **Values:** There are a few different options to determine how the `mass_poster_update` works. @@ -272,6 +277,10 @@ library: Updates every item's background to the chosen sites background. Will fallback to `plex` if the given option fails. Assets will be used over anything else. +???+ warning + + When used in combination with Overlays, this could cause PMM to reset the background and then reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md). + **Attribute:** `mass_background_update` **Values:** There are a few different options to determine how the `mass_background_update` works. diff --git a/docs/config/plex.md b/docs/config/plex.md index 6acd1227..8f4d4983 100644 --- a/docs/config/plex.md +++ b/docs/config/plex.md @@ -9,6 +9,7 @@ Configuring [Plex](https://www.plex.tv/) is required in order to connect to your A `plex` mapping can be either in the root of the config file as global mapping for all libraries, or you can specify the `plex` mapping individually per library. Below is a `plex` mapping example and the full set of attributes: + ```yaml plex: url: http://192.168.1.12:32400 @@ -30,11 +31,14 @@ plex: | `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | ❌ | | `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | ❌ | -* **Do Not Use the Plex Token found in Plex's Preferences.xml file** +???+ warning + + Do Not Use the Plex Token found in Plex's Preferences.xml file. -* This script can be run on a remote Plex server, but be sure that the `url` provided is publicly addressable, and it's recommended to use `HTTPS`. + If you need help finding your Plex authentication token, please see Plex's [support article](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/). + +This script can be run on a remote Plex server, but be sure that the `url` provided is publicly addressable, and it's recommended to use `HTTPS`. -* If you need help finding your Plex authentication token, please see Plex's [support article](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/). # Multi-Plex Instance Setup: diff --git a/docs/config/radarr.md b/docs/config/radarr.md index 3ec5c9fc..e628d752 100644 --- a/docs/config/radarr.md +++ b/docs/config/radarr.md @@ -6,7 +6,9 @@ search: Configuring [Radarr](https://radarr.video/) is optional but will allow you to send movies to a Radarr instance when they're found missing while updating a library's collections. -Radarr V2 may work, but it is not supported please upgrade to V3 if you can. +???+ note + + Radarr V2 may work, but it is not supported. Please upgrade to V3 if you can. Items in your List Exclusions will be ignored by PMM. @@ -49,9 +51,11 @@ radarr: | `plex_path` | When using `add_existing` or `radarr_add_all` Convert this part of the path to `radarr_path`. | ` ` | ❌ | | `radarr_path` | When using `add_existing` or `radarr_add_all` Convert the `plex_path` part of the path to this. | ` ` | ❌ | -* The `token` can be found by going to `Radarr > Settings > General > Security > API Key` +???+ tip + + The `token` can be found by going to `Radarr > Settings > General > Security > API Key` -* The `quality_profile` must be the exact name of the desired quality profile, including all spaces and capitalization. + The `quality_profile` must be the exact name of the desired quality profile, including all spaces and capitalization. * You can set most attributes per collection by using the [Radarr Details](../builders/details/arr.md#radarr-definition-settings) in the collection definition. @@ -82,7 +86,6 @@ Specifying different options for specific libraries: In this example we have two Radarr instances, standard and 4K, and four libraries showing how one can override individual settings at the library level. Also, movies are being added to the "Library05" library outside Radarr via a custom script and I want those new movies added to Radarr for tracking. - ``` libraries: Library01: # this library uses the default radarr config diff --git a/docs/config/settings.md b/docs/config/settings.md index b1f1d130..f7ef1be2 100644 --- a/docs/config/settings.md +++ b/docs/config/settings.md @@ -67,61 +67,39 @@ The available setting attributes which can be set at each level are outlined bel ## Cache Cache the Plex GUID and associated IDs for each library item for faster subsequent processing. The cache file is created in the same directory as the configuration file. - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Cache Expiration Set the number of days before each cache mapping expires and has to be re-cached. - - - - - - - - - -
Default Value60
Allowed Valuesany integer
+| | | +|---|---| +| Default Value | 60 | +| Allowed Values | any integer | + ## Image Asset Directory Specify the directory where assets (posters, backgrounds, etc) are located. - - - - - - - - - -
Default Value[Directory containing YAML config]/assets
Allowed Valuesany directory
+| | | +|---|---| +| Default Value | [Directory containing YAML config]/assets | +| Allowed Values | any directory | + ## Image Asset Folders Search the `asset_directory` for a dedicated folder. Set to true if each poster is within its own directory.
i.e. `assets/Star Wars/poster.png` instead of `assets/Star Wars.png` - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Asset Depth @@ -130,19 +108,17 @@ At each asset level, PMM will look for either `medianame.ext` [such as Star Wars i.e. `assets/Star Wars/poster.png` and `assets/Star Wars.png` are both asset depth 0 and `assets/Movies/Star Wars/poster.png` and `assets/Movies/Star Wars.png` are both asset level 1 -* `asset_folders` must be set to `true` for this to take effect. -* increasing the amount of levels to scan will reduce performance +???+ note + + `asset_folders` must be set to `true` for this to take effect. + + increasing the amount of levels to scan will reduce performance + +| | | +|---|---| +| Default Value | 0 | +| Allowed Values | any integer | - - - - - - - - - -
Default Value0
Allowed Valuesany integer
## Create Asset Folders @@ -157,196 +133,131 @@ Asset Searches can happen in a number of ways. * Any Item that has an Overlay applied to it. * Any Item found by a Builder while the definition also has `item_assets: true` specified. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Prioritize Assets When determining which image to use on an item prioritize the `asset_directory` over all other images types. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Dimensional Asset Rename Whilst searching for assets, scan the folders within the `asset_directory` and if an asset poster (i.e. `/ASSET_NAME/poster.ext`) was not found, rename the first image found that has a height greater than or equal to its width to `poster.ext`. If an asset background (i.e. `/ASSET_NAME/background.ext`), rename the first image found that has a width greater than its height to `background.ext`. -* `asset_folders` must be set to `true` for this to take effect. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+???+ note + + `asset_folders` must be set to `true` for this to take effect. + +| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Download URL Assets Whilst searching for assets, download images set within Metadata/Playlist files( i.e. images set by `url_poster` or `url_background`) into the asset folder if none are already present. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Missing Season Assets Whilst searching for assets, when scanning for assets for a TV Show, if Season posters are found (i.e. `/ASSET_NAME/Season##.ext`), notify the user of any seasons which do not have an asset image. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Missing Episode Assets Whilst searching for assets, when scanning for assets for a TV Show, if an Episode Title Card is found (i.e. `/ASSET_NAME/S##E##.ext`), notify the user of any episodes which do not have an asset image. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Asset Not Needed Whilst searching for assets, show or hide the `update not needed` messages. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Sync Mode Set the default `sync_mode` for collections. -* `sync` will add and remove any items that are added/removed from the source builder -* `append` will only add items that are added from the source builder, but will not remove anything even if it is removed from the source builder. +???+ note + + `sync` will add and remove any items that are added/removed from the source builder + `append` will only add items that are added from the source builder, but will not remove anything even if it is removed from the source builder. + +| | | +|---|---| +| Default Value | append | +| Allowed Values | `append` or `sync` | - - - - - - - - - -
Default Valueappend
Allowed Valuesappend or sync -
## Default Collection Order Set the default `collection_order` for every collection run by PMM. -* `custom` cannot be used if more than one builder is being used for the collection (such as `imdb_list` and `trakt_list` within the same collection) +???+ note + + `custom` cannot be used if more than one builder is being used for the collection (such as `imdb_list` and `trakt_list` within the same collection) + +| | | +|---|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Default Value | `None` | +| Allowed Values | `release`: Order Collection by Release Dates
`alpha`: Order Collection Alphabetically
`custom`: Order Collection Via the Builder Order
Any `plex_search` sort option1 | - - - - - - - - - -
Default ValueNone
Allowed Valuesrelease: Order Collection by Release Dates
- alpha: Order Collection Alphabetically
- custom: Order Collection Via the Builder Order
- Any plex_search sort option1
-
1 `plex_search` sort options can be found [here](plex.md#sort-options) ## Minimum Items Set the minimum number of items that must be found in order to build or update a collection/playlist. - - - - - - - - - -
Default Value1
Allowed Valuesany integer
+| | | +|---|---| +| Default Value | 1 | +| Allowed Values | any integer | + ## Delete Below Minimum When a collection is run, delete the collection if it is below the minimum number specified by `minimum_items`. -* Relies on `minimum_items` being set to the desired integer. +???+ note + + Relies on `minimum_items` being set to the desired integer. + +| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
## Delete Not Scheduled If a collection is skipped due to it not being scheduled, delete the collection. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Run Again Delay @@ -354,162 +265,110 @@ Set the number of minutes to delay running `run_again` collections after daily r For example, if a collection adds items to Sonarr/Radarr, the library can automatically re-run "X" amount of time later so that any downloaded items are processed. -* A collection is a `run_again` collection if it has the `run_again` [Setting Detail](../builders/details/definition.md) attribute set to true. +???+ note + + A collection is a `run_again` collection if it has the `run_again` [Setting Detail](../builders/details/definition.md) attribute set to true. + +| | | +|---|---| +| Default Value | 1 | +| Allowed Values | any integer | - - - - - - - - - -
Default Value1
Allowed Valuesany integer
## Missing Only Released Whilst running a collection, all unreleased missing items will be filtered out from the [missing YAML file](../builders/details/definition.md) - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Unmanaged Collections List all collections not managed by Plex Meta Manager at the end of each run. - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Show Filtered List all items which have been filtered out of a collection (i.e. if it doesn't meet the filter criteria) - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Options While `show_options` is true the available options for an attribute when using `plex_search`, `smart_filter` or `filters` will be shown. i.e. a `smart_filter` on the `genre` attribute will return all of the attributes within the specified library. - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Show Missing While `show_missing` is true items missing from collections will be displayed. - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Only Filter Missing Only items missing from a collection will be filtered. **Only specific filters can filter missing. See [Filters](../metadata/filters.md) for more information.** -* this can be used to filter which missing media items get sent to Sonarr/Radarr +???+ note + + this can be used to filter which missing media items get sent to Sonarr/Radarr + +| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
## Show Missing Assets Display missing asset warnings - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Save Report Save a report of the items added, removed, filtered, or missing from collections to a YAML file in the same directory as your Metadata file. - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## TVDb Language Specify the language to query TVDb in. -* If no language is specified or the specified language is not found then the original language is used. +???+ note + + If no language is specified or the specified language is not found then the original language is used. + +| | | +|---|---| +| Default Value | None | +| Allowed Values | Any ISO 639-2 Language Code1 | - - - - - - - - - -
Default ValueNone
Allowed ValuesAny ISO 639-2 Language Code1
1 Language Codes can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) @@ -517,145 +376,116 @@ Specify the language to query TVDb in. Set a list or comma-separated string of TMDb/TVDb IDs to ignore in all collections. -* this does not apply to `smart_filter` Collections +???+ note + + this does not apply to `smart_filter` Collections + +| | | +|---|---| +| Default Value | None | +| Allowed Values | List or comma-separated string of TMDb/TVDb IDs | - - - - - - - - - -
Default ValueNone
Allowed ValuesList or comma-separated string of TMDb/TVDb IDs
## Ignore IMDb IDs Set a list or comma-separated string of IMDb IDs to ignore in all collections. -* this does not apply to `smart_filter` Collections +???+ note + + this does not apply to `smart_filter` Collections + +| | | +|---|---| +| Default Value | None | +| Allowed Values | List or comma-separated string of IMDb IDs | - - - - - - - - - -
Default ValueNone
Allowed ValuesList or comma-separated string of IMDb IDs
## Item Refresh Delay Specify the amount of time to wait between each `item_refresh` of every movie/show in a collection/playlist. -* Useful if your Plex Media Server is having issues with high request levels. +???+ note + + Useful if your Plex Media Server is having issues with high request levels. + +| | | +|---|---| +| Default Value | 0 | +| Allowed Values | any integer | - - - - - - - - - -
Default Value0
Allowed Valuesany integer
## Playlist Sync to Users Set the default playlist `sync_to_users`. To Sync a playlist to only yourself leave `playlist_sync_to_users` blank. -* sharing playlists with other users will not share any posters associated with the playlist, this is a Plex limitation. - - - - - - - - - -
Default Valueall
Allowed Valuesall, list of users, or comma-separated string of users
+???+ note + + sharing playlists with other users will not share any posters associated with the playlist, this is a Plex limitation. + +| | | +|---|---| +| Default Value | all | +| Allowed Values | all, list of users, or comma-separated string of users | + ## Playlist Exclude Users Set the default playlist `exclude_users`. - - - - - - - - - -
Default Value
Allowed Valueslist of users or comma-separated string of users
+ +| | | +|---|---| +| Default Value | | +| Allowed Values | list of users or comma-separated string of users | + # Playlist Report Set `playlist_report` to true to print out a playlist report at the end of the log. - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
+| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | + ## Custom Repo Specify where the `repo` attribute's base is when defining `metadata_path`, `playlist_file` and `overlay_path`. -* Ensure you are using the raw GitHub link (i.e. https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/meisnate12 ) +???+ note + + Ensure you are using the raw GitHub link (i.e. https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/meisnate12 ) + +| | | +|---|---| +| Default Value | None | +| Allowed Values | link to base repository | - - - - - - - - - -
Default ValueNone
Allowed Valueslink to base repository
## Verify SSL Turn SSL Verification on or off. -* set to false if your log file shows any errors similar to "SSL: CERTIFICATE_VERIFY_FAILED" - - - - - - - - - -
Default Valuetrue
Allowed Valuestrue or false -
+???+ note + + set to false if your log file shows any errors similar to "SSL: CERTIFICATE_VERIFY_FAILED" + +| | | +|---|---| +| Default Value | true | +| Allowed Values | `true` or `false` | + ## Check Nightly Will check nightly for updates instead of develop. -* This does not affect which version of PMM is grabbed when using `git pull` or any other update mechanism, it is only used for the initial version check when PMM runs to specify if a new version is available. -* It is recommended to set this to `true` if you primarily use the `nightly` branch +???+ note + + This does not affect which version of PMM is grabbed when using `git pull` or any other update mechanism, it is only used for the initial version check when PMM runs to specify if a new version is available. + + It is recommended to set this to `true` if you primarily use the `nightly` branch + +| | | +|---|---| +| Default Value | false | +| Allowed Values | `true` or `false` | - - - - - - - - - -
Default Valuefalse
Allowed Valuestrue or false -
diff --git a/docs/config/sonarr.md b/docs/config/sonarr.md index d9501bb0..46de54a7 100644 --- a/docs/config/sonarr.md +++ b/docs/config/sonarr.md @@ -6,7 +6,9 @@ search: Configuring [Sonarr](https://sonarr.tv/) is optional but will allow you to send shows to a Sonarr instance when they're found missing while updating a library's collections. -Sonarr V2 may work, but it is not supported please upgrade to V3 if you can. +???+ note + + Sonarr V2 may work, but it is not supported please upgrade to V3 if you can. Items in your List Exclusions will be ignored by PMM. @@ -55,9 +57,11 @@ sonarr: | `plex_path` | When using `add_existing` or `sonarr_add_all` Convert this part of the path to `sonarr_path`. | ` ` | ❌ | | `sonarr_path` | When using `add_existing` or `sonarr_add_all` Convert the `plex_path` part of the path to this. | ` ` | ❌ | -* The `token` can be found by going to `Sonarr > Settings > General > Security > API Key` +???+ tip + + The `token` can be found by going to `Sonarr > Settings > General > Security > API Key` -* The `quality_profile` and `language_profile` must be the exact name of the desired quality profile, including all spaces and capitalization. + The `quality_profile` and `language_profile` must be the exact name of the desired quality profile, including all spaces and capitalization. * You can set most attributes per collection by using the [Sonarr Details](../builders/details/arr.md#sonarr-definition-settings) in the collection definition. diff --git a/docs/config/tautulli.md b/docs/config/tautulli.md index 1ddfb5d8..3b93a414 100644 --- a/docs/config/tautulli.md +++ b/docs/config/tautulli.md @@ -17,9 +17,11 @@ tautulli: | `url` | Tautulli URL
**Example:** http://192.168.1.12:8659 | N/A | :fontawesome-solid-circle-check:{ .green } | | `apikey` | Tautulli API Key | N/A | :fontawesome-solid-circle-check:{ .green } | -* The apikey can be found by going to Tautulli > Settings > Web Interface > API > API Key +???+ tip + + The apikey can be found by going to Tautulli > Settings > Web Interface > API > API Key -# Other examples: +# Other examples Specifying a second Tautulli instance for a specific library: diff --git a/docs/config/trakt.md b/docs/config/trakt.md index ad60873a..95aedff1 100644 --- a/docs/config/trakt.md +++ b/docs/config/trakt.md @@ -31,18 +31,22 @@ trakt: * All other attributes will be filled in by Plex Meta Manager. -* To connect to Trakt.tv you must create a Trakt application and supply Plex Meta Manager the `client_id`, `client_secret`, and `pin` provided, please do the following: -1. [Click here to create a Trakt API application.](https://trakt.tv/oauth/applications/new) -2. Enter a `Name` for the application. -3. Enter `urn:ietf:wg:oauth:2.0:oob` for `Redirect uri`. -4. Click the `SAVE APP` button. -5. Record the `Client ID` and `Client Secret` as `client_id` and `client_secret` in your Configuration File. -6. Click the Green Authorize Button next to the Redirect URI +To connect to Trakt.tv you must create a Trakt application and supply Plex Meta Manager the `client_id`, `client_secret`, and `pin` provided, please do the following: + +1. [Click here to create a Trakt API application.](https://trakt.tv/oauth/applications/new) +2. Enter a `Name` for the application. +3. Enter `urn:ietf:wg:oauth:2.0:oob` for `Redirect uri`. +4. Click the `SAVE APP` button. +5. Record the `Client ID` and `Client Secret` as `client_id` and `client_secret` in your Configuration File. +6. Click the Green Authorize Button next to the Redirect URI ![Trakt Authorize](trakt.png) -8. Record the `PIN` as `pin` in your Configuration File. -* Run Plex Meta Manager shortly after obtaining your PIN; the PIN may expire at some point. +7. Record the `PIN` as `pin` in your Configuration File. + +???+ warning + + Run Plex Meta Manager shortly after obtaining your PIN; the PIN may expire at some point. ## Online Authorization Script diff --git a/docs/defaults/chart/anilist.md b/docs/defaults/chart/anilist.md index 52e62a79..dfc217a3 100644 --- a/docs/defaults/chart/anilist.md +++ b/docs/defaults/chart/anilist.md @@ -41,8 +41,8 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the number of items in a collection for all collections in a Defaults file.
**Default:** `100`
**Values:** Number greater then 0 | -| `limit_<>`1 | **Description:** Changes the number of items in a collection of the specified key's collection.
**Default:** `limit`
**Values:** Number greater then 0 | +| `limit` | **Description:** Changes the number of items in a collection for all collections in a Defaults file.
**Default:** `100`
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the number of items in a collection of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/chart/basic.md b/docs/defaults/chart/basic.md index 8724270e..7c6558ec 100644 --- a/docs/defaults/chart/basic.md +++ b/docs/defaults/chart/basic.md @@ -39,11 +39,11 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:----------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the Smart Filter Limit for all collections in a Defaults file.
**Values:** Number Greater then 0 | -| `limit_<>`1 | **Description:** Changes the Smart Filter Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number Greater then 0 | +| `limit` | **Description:** Changes the Smart Filter Limit for all collections in a Defaults file.
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the Smart Filter Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `sort_by` | **Description:** Changes the Smart Filter Sort for all collections in a Defaults file.
**Default:** `release.desc`
**Values:** [Any `smart_filter` Sort Option](../../builders/smart.md#sort-options) | | `sort_by_<>`1 | **Description:** Changes the Smart Filter Sort of the specified key's collection.
**Default:** `sort_by`
**Values:** [Any `smart_filter` Sort Option](../../builders/smart.md#sort-options) | -| `in_the_last_<>`1 | **Description:** Changes how far back the Smart Filter looks.
**Default:**
`released``90`
`episodes``7`
**Values:** Number Greater then 0 | +| `in_the_last_<>`1 | **Description:** Changes how far back the Smart Filter looks.
**Default:**
`released``90`
`episodes``7`
**Values:** Number greater than 0 | 1. Each default collection has a `key` that when calling to effect a specific collection you must replace `<>` with when calling. diff --git a/docs/defaults/chart/flixpatrol.md b/docs/defaults/chart/flixpatrol.md index 81a6e8d9..e45b6b95 100644 --- a/docs/defaults/chart/flixpatrol.md +++ b/docs/defaults/chart/flixpatrol.md @@ -44,8 +44,8 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `10`
**Values:** Number Greater then 0 | -| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number Greater then 0 | +| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `10`
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `location` | **Description:** Changes the Builder Location for all collections in a Defaults file.
**Default:** `world`
**Values:** [`location` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) | | `location_<>`1 | **Description:** Changes the Builder Location of the specified key's collection.
**Default:** `location`
**Values:** [`location` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) | | `time_window` | **Description:** Changes the Builder Time Window for all collections in a Defaults file.
**Default:** `last_week`
**Values:** [`time_window` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) | diff --git a/docs/defaults/chart/myanimelist.md b/docs/defaults/chart/myanimelist.md index 4a8c5018..ce7cc285 100644 --- a/docs/defaults/chart/myanimelist.md +++ b/docs/defaults/chart/myanimelist.md @@ -42,8 +42,8 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number Greater then 0 | -| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number Greater then 0 | +| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/chart/other.md b/docs/defaults/chart/other.md index e9572a40..9aa8d4a3 100644 --- a/docs/defaults/chart/other.md +++ b/docs/defaults/chart/other.md @@ -43,7 +43,7 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit_anidb` | **Description:** Changes the Builder Limit of the AniDB Popular Collection.
**Default:** `30`
**Values:** Number Greater then 0 | +| `limit_anidb` | **Description:** Changes the Builder Limit of the AniDB Popular Collection.
**Default:** `30`
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/chart/tautulli.md b/docs/defaults/chart/tautulli.md index c0c5e772..ac67951c 100644 --- a/docs/defaults/chart/tautulli.md +++ b/docs/defaults/chart/tautulli.md @@ -41,10 +41,10 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `list_days` | **Description:** Changes the `list_days` attribute of the builder for all collections in a Defaults file.
**Values:** Number greater then 0 | -| `list_days_<>`1 | **Description:** Changes the `list_days` attribute of the builder of the specified key's collection.
**Values:** Number greater then 0 | -| `list_size` | **Description:** Changes the `list_size` attribute of the builder for all collections in a Defaults file.
**Values:** Number greater then 0 | -| `list_size_<>`1 | **Description:** Changes the `list_size` attribute of the builder of the specified key's collection.
**Values:** Number greater then 0 | +| `list_days` | **Description:** Changes the `list_days` attribute of the builder for all collections in a Defaults file.
**Values:** Number greater than 0 | +| `list_days_<>`1 | **Description:** Changes the `list_days` attribute of the builder of the specified key's collection.
**Values:** Number greater than 0 | +| `list_size` | **Description:** Changes the `list_size` attribute of the builder for all collections in a Defaults file.
**Values:** Number greater than 0 | +| `list_size_<>`1 | **Description:** Changes the `list_size` attribute of the builder of the specified key's collection.
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/chart/tmdb.md b/docs/defaults/chart/tmdb.md index 3ac8be11..bf92854a 100644 --- a/docs/defaults/chart/tmdb.md +++ b/docs/defaults/chart/tmdb.md @@ -44,8 +44,8 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number Greater then 0 | -| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number Greater then 0 | +| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/chart/trakt.md b/docs/defaults/chart/trakt.md index 922a8316..b47fefba 100644 --- a/docs/defaults/chart/trakt.md +++ b/docs/defaults/chart/trakt.md @@ -44,8 +44,8 @@ All [Shared Collection Variables](../collection_variables.md) are available as w | Variable | Description & Values | |:---------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number Greater then 0 | -| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number Greater then 0 | +| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.
**Default:** `100`
**Values:** Number greater than 0 | +| `limit_<>`1 | **Description:** Changes the Builder Limit of the specified key's collection.
**Default:** `limit`
**Values:** Number greater than 0 | | `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.
**Default:** `sync`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `sync_mode_<>`1 | **Description:** Changes the Sync Mode of the specified key's collection.
**Default:** `sync_mode`
**Values:**
`sync`Add and Remove Items based on Builders
`append`Only Add Items based on Builders
| | `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.
**Default:** `custom`
**Values:**
`release`Order Collection by Release Dates
`alpha`Order Collection Alphabetically
`custom`Order Collection Via the Builder Order
[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)Order Collection by any `plex_search` Sort Option
| diff --git a/docs/defaults/collection_list.md b/docs/defaults/collection_list.md index 95a6195a..2a4dbddb 100644 --- a/docs/defaults/collection_list.md +++ b/docs/defaults/collection_list.md @@ -37,6 +37,7 @@ These collections are applied by calling the below paths into the `metadata_path | [Other Charts](chart/other.md) | `other_chart` | AniDB Popular, Common Sense Selection | ✅ | ✅ | 1 Requires [Trakt Authentication](../config/trakt.md) + 2 Requires [Tautulli Authentication](../config/tautulli.md) ### Content Collections diff --git a/docs/defaults/overlay_list.md b/docs/defaults/overlay_list.md index 45440dff..b868b42d 100644 --- a/docs/defaults/overlay_list.md +++ b/docs/defaults/overlay_list.md @@ -40,6 +40,7 @@ These overlays are applied by calling the below paths into the `overlay_path` [s | [Video Format](overlays/video_format.md)1 | `video_format` | "REMUX", "HDTV" | ✅ | ❗ | ❗ | ✅ | 1 Designed for [TRaSH Guides](https://trash-guides.info/) filename naming scheme + 2 Requires Plex Pass or [TRaSH Guides](https://trash-guides.info/) filename naming scheme ### Production Overlays diff --git a/docs/defaults/overlays/flixpatrol.md b/docs/defaults/overlays/flixpatrol.md index 6ea9a5d2..fedf5a15 100644 --- a/docs/defaults/overlays/flixpatrol.md +++ b/docs/defaults/overlays/flixpatrol.md @@ -68,11 +68,11 @@ All [Shared Overlay Variables](../overlay_variables.md) except `horizontal_offse | `weight_<>`1 | **Description:** Controls the weight of the Overlay. Higher numbers have priority.
**Values:** Any Number | | `font` | **Description:** Choose the font for the Overlay.
**Default:** `fonts/Inter-Medium.ttf`
**Values:** Path to font file | | `font_style` | **Description:** Font style for Variable Fonts.
**Values:** Variable Font Style | -| `font_size` | **Description:** Choose the font size for the Overlay.
**Default:** `50`
**Values:** Any Number greater then 0 | +| `font_size` | **Description:** Choose the font size for the Overlay.
**Default:** `50`
**Values:** Any Number greater than 0 | | `font_color` | **Description:** Choose the font color for the Overlay.
**Default:** `#FFFFFF`
**Values:** Color Hex Code in format `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA` | -| `stroke_width` | **Description:** Font Stroke Width for the Text Overlay.
**Values:** Any Number greater then 0 | +| `stroke_width` | **Description:** Font Stroke Width for the Text Overlay.
**Values:** Any Number greater than 0 | | `stroke_color` | **Description:** Font Stroke Color for the Text Overlay.
**Values:** Color Hex Code in format `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA` | -| `addon_offset` | **Description:** Text Addon Image Offset from the text.
**Default:** `30`
**Values:** Any Number greater then 0 | +| `addon_offset` | **Description:** Text Addon Image Offset from the text.
**Default:** `30`
**Values:** Any Number greater than 0 | | `addon_position` | **Description:** Text Addon Image Alignment in relation to the text.
**Default:** `top`
**Values:** `left`, `right`, `top`, `bottom` | 1. Each default overlay has a `key` that when calling to effect a specific overlay you must replace `<>` with when calling. diff --git a/docs/metadata/dynamic.md b/docs/metadata/dynamic.md index 67c6c54c..cc1b20e6 100644 --- a/docs/metadata/dynamic.md +++ b/docs/metadata/dynamic.md @@ -100,2246 +100,6 @@ dynamic_collections: | [`include`](#include) | Define a list of keys to be made into collections. | ❌ | | [`other_name`](#other-name) | Used in combination with `include`. When defined, all keys not in `include` or `addons` will be combined into this collection. | ❌ | -## Type & Data - -Specifies the type of dynamic collection to be created. - -Depending on the `type` of dynamic collection, `data` is used to specify the options that are required to fulfill the requirements of creating the collection. - -| Type Option | Description | Uses
`data` | Movies | Shows | Music | Video | -|:----------------------------------------------|:------------------------------------------------------------------------------------------------------------|:--------------:|:--------:|:--------:|:--------:|:--------:| -| [`tmdb_collection`](#tmdb-collection) | Create a collection for each TMDb Collection associated with an item in the library | ❌ | ✅ | ❌ | ❌ | ❌ | -| [`tmdb_popular_people`](#tmdb-popular-people) | Create a collection for each actor found on [TMDb's Popular People List](https://www.themoviedb.org/person) | ✅ | ✅ | ✅ | ❌ | ❌ | -| [`original_language`](#original-language) | Create a collection for each TMDb original language associated with an item in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`origin_country`](#origin-country) | Create a collection for each TMDb origin country associated with an item in the library | ❌ | ❌ | ✅ | ❌ | ❌ | -| [`trakt_user_lists`](#trakt-user-lists) | Create a collection for each list from specific trakt users | ✅ | ✅ | ✅ | ❌ | ❌ | -| [`trakt_liked_lists`](#trakt-liked-lists) | Create a collection for each list the authenticated trakt user likes | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`trakt_people_list`](#trakt-people-list) | Create a collection for each actor found in the trakt list | ✅ | ✅ | ✅ | ❌ | ❌ | -| [`actor`](#actor) | Create a collection for each actor found in the library | ✅ | ✅ | ✅ | ❌ | ❌ | -| [`director`](#director) | Create a collection for each director found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | -| [`writer`](#writer) | Create a collection for each writer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | -| [`producer`](#producer) | Create a collection for each producer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | -| [`genre`](#genre) | Create a collection for each genre found in the library | ❌ | ✅ | ✅ | ✅ | ✅ | -| [`album_genre`](#album-genre) | Create a collection for each album genre found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`content_rating`](#content-rating) | Create a collection for each content rating found in the library | ❌ | ✅ | ✅ | ❌ | ✅ | -| [`year`](#year) | Create a collection for each year found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`episode_year`](#episode-year) | Create a collection for each episode year found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`decade`](#decade.md) | Create a collection for each decade found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`country`](#country.md) | Create a collection for each country found in the library | ❌ | ✅ | ❌ | ✅ | ✅ | -| [`resolution`](#resolution) | Create a collection for each resolution found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`subtitle_language`](#subtitle-language) | Create a collection for each subtitle language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`audio_language`](#audio-language) | Create a collection for each audio language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`studio`](#studio) | Create a collection for each studio found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | -| [`edition`](#edition) | Create a collection for each edition found in the library | ❌ | ✅ | ❌ | ❌ | ❌ | -| [`network`](#network) | Create a collection for each network found in the library | ❌ | ❌ | ✅ | ❌ | ❌ | -| [`mood`](#mood) | Create a collection for each artist mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`album_mood`](#album-mood) | Create a collection for each album mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`track_mood`](#track-mood) | Create a collection for each track mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`style`](#style) | Create a collection for each artist style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`album_style`](#album-style) | Create a collection for each album style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | -| [`number`](#number) | Creates a collection for each number defined | ✅ | ✅ | ✅ | ✅ | ✅ | -| [`custom`](#custom) | Creates a collection for each custom `key: key_name` pair defined. | ✅ | ✅ | ✅ | ✅ | ✅ | - -### TMDb Collection - -Create collections based on the TMDb Collections associated with items in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontmdb_collection
data ValueNot Used
KeysTMDb Collection ID
Key NamesTMDb Collection Title
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - tmdb_collection_details: <> - minimum_items: 2 -``` - -
- -#### Example: Create collection for every TMDb Collection found in the library. - -```yaml -dynamic_collections: - TMDb Collections: # This name is the mapping name - type: tmdb_collection - remove_suffix: Collection - remove_prefix: The -``` - -### TMDb Popular People - -Create collections based on each actor found on [TMDb's Popular People List](https://www.themoviedb.org/person). - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontmdb_popular_people
data ValueNumber greater than 0
KeysTMDb Person ID
Key NamesTMDb Person Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - tmdb_person: <> - plex_search: - all: - actor: tmdb -``` - -
- -#### Example: Create collection for the top 10 popular people - -```yaml -dynamic_collections: - TMDb Popular People: # This name is the mapping name - type: tmdb_popular_people - data: 10 -``` - -### Original Language - -Create collections based on the TMDb original language associated with items in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionoriginal_language
data ValueNot Used
KeysISO 639-1 Code
Key NamesISO Language Name
Default title_format<<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - plex_all: true - filters: - original_language: <> -``` - -
- -#### Example: Create collection for every TMDb Original Language found in the library. - -```yaml -dynamic_collections: - TMDb Languages: # This name is the mapping name - type: original_language -``` - -### Origin Country - -Create collections based on the TMDb origin country associated with items in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionorigin_country
data ValueNot Used
KeysISO 3166-1 alpha-2 country code
Key NamesISO Country Name
Default title_format<<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - plex_all: true - filters: - origin_country: <> -``` - -
- -#### Example: Create collection for every TMDb Origin Country found in the library. - -```yaml -dynamic_collections: - TMDb Countries: # This name is the mapping name - type: origin_country -``` - -### Trakt User Lists - -Create collections for each of the Trakt lists for the specified users. Use `me` to reference the authenticated user. - -* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontrakt_user_lists
data ValueList of Trakt Users
KeysTrakt List URL
Key NamesTrakt List Title
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - trakt_list_details: <> -``` - -
- -#### Example: Create collections for each of the lists that the users have created - -```yaml -dynamic_collections: - Trakt User Lists: # This name is the mapping name - type: trakt_user_lists - data: - - me - - yozoraxcii -``` - -### Trakt Liked Lists - -Create collections for each of the Trakt lists that the authenticated user has liked. - -* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontrakt_liked_lists
data ValueNot Used
KeysTrakt List URL
Key NamesTrakt List Title
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - trakt_list_details: <> -``` - -
- -#### Example: Create collections for each of the lists that the user has liked within Trakt - -```yaml -dynamic_collections: - Trakt Liked Lists: # This name is the mapping name - type: trakt_liked_lists -``` - -### Trakt People List - -Create collections for each of the people found within Trakt lists that the user specifies. - -* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontrakt_people_list
data ValueList of Trakt URLs
KeysTMDb Person ID
Key NamesTMDb Person Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - tmdb_person: <> - plex_search: - all: - actor: tmdb -``` - -
- -#### Example: Create a collection for each of the people on the trakt list -```yaml -dynamic_collections: - Trakt People Lists: - type: trakt_people_list - data: - - https://trakt.tv/users/ash9001/lists/all-time-top-actors -``` - -### Actor - -Create a collection for each actor found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionactor
data Values - - - - - - - - - - - - - - - - - - - - -
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
-
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - plex_search: - any: - actor: <> -``` - -
- -* `depth` determines how many top billed actor per item they are in. (i.e. if they play a cameo role, this is unlikely to be counted) -* `minimum` determines the minimum number of times the actor must appear within `depth` for the collection to be created. -* `limit` determines the number of actor collection to max out at. (i.e. if to make collections for the top 25 actors) - -#### Example: - -* Create a collection for the top 25 actors who appear in the top 5 billing credits of movies - -```yaml -dynamic_collections: - Top Actors: # mapping name does not matter just needs to be unique - type: actor - data: - depth: 5 - limit: 25 -``` - -#### Example: - -* Create a collection for actors who appear in the top 5 billing credits of movies -* Only create the collection if they are in the top 5 billing credits of at least 20 movies - -```yaml -dynamic_collections: - Actors: # mapping name does not matter just needs to be unique - type: actor - data: - depth: 5 - minimum: 20 -``` - -### Director - -Create a collection for each director found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiondirector
data Values - - - - - - - - - - - - - - - - - - - - -
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
-
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - plex_search: - any: - director: <> -``` - -
- -* `depth` determines how many directors are looked at per item. -* `minimum` determines the minimum number of times the director must appear within `depth` for the collection to be created. -* `limit` determines the number of director collection to max out at. (i.e. if to make collections for the top 25 directors) - -#### Example: - -* Create a collection for the top 5 directors who appear in the top director credit of movies - -```yaml -dynamic_collections: - Top Directors: # mapping name does not matter just needs to be unique - type: director - data: - depth: 1 - limit: 5 -``` - -#### Example: - -* Create a collection for directors who appear in the top director credits of movies -* Only create the collection if they are in the top director credits of at least 10 movies - -```yaml -dynamic_collections: - Directors: # mapping name does not matter just needs to be unique - type: director - data: - depth: 1 - minimum: 10 -``` - -### Writer - -Create a collection for each writer found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionwriter
data Values - - - - - - - - - - - - - - - - - - - - -
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
-
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - plex_search: - any: - writer: <> -``` - -
- -* `depth` determines how many writers are looked at per item. -* `minimum` determines the minimum number of times the writer must appear within `depth` for the collection to be created. -* `limit` determines the number of writer collection to max out at. (i.e. if to make collections for the top 25 writers) - -#### Example: - -* Create a collection for the top 5 writers who appear in the top writer credit of movies - -```yaml -dynamic_collections: - Top Writers: # mapping name does not matter just needs to be unique - type: writer - data: - depth: 1 - limit: 5 -``` - -#### Example: - -* Create a collection for writers who appear in the top writer credits of movies -* Only create the collection if they are in the top writer credits of at least 10 movies - -```yaml -dynamic_collections: - Writers: # mapping name does not matter just needs to be unique - type: writer - data: - depth: 1 - minimum: 10 -``` - -### Producer - -Create a collection for each producer found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionproducer
data Values - - - - - - - - - - - - - - - - - - - - -
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
-
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template - -```yaml -default_template: - plex_search: - all: - producer: <> -``` - -
- -* `depth` determines how many producers are looked at per item. -* `minimum` determines the minimum number of times the producer must appear within `depth` for the collection to be created. -* `limit` determines the number of producer collection to max out at. (i.e. if to make collections for the top 25 producers) - -#### Example: - -* Create a collection for the top 5 producers who appear in the top producer credit of movies - -```yaml -dynamic_collections: - Top Producers: # mapping name does not matter just needs to be unique - type: producer - data: - depth: 1 - limit: 5 -``` - -#### Example: - -* Create a collection for producers who appear in the top producer credits of movies -* Only create the collection if they are in the top producer credits of at least 10 movies - -```yaml -dynamic_collections: - Producers: # mapping name does not matter just needs to be unique - type: producers - data: - depth: 1 - minimum: 10 -``` - -### Genre - -Create a collection for each genre found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiongenre
data ValueNot Used
KeysGenre
Key NamesGenre
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - genre: <> -``` - -
- -#### Example: - -* Create dynamic collections based on each genre found in the library (TV and Movies) -* Amend the template to increase the limit from 50 to 100 -* Exclude the "Talk Show" genre -* Name the collection "Top [Genre] Movies" or "Top [Genre] Shows" - -```yaml -templates: - genre collection: - smart_filter: - limit: 100 - sort_by: critic_rating.desc - all: - genre: <> -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: genre - exclude: - - Talk Show - title_format: Top <> <>s - template: genre collection -``` - -### Album Genre - -Create a collection for each album genre found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionalbum_genre
data ValueNot Used
KeysGenre
Key NamesGenre
Default title_formatTop <<key_name>> Albums
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: plays.desc - any: - album_genre: <> -``` - -
- -#### Example: - -* Create dynamic collections based on each Album genre found in the library -* Amend the template to increase the limit from 10 to 20 -* Exclude the "Pop" genre -* Name the collection "Top 20 [Genre] Albums" - -```yaml -templates: - genre collection: - smart_filter: - limit: 100 - sort_by: plays.desc - all: - album_genre: <> -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: album_genre - exclude: - - Pop - title_format: Top 20 <> <>s - template: genre collection -``` - -### Content Rating - -Create a collection for each content rating found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optioncontent_rating
data ValueNot Used
KeysContent Rating
Key NamesContent Rating
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - content_rating: <> -``` - -
- -#### Example: - -* Create dynamic collections based on each content rating found in the library (TV and Movies) -* Amend the template to increase the limit from 50 to 100 - -```yaml -templates: - content rating collection: - smart_filter: - limit: 100 - sort_by: critic_rating.desc - all: - content_rating: <> -dynamic_collections: - Content Ratings: # mapping name does not matter just needs to be unique - type: content_rating - template: content rating collection -``` - -### Year - -Create a collection for each year found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionyear
data ValueNot Used
KeysYear
Key NamesYear
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - year: <> -``` - -
- -#### Example - -* Create dynamic collections based on each year found in the library (TV and Movies) -* Use the `include` attribute to only show collections for years "2020", "2021" and "2022" -* Name the collection "Best of [Year]" - -```yaml -dynamic_collections: - Years: # mapping name does not matter just needs to be unique - type: year - include: - - 2020 - - 2021 - - 2022 - title_format: Best of <> -``` - -### Episode Year - -Create a collection for each episode year found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionepisode_year
data ValueNot Used
KeysEpisode Year
Key NamesYear
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - episode_year: <> -``` - -
- -#### Example - -* Create dynamic collections based on each year found in the library (TV and Movies) -* Use the `include` attribute to only show collections for years "2020", "2021" and "2022" -* Name the collection "Best of [Year]" - -```yaml -dynamic_collections: - Years: # mapping name does not matter just needs to be unique - type: episode_year - include: - - 2020 - - 2021 - - 2022 - title_format: Best of <> -``` - -### Decade - -Create a collection for each decade found in the library - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiondecade
data ValueNot Used
KeysDecade
Key NamesDecade
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - decade: <> -``` - -
- -#### Example: - -* Create a collection for each decade found in the library (TV and Movies) -* Name the collection "Top [Decade] Movies" -* Rename the `2020` collection name to "Top 2020 Movies (so far)" - -```yaml -dynamic_collections: - Decades: # mapping name does not matter just needs to be unique - type: decade - title_format: Top <> <>s - title_override: - 2020: Top 2020 Movies (so far) -``` - -### Country - -Create a collection for each country found in the library - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optioncountry
data ValueNot Used
KeysCountry
Key NamesCountry
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - country: <> -``` - -
- -#### Example: - -* Create a collection for the top movies from each country found in the library -* Name the collection "Top [Country] Cinema" -* The `key_name_override` attribute is used here in combination with the `title_format` to change the collection name from "France" which would be the default title, to "Top French Cinema" - -```yaml -dynamic_collections: - Countries: # mapping name does not matter just needs to be unique - type: country - title_format: Top <> Cinema - key_name_override: - France: French - Germany: German - India: Indian -``` - -### Resolution - -Create a collection for each resolution found in the library - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionresolution
data ValueNot Used
KeysResolution
Key NamesResolution
Default title_format<<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: title.asc - any: - resolution: <> -``` - -
- -#### Example: - -* Create a collection for each resolution found in the library -* Name the collection "[Resolution] Movies" -* Combine 480p, 576p and SD into a collection called "SD Movies" -```yaml -dynamic_collections: - Resolutions: # mapping name does not matter just needs to be unique - type: resolution - addons: - 480p: - - 576p - - SD - title_override: - 480p: SD Movies -``` - -### Subtitle Language - -Create a collection for each subtitle language found in the library - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionsubtitle_language
data ValueNot Used
KeysISO 639-1 Code
Key NamesSubtitle Language Name
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.asc - any: - subtitle_language: <> -``` - -
- -#### Example: - -* Create a collection for each subtitle language found in the library - -```yaml -dynamic_collections: - Subtitle Languages: # mapping name does not matter just needs to be unique - type: subtitle_language -``` - -### Audio Language - -Create a collection for each audio language found in the library - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionaudio_language
data ValueNot Used
KeysISO 639-1 Code
Key NamesAudio Language Name
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.asc - any: - audio_language: <> -``` - -
- -#### Example: - -* Create a collection for each audio language found in the library - -```yaml -dynamic_collections: - Audio Languages: # mapping name does not matter just needs to be unique - type: audio_language -``` - -### Studio - -Create a collection for each studio found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionstudio
data ValueNot Used
KeysStudio
Key NamesStudio
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - studio: <> -``` - -
- - -#### Example: - -* Create a collection for each studio found in a Movies library - -```yaml -templates: - studio collection: - smart_filter: - sort_by: critic_rating.desc - all: - studio: <> -dynamic_collections: - Studios: # mapping name does not matter just needs to be unique - type: studio - title_format: <> - template: studio collection -``` - -### Edition - -Create a collection for each edition found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionedition
data ValueNot Used
KeysEditions
Key NamesEdition
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - edition: <> -``` - -
- - -#### Example: - -* Create a collection for each edition found in a Movies library - -```yaml -templates: - edition collection: - smart_filter: - sort_by: critic_rating.desc - all: - edition: <> -dynamic_collections: - Sditions: # mapping name does not matter just needs to be unique - type: edition - title_format: <> - template: edition collection -``` - -### Network - -Create a collection for each network found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionnetwork
data ValueNot Used
KeysNetwork
Key NamesNetwork
Default title_formatTop <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: critic_rating.desc - any: - network: <> -``` - -
- - -#### Example: - -* Create a collection for each network found in a TV Shows library - -```yaml -templates: - network collection: - smart_filter: - sort_by: critic_rating.desc - all: - network: <> -dynamic_collections: - Networks: # mapping name does not matter just needs to be unique - type: network - title_format: <> - template: network collection -``` - -### Mood - -Create a collection for each artist mood found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionmood
data ValueNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 10 - sort_by: plays.desc - any: - artist_mood: <> -``` - -
- -#### Example: - -* Create a collection for the top 20 artists for each mood found in the Music library -* Amend the template to increase the limit from 10 to 20 -* Name the collection "Top 20 [Mood] Artists" - -```yaml -templates: - mood collection: - smart_filter: - limit: 20 - sort_by: plays.desc - all: - artist_mood: <> -dynamic_collections: - Moods: # mapping name does not matter just needs to be unique - type: mood - title_format: Top 20 <> Artists - template: mood collection -``` - -### Album Mood - -Create a collection for each album mood found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionalbum_mood
data ValueNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> Albums
Default Template - -```yaml -default_template: - smart_filter: - limit: 10 - sort_by: plays.desc - any: - album_mood: <> -``` - -
- -#### Example: - -* Create a collection for the top 20 albums for each mood found in the Music library -* Amend the template to increase the limit from 10 to 20 -* Name the collection "Top 20 [Mood] Albums" - -```yaml -templates: - mood collection: - smart_filter: - limit: 20 - sort_by: plays.desc - all: - album_mood: <> -dynamic_collections: - Moods: # mapping name does not matter just needs to be unique - type: album_mood - title_format: Top 20 <> Albums - template: mood collection -``` - -### Track Mood - -Create a collection for each track mood found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optiontrack_mood
data ValueNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> Tracks
Default Template - -```yaml -default_template: - smart_filter: - limit: 50 - sort_by: plays.desc - any: - track_mood: <> -``` - -
- -#### Example: - -* Create a collection for the top 100 tracks for each mood found in the Music library -* Amend the template to increase the limit from 50 to 100 -* Name the collection "Top 100 [Mood] Tracks" - -```yaml -templates: - mood collection: - smart_filter: - limit: 100 - sort_by: plays.desc - all: - track_mood: <> -dynamic_collections: - Moods: # mapping name does not matter just needs to be unique - type: track_mood - title_format: Top 100 <> Tracks - template: mood collection -``` - -### Style - -Create a collection for each artist style found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionstyle
data ValueNot Used
KeysStyle
Key NamesStyle
Default title_formatMost Played <<key_name>> <<library_type>>s
Default Template - -```yaml -default_template: - smart_filter: - limit: 10 - sort_by: plays.desc - any: - artist_style: <> -``` - -
- -#### Example: - -* Create a collection for the top 10 artists for each style found in the Music library -* Name the collection "Top [Style] Artists" - -```yaml -templates: - style collection: - smart_filter: - limit: 10 - sort_by: plays.desc - all: - artist_style: <> -dynamic_collections: - Styles: # mapping name does not matter just needs to be unique - type: style - title_format: Top <> <> - template: style collection -``` - -### Album Style - -Create a collection for each album style found in the library. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionalbum_style
data ValueNot Used
KeysStyle
Key NamesStyle
Default title_formatMost Played <<key_name>> Albums
Default Template - -```yaml -default_template: - smart_filter: - limit: 10 - sort_by: plays.desc - any: - album_style: <> -``` - -
- -#### Example: - -* Create a collection for the top 10 albums for each style found in the Music library -* Name the collection "Top [Style] Albums" - -```yaml -templates: - style collection: - builder_level: album - smart_filter: - limit: 10 - sort_by: plays.desc - all: - album_style: <> -dynamic_collections: - Styles: # mapping name does not matter just needs to be unique - type: album_style - title_format: Top <> Albums - template: style collection -``` - -### Number - -Creates a collection for each number defined. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optionnumber
data Values - - - - - - - - - - - - - - - - - - - - -
AttributeDescription & Values
startingValues: Number greater than 0Default: 0
endingValues: Number greater than 1Default: 1
incrementValues: Number greater than 0Default: 1
-
    -
  • starting and ending can also have the value current_year
  • -
  • You can also use a value relative to the current_year by doing current_year-5
  • -
-
KeysNumber
Key NamesNumber
Default title_format<<key_name>>
Default Template**None**
- - -#### Example: - -* Create a collection for the Oscar Winner by Year for the last 5 years -* Name the collection "Oscars Winners [Number]" - -```yaml -templates: - Oscars: - summary: Academy Awards (Oscars) Winners for <> - imdb_list: https://www.imdb.com/search/title/?release_date=<>-01-01,<>-12-31&groups=oscar_winner&sort=moviemeter,asc - sync_mode: sync - collection_order: custom -dynamic_collections: - Oscars Winners Awards: - type: number - sync: true - data: - starting: current_year-5 - ending: current_year - title_format: Oscars Winners <> - template: - - Oscars -``` - -### Custom - -Creates a collection for each custom `key: key_name` pair defined. - - - - - - - - - - - - - - - - - - - - - - - - - - -
type Optioncustom
data ValuesStrings to iterate
Keyskey
Key Nameskey_name
Default title_format<<key_name>>
Default TemplateNone
- -#### Example: - -* Create a collection for the various Streaming Services -* Name the collection "[Key Name] Movies" - -```yaml - - -templates: - streaming: - cache_builders: 1 - smart_label: release.desc - sync_mode: sync - mdblist_list: https://mdblist.com/lists/plexmetamanager/<>-movies - url_poster: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/streaming/<>.jpg - -dynamic_collections: - Streaming: - type: custom - data: - all-4: All 4 - appletv: Apple TV+ - bet: BET+ - britbox: BritBox - disney: Disney+ - max: Max - hulu: Hulu - netflix: Netflix - now: NOW - paramount: Paramount+ - peacock: Peacock - amazon-prime-video: Prime Video - title_format: <> Movies - template: - - streaming - - shared -``` - -## Exclude - -Exclude this list of `keys` from being created into collections. - -For example when making a `genre` dynamic collection definition you can exclude "Horror" from having a collection created from the key. - -```yaml -dynamic_collections: - Genres: # mapping name does not matter, just needs to be unique - type: genre - exclude: - - Horror -``` - -## Addons - -Defines how multiple `keys` can be combined under a parent key. - -For example, the `addons` attribute can be used to combine multiple `keys`, i.e. merging "MTV2", "MTV3" and "MTV (UK)" into the "MTV" collection. - -```yaml -dynamic_collections: - networks: - type: network - addons: - MTV: - - MTV2 - - MTV3 - - MTV (UK) -``` - -You can also define custom keys under addons if the main key doesn't exist as a key it will be considered a custom key combining all keys into one key. - -## Template - -Name of the template to use for these dynamic collections. Each `type` has its own default template, but if you want to define and use your own template you can. - -Each template is passed a few template variables you can use. -* `value`: The list of keys and addons -* `key`: The dynamic key -* `key_name`: The key after `key_name_override`, `remove_prefix`, or `remove_suffix` are run on it. - -For example, the template below removes the limit on the `smart_filter` so it shows all items in each network - -```yaml -templates: - network collection: - smart_filter: - sort_by: critic_rating.desc - all: - network: <> -dynamic_collections: - Networks: # mapping name does not matter just needs to be unique - type: network - title_format: <> - template: network collection -``` - -## Template Variables - -Defines how template variables can be defined by key. - -For example, when using `type: tmdb_collection` and you want to define a poster url for some collections - -```yaml -templates: - my_template: - optional: - - my_collection_poster - tmdb_collection_details: <> - collection_order: release - url_poster: <> -dynamic_collections: - TMDb Collections: # This name is the mapping name - type: tmdb_collection - remove_suffix: "Collection" - template: my_template - template_variables: - my_collection_poster: - 119: https://www.themoviedb.org/t/p/original/oENY593nKRVL2PnxXsMtlh8izb4.jpg - 531241: https://www.themoviedb.org/t/p/original/nogV4th2P5QWYvQIMiWHj4CFLU9.jpg -``` - -## Other Template - -Name of the template to use for the other collection. Will use the same template as the rest of the dynamic collections unless specified. - -Each template is passed a few template variables you can use. -* `value`: The list of keys and addons -* `key`: The dynamic key -* `key_name`: The key after `key_name_override`, `remove_prefix`, or `remove_suffix` are run on it. -* `included_keys`: The list of included keys -* `used_keys`: The list of all keys used (included_keys and their addon keys) - -## Remove Prefix/Suffix - -Removes the defined prefixes/suffixes from the key before it’s used in the collection title. - -For example, when using `type: tmdb_collection` you may not want every collection title to end with `Collection` - -```yaml -dynamic_collections: - TMDb Collections: # This name is the mapping name - type: tmdb_collection - remove_suffix: "Collection" -``` - -## Title Format - -This is the format for the collection titles. - -there are two special tags you can include in the `title_format` -* `<>` is required and is what will be replaced by the dynamic key name. -* `<>` will be replaced with either Movie, Show, or Artist depending on your library type. - -Here's an example using `title_format`. - -```yaml -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: genre - title_format: Top 50 <> <>s -``` - -## Key Name Override - -Defines how key names can be overridden before they are formatted into collection titles. - -This example uses the `key_name_override` attribute to change the formatting of "France" to "French" so that a collection can be named "French Cinema" instead of simply "France" - * This particular example also uses the `title_format` attribute to manipulate the naming convention of the collections. - -```yaml -dynamic_collections: - Countries: # mapping name does not matter, just needs to be unique - type: country - title_format: <> Cinema - key_name_override: - France: French -``` - -## Title Override - -Defines how collection titles can be overridden ignoring title formatting. - -Here's an example using `title_override` that will override the TMDb Star Wars collection which has an TMDb ID of `10` with `Star Wars Universe. - -```yaml -dynamic_collections: - TMDb Collections: # mapping name does not matter, just needs to be unique - type: tmdb_collection - remove_suffix: "Collection" - title_override: - 10: Star Wars Universe -``` - -## Custom Keys - -Defines if custom keys are allowed. Can be `true` or `false`. Defaults to `true`. - -Here's an example using `custom_keys`. - -```yaml -dynamic_collections: - TMDb Collections: # mapping name does not matter, just needs to be unique - type: tmdb_collection - remove_suffix: "Collection" - custom_keys: false -``` - -## Test - -Will add `test: true` to all collections for test runs. - -Here's an example using `test`. - -```yaml -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: genre - test: true -``` - -## Sync - -Will remove dynamic collections that are no longer in the creation list. - -The mapping name is added as a label to any collection created using dynamic and because of this when `sync` is true all collections with that label not found in this run will be deleted. - -Here's an example using `sync`. - -```yaml -dynamic_collections: - Trakt Liked Lists: # mapping name does not matter just needs to be unique - type: trakt_liked_lists - sync: true -``` - -## Include - -Define a list of keys to be made into collections. - -This cannot be used with `exclude`. - -Here's an example using `include`. - -```yaml -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: genre - include: - - Action - - Adventure - - Animation - - Comedy - - Family - - Fantasy - - Horror - - Romance - - Science Fiction - - War -``` - -## Other Name - -Used in combination with `include`. When defined, all keys not in `include` or `addons` will be combined into this collection. - -This is the main reason to use `include`. It allows a catch all collection for everything not defined in the config file. - -Here's an example using `other_name`. - -```yaml -dynamic_collections: - Genres: # mapping name does not matter just needs to be unique - type: genre - other_name: Top Other Movies - include: - - Action - - Adventure - - Animation - - Comedy - - Family - - Fantasy - - Horror - - Romance - - Science Fiction - - War -``` +{% + include-markdown "./dynamic_types.md" +%} \ No newline at end of file diff --git a/docs/metadata/dynamic_types.md b/docs/metadata/dynamic_types.md new file mode 100644 index 00000000..8e53391d --- /dev/null +++ b/docs/metadata/dynamic_types.md @@ -0,0 +1,2243 @@ +# Dynamic Collection Types + +Specifies the type of dynamic collection to be created. + +Depending on the `type` of dynamic collection, `data` is used to specify the options that are required to fulfill the requirements of creating the collection. + +| Type Option | Description | Uses
`data` | Movies | Shows | Music | Video | +|:----------------------------------------------|:------------------------------------------------------------------------------------------------------------|:--------------:|:--------:|:--------:|:--------:|:--------:| +| [`tmdb_collection`](#tmdb-collection) | Create a collection for each TMDb Collection associated with an item in the library | ❌ | ✅ | ❌ | ❌ | ❌ | +| [`tmdb_popular_people`](#tmdb-popular-people) | Create a collection for each actor found on [TMDb's Popular People List](https://www.themoviedb.org/person) | ✅ | ✅ | ✅ | ❌ | ❌ | +| [`original_language`](#original-language) | Create a collection for each TMDb original language associated with an item in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`origin_country`](#origin-country) | Create a collection for each TMDb origin country associated with an item in the library | ❌ | ❌ | ✅ | ❌ | ❌ | +| [`trakt_user_lists`](#trakt-user-lists) | Create a collection for each list from specific trakt users | ✅ | ✅ | ✅ | ❌ | ❌ | +| [`trakt_liked_lists`](#trakt-liked-lists) | Create a collection for each list the authenticated trakt user likes | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`trakt_people_list`](#trakt-people-list) | Create a collection for each actor found in the trakt list | ✅ | ✅ | ✅ | ❌ | ❌ | +| [`actor`](#actor) | Create a collection for each actor found in the library | ✅ | ✅ | ✅ | ❌ | ❌ | +| [`director`](#director) | Create a collection for each director found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | +| [`writer`](#writer) | Create a collection for each writer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | +| [`producer`](#producer) | Create a collection for each producer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ | +| [`genre`](#genre) | Create a collection for each genre found in the library | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`album_genre`](#album-genre) | Create a collection for each album genre found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`content_rating`](#content-rating) | Create a collection for each content rating found in the library | ❌ | ✅ | ✅ | ❌ | ✅ | +| [`year`](#year) | Create a collection for each year found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`episode_year`](#episode-year) | Create a collection for each episode year found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`decade`](#decade.md) | Create a collection for each decade found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`country`](#country.md) | Create a collection for each country found in the library | ❌ | ✅ | ❌ | ✅ | ✅ | +| [`resolution`](#resolution) | Create a collection for each resolution found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`subtitle_language`](#subtitle-language) | Create a collection for each subtitle language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`audio_language`](#audio-language) | Create a collection for each audio language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`studio`](#studio) | Create a collection for each studio found in the library | ❌ | ✅ | ✅ | ❌ | ❌ | +| [`edition`](#edition) | Create a collection for each edition found in the library | ❌ | ✅ | ❌ | ❌ | ❌ | +| [`network`](#network) | Create a collection for each network found in the library | ❌ | ❌ | ✅ | ❌ | ❌ | +| [`mood`](#mood) | Create a collection for each artist mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`album_mood`](#album-mood) | Create a collection for each album mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`track_mood`](#track-mood) | Create a collection for each track mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`style`](#style) | Create a collection for each artist style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`album_style`](#album-style) | Create a collection for each album style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ | +| [`number`](#number) | Creates a collection for each number defined | ✅ | ✅ | ✅ | ✅ | ✅ | +| [`custom`](#custom) | Creates a collection for each custom `key: key_name` pair defined. | ✅ | ✅ | ✅ | ✅ | ✅ | + +## TMDb Collection + +Create collections based on the TMDb Collections associated with items in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetmdb_collection
dataNot Used
KeysTMDb Collection ID
Key NamesTMDb Collection Title
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + tmdb_collection_details: <> + minimum_items: 2 +``` + +
+ +### Example: Create collection for every TMDb Collection found in the library. + +```yaml +dynamic_collections: + TMDb Collections: # This name is the mapping name + type: tmdb_collection + remove_suffix: Collection + remove_prefix: The +``` + +## TMDb Popular People + +Create collections based on each actor found on [TMDb's Popular People List](https://www.themoviedb.org/person). + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetmdb_popular_people
dataNumber greater than 0
KeysTMDb Person ID
Key NamesTMDb Person Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + tmdb_person: <> + plex_search: + all: + actor: tmdb +``` + +
+ +### Example: Create collection for the top 10 popular people + +```yaml +dynamic_collections: + TMDb Popular People: # This name is the mapping name + type: tmdb_popular_people + data: 10 +``` + +## Original Language + +Create collections based on the TMDb original language associated with items in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeoriginal_language
dataNot Used
KeysISO 639-1 Code
Key NamesISO Language Name
Default title_format<<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + plex_all: true + filters: + original_language: <> +``` + +
+ +### Example: Create collection for every TMDb Original Language found in the library. + +```yaml +dynamic_collections: + TMDb Languages: # This name is the mapping name + type: original_language +``` + +## Origin Country + +Create collections based on the TMDb origin country associated with items in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeorigin_country
dataNot Used
KeysISO 3166-1 alpha-2 country code
Key NamesISO Country Name
Default title_format<<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + plex_all: true + filters: + origin_country: <> +``` + +
+ +### Example: Create collection for every TMDb Origin Country found in the library. + +```yaml +dynamic_collections: + TMDb Countries: # This name is the mapping name + type: origin_country +``` + +## Trakt User Lists + +Create collections for each of the Trakt lists for the specified users. Use `me` to reference the authenticated user. + +* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetrakt_user_lists
dataList of Trakt Users
KeysTrakt List URL
Key NamesTrakt List Title
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + trakt_list_details: <> +``` + +
+ +### Example: Create collections for each of the lists that the users have created + +```yaml +dynamic_collections: + Trakt User Lists: # This name is the mapping name + type: trakt_user_lists + data: + - me + - yozoraxcii +``` + +## Trakt Liked Lists + +Create collections for each of the Trakt lists that the authenticated user has liked. + +* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetrakt_liked_lists
dataNot Used
KeysTrakt List URL
Key NamesTrakt List Title
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + trakt_list_details: <> +``` + +
+ +### Example: Create collections for each of the lists that the user has liked within Trakt + +```yaml +dynamic_collections: + Trakt Liked Lists: # This name is the mapping name + type: trakt_liked_lists +``` + +## Trakt People List + +Create collections for each of the people found within Trakt lists that the user specifies. + +* Requires [Trakt Authentication](../config/trakt.md) to be configured within the Configuration File + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetrakt_people_list
dataList of Trakt URLs
KeysTMDb Person ID
Key NamesTMDb Person Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + tmdb_person: <> + plex_search: + all: + actor: tmdb +``` + +
+ +### Example: Create a collection for each of the people on the trakt list +```yaml +dynamic_collections: + Trakt People Lists: + type: trakt_people_list + data: + - https://trakt.tv/users/ash9001/lists/all-time-top-actors +``` + +## Actor + +Create a collection for each actor found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeactor
datas + + + + + + + + + + + + + + + + + + + + +
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
+
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + plex_search: + any: + actor: <> +``` + +
+ +* `depth` determines how many top billed actor per item they are in. (i.e. if they play a cameo role, this is unlikely to be counted) +* `minimum` determines the minimum number of times the actor must appear within `depth` for the collection to be created. +* `limit` determines the number of actor collection to max out at. (i.e. if to make collections for the top 25 actors) + +### Example: + +* Create a collection for the top 25 actors who appear in the top 5 billing credits of movies + +```yaml +dynamic_collections: + Top Actors: # mapping name does not matter just needs to be unique + type: actor + data: + depth: 5 + limit: 25 +``` + +### Example: + +* Create a collection for actors who appear in the top 5 billing credits of movies +* Only create the collection if they are in the top 5 billing credits of at least 20 movies + +```yaml +dynamic_collections: + Actors: # mapping name does not matter just needs to be unique + type: actor + data: + depth: 5 + minimum: 20 +``` + +## Director + +Create a collection for each director found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typedirector
datas + + + + + + + + + + + + + + + + + + + + +
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
+
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + plex_search: + any: + director: <> +``` + +
+ +* `depth` determines how many directors are looked at per item. +* `minimum` determines the minimum number of times the director must appear within `depth` for the collection to be created. +* `limit` determines the number of director collection to max out at. (i.e. if to make collections for the top 25 directors) + +### Example: + +* Create a collection for the top 5 directors who appear in the top director credit of movies + +```yaml +dynamic_collections: + Top Directors: # mapping name does not matter just needs to be unique + type: director + data: + depth: 1 + limit: 5 +``` + +### Example: + +* Create a collection for directors who appear in the top director credits of movies +* Only create the collection if they are in the top director credits of at least 10 movies + +```yaml +dynamic_collections: + Directors: # mapping name does not matter just needs to be unique + type: director + data: + depth: 1 + minimum: 10 +``` + +## Writer + +Create a collection for each writer found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typewriter
datas + + + + + + + + + + + + + + + + + + + + +
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
+
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + plex_search: + any: + writer: <> +``` + +
+ +* `depth` determines how many writers are looked at per item. +* `minimum` determines the minimum number of times the writer must appear within `depth` for the collection to be created. +* `limit` determines the number of writer collection to max out at. (i.e. if to make collections for the top 25 writers) + +### Example: + +* Create a collection for the top 5 writers who appear in the top writer credit of movies + +```yaml +dynamic_collections: + Top Writers: # mapping name does not matter just needs to be unique + type: writer + data: + depth: 1 + limit: 5 +``` + +### Example: + +* Create a collection for writers who appear in the top writer credits of movies +* Only create the collection if they are in the top writer credits of at least 10 movies + +```yaml +dynamic_collections: + Writers: # mapping name does not matter just needs to be unique + type: writer + data: + depth: 1 + minimum: 10 +``` + +## Producer + +Create a collection for each producer found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeproducer
datas + + + + + + + + + + + + + + + + + + + + +
AttributeDescription & Values
depthValues: Number greater than 0Default: 3
minimumValues: Number greater than 0Default: 3
limitValues: Number greater than 0Default: None
+
KeysPerson Name
Key NamesPerson Name
Default title_format<<key_name>>
Default Template + +```yaml +default_template: + plex_search: + all: + producer: <> +``` + +
+ +* `depth` determines how many producers are looked at per item. +* `minimum` determines the minimum number of times the producer must appear within `depth` for the collection to be created. +* `limit` determines the number of producer collection to max out at. (i.e. if to make collections for the top 25 producers) + +### Example: + +* Create a collection for the top 5 producers who appear in the top producer credit of movies + +```yaml +dynamic_collections: + Top Producers: # mapping name does not matter just needs to be unique + type: producer + data: + depth: 1 + limit: 5 +``` + +### Example: + +* Create a collection for producers who appear in the top producer credits of movies +* Only create the collection if they are in the top producer credits of at least 10 movies + +```yaml +dynamic_collections: + Producers: # mapping name does not matter just needs to be unique + type: producers + data: + depth: 1 + minimum: 10 +``` + +## Genre + +Create a collection for each genre found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typegenre
dataNot Used
KeysGenre
Key NamesGenre
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + genre: <> +``` + +
+ +### Example: + +* Create dynamic collections based on each genre found in the library (TV and Movies) +* Amend the template to increase the limit from 50 to 100 +* Exclude the "Talk Show" genre +* Name the collection "Top [Genre] Movies" or "Top [Genre] Shows" + +```yaml +templates: + genre collection: + smart_filter: + limit: 100 + sort_by: critic_rating.desc + all: + genre: <> +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: genre + exclude: + - Talk Show + title_format: Top <> <>s + template: genre collection +``` + +## Album Genre + +Create a collection for each album genre found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typealbum_genre
dataNot Used
KeysGenre
Key NamesGenre
Default title_formatTop <<key_name>> Albums
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: plays.desc + any: + album_genre: <> +``` + +
+ +### Example: + +* Create dynamic collections based on each Album genre found in the library +* Amend the template to increase the limit from 10 to 20 +* Exclude the "Pop" genre +* Name the collection "Top 20 [Genre] Albums" + +```yaml +templates: + genre collection: + smart_filter: + limit: 100 + sort_by: plays.desc + all: + album_genre: <> +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: album_genre + exclude: + - Pop + title_format: Top 20 <> <>s + template: genre collection +``` + +## Content Rating + +Create a collection for each content rating found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typecontent_rating
dataNot Used
KeysContent Rating
Key NamesContent Rating
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + content_rating: <> +``` + +
+ +### Example: + +* Create dynamic collections based on each content rating found in the library (TV and Movies) +* Amend the template to increase the limit from 50 to 100 + +```yaml +templates: + content rating collection: + smart_filter: + limit: 100 + sort_by: critic_rating.desc + all: + content_rating: <> +dynamic_collections: + Content Ratings: # mapping name does not matter just needs to be unique + type: content_rating + template: content rating collection +``` + +## Year + +Create a collection for each year found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeyear
dataNot Used
KeysYear
Key NamesYear
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + year: <> +``` + +
+ +### Example + +* Create dynamic collections based on each year found in the library (TV and Movies) +* Use the `include` attribute to only show collections for years "2020", "2021" and "2022" +* Name the collection "Best of [Year]" + +```yaml +dynamic_collections: + Years: # mapping name does not matter just needs to be unique + type: year + include: + - 2020 + - 2021 + - 2022 + title_format: Best of <> +``` + +## Episode Year + +Create a collection for each episode year found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeepisode_year
dataNot Used
KeysEpisode Year
Key NamesYear
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + episode_year: <> +``` + +
+ +### Example + +* Create dynamic collections based on each year found in the library (TV and Movies) +* Use the `include` attribute to only show collections for years "2020", "2021" and "2022" +* Name the collection "Best of [Year]" + +```yaml +dynamic_collections: + Years: # mapping name does not matter just needs to be unique + type: episode_year + include: + - 2020 + - 2021 + - 2022 + title_format: Best of <> +``` + +## Decade + +Create a collection for each decade found in the library + + + + + + + + + + + + + + + + + + + + + + + + + + +
typedecade
dataNot Used
KeysDecade
Key NamesDecade
Default title_formatBest <<library_type>>s of <<key_name>>
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + decade: <> +``` + +
+ +### Example: + +* Create a collection for each decade found in the library (TV and Movies) +* Name the collection "Top [Decade] Movies" +* Rename the `2020` collection name to "Top 2020 Movies (so far)" + +```yaml +dynamic_collections: + Decades: # mapping name does not matter just needs to be unique + type: decade + title_format: Top <> <>s + title_override: + 2020: Top 2020 Movies (so far) +``` + +## Country + +Create a collection for each country found in the library + + + + + + + + + + + + + + + + + + + + + + + + + + +
typecountry
dataNot Used
KeysCountry
Key NamesCountry
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + country: <> +``` + +
+ +### Example: + +* Create a collection for the top movies from each country found in the library +* Name the collection "Top [Country] Cinema" +* The `key_name_override` attribute is used here in combination with the `title_format` to change the collection name from "France" which would be the default title, to "Top French Cinema" + +```yaml +dynamic_collections: + Countries: # mapping name does not matter just needs to be unique + type: country + title_format: Top <> Cinema + key_name_override: + France: French + Germany: German + India: Indian +``` + +## Resolution + +Create a collection for each resolution found in the library + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeresolution
dataNot Used
KeysResolution
Key NamesResolution
Default title_format<<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: title.asc + any: + resolution: <> +``` + +
+ +### Example: + +* Create a collection for each resolution found in the library +* Name the collection "[Resolution] Movies" +* Combine 480p, 576p and SD into a collection called "SD Movies" +```yaml +dynamic_collections: + Resolutions: # mapping name does not matter just needs to be unique + type: resolution + addons: + 480p: + - 576p + - SD + title_override: + 480p: SD Movies +``` + +## Subtitle Language + +Create a collection for each subtitle language found in the library + + + + + + + + + + + + + + + + + + + + + + + + + + +
typesubtitle_language
dataNot Used
KeysISO 639-1 Code
Key NamesSubtitle Language Name
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.asc + any: + subtitle_language: <> +``` + +
+ +### Example: + +* Create a collection for each subtitle language found in the library + +```yaml +dynamic_collections: + Subtitle Languages: # mapping name does not matter just needs to be unique + type: subtitle_language +``` + +## Audio Language + +Create a collection for each audio language found in the library + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeaudio_language
dataNot Used
KeysISO 639-1 Code
Key NamesAudio Language Name
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.asc + any: + audio_language: <> +``` + +
+ +### Example: + +* Create a collection for each audio language found in the library + +```yaml +dynamic_collections: + Audio Languages: # mapping name does not matter just needs to be unique + type: audio_language +``` + +## Studio + +Create a collection for each studio found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typestudio
dataNot Used
KeysStudio
Key NamesStudio
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + studio: <> +``` + +
+ + +### Example: + +* Create a collection for each studio found in a Movies library + +```yaml +templates: + studio collection: + smart_filter: + sort_by: critic_rating.desc + all: + studio: <> +dynamic_collections: + Studios: # mapping name does not matter just needs to be unique + type: studio + title_format: <> + template: studio collection +``` + +## Edition + +Create a collection for each edition found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typeedition
dataNot Used
KeysEditions
Key NamesEdition
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + edition: <> +``` + +
+ + +### Example: + +* Create a collection for each edition found in a Movies library + +```yaml +templates: + edition collection: + smart_filter: + sort_by: critic_rating.desc + all: + edition: <> +dynamic_collections: + Sditions: # mapping name does not matter just needs to be unique + type: edition + title_format: <> + template: edition collection +``` + +## Network + +Create a collection for each network found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typenetwork
dataNot Used
KeysNetwork
Key NamesNetwork
Default title_formatTop <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: critic_rating.desc + any: + network: <> +``` + +
+ + +### Example: + +* Create a collection for each network found in a TV Shows library + +```yaml +templates: + network collection: + smart_filter: + sort_by: critic_rating.desc + all: + network: <> +dynamic_collections: + Networks: # mapping name does not matter just needs to be unique + type: network + title_format: <> + template: network collection +``` + +## Mood + +Create a collection for each artist mood found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typemood
dataNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 10 + sort_by: plays.desc + any: + artist_mood: <> +``` + +
+ +### Example: + +* Create a collection for the top 20 artists for each mood found in the Music library +* Amend the template to increase the limit from 10 to 20 +* Name the collection "Top 20 [Mood] Artists" + +```yaml +templates: + mood collection: + smart_filter: + limit: 20 + sort_by: plays.desc + all: + artist_mood: <> +dynamic_collections: + Moods: # mapping name does not matter just needs to be unique + type: mood + title_format: Top 20 <> Artists + template: mood collection +``` + +## Album Mood + +Create a collection for each album mood found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typealbum_mood
dataNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> Albums
Default Template + +```yaml +default_template: + smart_filter: + limit: 10 + sort_by: plays.desc + any: + album_mood: <> +``` + +
+ +### Example: + +* Create a collection for the top 20 albums for each mood found in the Music library +* Amend the template to increase the limit from 10 to 20 +* Name the collection "Top 20 [Mood] Albums" + +```yaml +templates: + mood collection: + smart_filter: + limit: 20 + sort_by: plays.desc + all: + album_mood: <> +dynamic_collections: + Moods: # mapping name does not matter just needs to be unique + type: album_mood + title_format: Top 20 <> Albums + template: mood collection +``` + +## Track Mood + +Create a collection for each track mood found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typetrack_mood
dataNot Used
KeysMood
Key NamesMood
Default title_formatMost Played <<value>> Tracks
Default Template + +```yaml +default_template: + smart_filter: + limit: 50 + sort_by: plays.desc + any: + track_mood: <> +``` + +
+ +### Example: + +* Create a collection for the top 100 tracks for each mood found in the Music library +* Amend the template to increase the limit from 50 to 100 +* Name the collection "Top 100 [Mood] Tracks" + +```yaml +templates: + mood collection: + smart_filter: + limit: 100 + sort_by: plays.desc + all: + track_mood: <> +dynamic_collections: + Moods: # mapping name does not matter just needs to be unique + type: track_mood + title_format: Top 100 <> Tracks + template: mood collection +``` + +## Style + +Create a collection for each artist style found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typestyle
dataNot Used
KeysStyle
Key NamesStyle
Default title_formatMost Played <<key_name>> <<library_type>>s
Default Template + +```yaml +default_template: + smart_filter: + limit: 10 + sort_by: plays.desc + any: + artist_style: <> +``` + +
+ +### Example: + +* Create a collection for the top 10 artists for each style found in the Music library +* Name the collection "Top [Style] Artists" + +```yaml +templates: + style collection: + smart_filter: + limit: 10 + sort_by: plays.desc + all: + artist_style: <> +dynamic_collections: + Styles: # mapping name does not matter just needs to be unique + type: style + title_format: Top <> <> + template: style collection +``` + +## Album Style + +Create a collection for each album style found in the library. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typealbum_style
dataNot Used
KeysStyle
Key NamesStyle
Default title_formatMost Played <<key_name>> Albums
Default Template + +```yaml +default_template: + smart_filter: + limit: 10 + sort_by: plays.desc + any: + album_style: <> +``` + +
+ +### Example: + +* Create a collection for the top 10 albums for each style found in the Music library +* Name the collection "Top [Style] Albums" + +```yaml +templates: + style collection: + builder_level: album + smart_filter: + limit: 10 + sort_by: plays.desc + all: + album_style: <> +dynamic_collections: + Styles: # mapping name does not matter just needs to be unique + type: album_style + title_format: Top <> Albums + template: style collection +``` + +## Number + +Creates a collection for each number defined. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typenumber
datas + + + + + + + + + + + + + + + + + + + + +
AttributeDescription & Values
startingValues: Number greater than 0Default: 0
endingValues: Number greater than 1Default: 1
incrementValues: Number greater than 0Default: 1
+
    +
  • starting and ending can also have the value current_year
  • +
  • You can also use a value relative to the current_year by doing current_year-5
  • +
+
KeysNumber
Key NamesNumber
Default title_format<<key_name>>
Default Template**None**
+ + +### Example: + +* Create a collection for the Oscar Winner by Year for the last 5 years +* Name the collection "Oscars Winners [Number]" + +```yaml +templates: + Oscars: + summary: Academy Awards (Oscars) Winners for <> + imdb_list: https://www.imdb.com/search/title/?release_date=<>-01-01,<>-12-31&groups=oscar_winner&sort=moviemeter,asc + sync_mode: sync + collection_order: custom +dynamic_collections: + Oscars Winners Awards: + type: number + sync: true + data: + starting: current_year-5 + ending: current_year + title_format: Oscars Winners <> + template: + - Oscars +``` + +## Custom + +Creates a collection for each custom `key: key_name` pair defined. + + + + + + + + + + + + + + + + + + + + + + + + + + +
typecustom
datasStrings to iterate
Keyskey
Key Nameskey_name
Default title_format<<key_name>>
Default TemplateNone
+ +### Example: + +* Create a collection for the various Streaming Services +* Name the collection "[Key Name] Movies" + +```yaml + + +templates: + streaming: + cache_builders: 1 + smart_label: release.desc + sync_mode: sync + mdblist_list: https://mdblist.com/lists/plexmetamanager/<>-movies + url_poster: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/streaming/<>.jpg + +dynamic_collections: + Streaming: + type: custom + data: + all-4: All 4 + appletv: Apple TV+ + bet: BET+ + britbox: BritBox + disney: Disney+ + max: Max + hulu: Hulu + netflix: Netflix + now: NOW + paramount: Paramount+ + peacock: Peacock + amazon-prime-video: Prime Video + title_format: <> Movies + template: + - streaming + - shared +``` + +## Exclude + +Exclude this list of `keys` from being created into collections. + +For example when making a `genre` dynamic collection definition you can exclude "Horror" from having a collection created from the key. + +```yaml +dynamic_collections: + Genres: # mapping name does not matter, just needs to be unique + type: genre + exclude: + - Horror +``` + +## Addons + +Defines how multiple `keys` can be combined under a parent key. + +For example, the `addons` attribute can be used to combine multiple `keys`, i.e. merging "MTV2", "MTV3" and "MTV (UK)" into the "MTV" collection. + +```yaml +dynamic_collections: + networks: + type: network + addons: + MTV: + - MTV2 + - MTV3 + - MTV (UK) +``` + +You can also define custom keys under addons if the main key doesn't exist as a key it will be considered a custom key combining all keys into one key. + +## Template + +Name of the template to use for these dynamic collections. Each `type` has its own default template, but if you want to define and use your own template you can. + +Each template is passed a few template variables you can use. +* `value`: The list of keys and addons +* `key`: The dynamic key +* `key_name`: The key after `key_name_override`, `remove_prefix`, or `remove_suffix` are run on it. + +For example, the template below removes the limit on the `smart_filter` so it shows all items in each network + +```yaml +templates: + network collection: + smart_filter: + sort_by: critic_rating.desc + all: + network: <> +dynamic_collections: + Networks: # mapping name does not matter just needs to be unique + type: network + title_format: <> + template: network collection +``` + +## Template Variables + +Defines how template variables can be defined by key. + +For example, when using `type: tmdb_collection` and you want to define a poster url for some collections + +```yaml +templates: + my_template: + optional: + - my_collection_poster + tmdb_collection_details: <> + collection_order: release + url_poster: <> +dynamic_collections: + TMDb Collections: # This name is the mapping name + type: tmdb_collection + remove_suffix: "Collection" + template: my_template + template_variables: + my_collection_poster: + 119: https://www.themoviedb.org/t/p/original/oENY593nKRVL2PnxXsMtlh8izb4.jpg + 531241: https://www.themoviedb.org/t/p/original/nogV4th2P5QWYvQIMiWHj4CFLU9.jpg +``` + +## Other Template + +Name of the template to use for the other collection. Will use the same template as the rest of the dynamic collections unless specified. + +Each template is passed a few template variables you can use. +* `value`: The list of keys and addons +* `key`: The dynamic key +* `key_name`: The key after `key_name_override`, `remove_prefix`, or `remove_suffix` are run on it. +* `included_keys`: The list of included keys +* `used_keys`: The list of all keys used (included_keys and their addon keys) + +## Remove Prefix/Suffix + +Removes the defined prefixes/suffixes from the key before it’s used in the collection title. + +For example, when using `type: tmdb_collection` you may not want every collection title to end with `Collection` + +```yaml +dynamic_collections: + TMDb Collections: # This name is the mapping name + type: tmdb_collection + remove_suffix: "Collection" +``` + +## Title Format + +This is the format for the collection titles. + +there are two special tags you can include in the `title_format` +* `<>` is required and is what will be replaced by the dynamic key name. +* `<>` will be replaced with either Movie, Show, or Artist depending on your library type. + +Here's an example using `title_format`. + +```yaml +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: genre + title_format: Top 50 <> <>s +``` + +## Key Name Override + +Defines how key names can be overridden before they are formatted into collection titles. + +This example uses the `key_name_override` attribute to change the formatting of "France" to "French" so that a collection can be named "French Cinema" instead of simply "France" + * This particular example also uses the `title_format` attribute to manipulate the naming convention of the collections. + +```yaml +dynamic_collections: + Countries: # mapping name does not matter, just needs to be unique + type: country + title_format: <> Cinema + key_name_override: + France: French +``` + +## Title Override + +Defines how collection titles can be overridden ignoring title formatting. + +Here's an example using `title_override` that will override the TMDb Star Wars collection which has an TMDb ID of `10` with `Star Wars Universe. + +```yaml +dynamic_collections: + TMDb Collections: # mapping name does not matter, just needs to be unique + type: tmdb_collection + remove_suffix: "Collection" + title_override: + 10: Star Wars Universe +``` + +## Custom Keys + +Defines if custom keys are allowed. Can be `true` or `false`. Defaults to `true`. + +Here's an example using `custom_keys`. + +```yaml +dynamic_collections: + TMDb Collections: # mapping name does not matter, just needs to be unique + type: tmdb_collection + remove_suffix: "Collection" + custom_keys: false +``` + +## Test + +Will add `test: true` to all collections for test runs. + +Here's an example using `test`. + +```yaml +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: genre + test: true +``` + +## Sync + +Will remove dynamic collections that are no longer in the creation list. + +The mapping name is added as a label to any collection created using dynamic and because of this when `sync` is true all collections with that label not found in this run will be deleted. + +Here's an example using `sync`. + +```yaml +dynamic_collections: + Trakt Liked Lists: # mapping name does not matter just needs to be unique + type: trakt_liked_lists + sync: true +``` + +## Include + +Define a list of keys to be made into collections. + +This cannot be used with `exclude`. + +Here's an example using `include`. + +```yaml +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: genre + include: + - Action + - Adventure + - Animation + - Comedy + - Family + - Fantasy + - Horror + - Romance + - Science Fiction + - War +``` + +## Other Name + +Used in combination with `include`. When defined, all keys not in `include` or `addons` will be combined into this collection. + +This is the main reason to use `include`. It allows a catch all collection for everything not defined in the config file. + +Here's an example using `other_name`. + +```yaml +dynamic_collections: + Genres: # mapping name does not matter just needs to be unique + type: genre + other_name: Top Other Movies + include: + - Action + - Adventure + - Animation + - Comedy + - Family + - Fantasy + - Horror + - Romance + - Science Fiction + - War +``` diff --git a/docs/metadata/metadata.md b/docs/metadata/metadata.md index 0fae4587..cec33135 100644 --- a/docs/metadata/metadata.md +++ b/docs/metadata/metadata.md @@ -44,7 +44,7 @@ There are multiple types of attributes that can be utilized within a collection: * [Builders](builders.md) * [Settings/Updates](update.md) -* [Filters]filters.md) +* [Filters](filters.md) ### Example diff --git a/docs/metadata/overlay.md b/docs/metadata/overlay.md index 30c96070..31b1769f 100644 --- a/docs/metadata/overlay.md +++ b/docs/metadata/overlay.md @@ -8,7 +8,9 @@ All overlay coordinates assume 1000 x 1500 for Posters and 1920 x 1080 for Backg **To remove all overlays add `remove_overlays: true` to the `overlay_path` [Libraries Attribute](../config/libraries.md#remove-overlays).** -**IMPORTANT NOTE ON OVERLAYS:** Once you have applied overlays to your posters in Plex, it is highly recommended that you never change artwork on a thing directly in Plex again. PMM uses labels on the items in Plex to decide if an overlay has been applied, so if you change artwork behind PMM's back things can become confused and items can end up with double-overlaid posters. It's recommended to set new artwork using the asset directory, which will ensure that this doesn't happen. +???+ danger "Important Notice" + + Once you have applied overlays to your posters in Plex, it is highly recommended that you never change artwork on a thing directly in Plex again. PMM uses labels on the items in Plex to decide if an overlay has been applied, so if you change artwork behind PMM's back things can become confused and items can end up with double-overlaid posters. It's recommended to set new artwork using the asset directory, which will ensure that this doesn't happen. **To change a single overlay original image either remove the `Overlay` shared label and update the Image in Plex or replace the image in the assets folder and then PMM will overlay the new image** @@ -42,7 +44,7 @@ There are multiple types of attributes that can be utilized within an overlay: * [Builders](builders.md) * [Settings/Updates](update.md) -* [Filters]filters.md) +* [Filters](filters.md) ## Overlay diff --git a/docs/metadata/playlist.md b/docs/metadata/playlist.md index 4fd07a11..0091a296 100644 --- a/docs/metadata/playlist.md +++ b/docs/metadata/playlist.md @@ -4,7 +4,9 @@ Playlist files are used to create and maintain playlists on the Plex Server. If utilized to their fullest, these files can be used to maintain the entire server's collections and playlists, and can be used as a backup for these in the event of a restore requirement. -Playlists are defined in one or more Playlist files that are mapped in the [Playlist Files Attribute](../config/playlists.md) within the Configuration File. +???+ tip + + Playlists are defined in one or more Playlist files that are mapped in the [Playlist Files Attribute](../config/playlists.md) within the Configuration File. You can use the [`playlist_report` setting](../config/settings.md#playlist-report) to get a list of your playlists printed out in your log. @@ -40,7 +42,7 @@ There are multiple types of attributes that can be utilized within a playlist: * [Builders](builders.md) * [Settings/Updates](update.md) -* [Filters]filters.md) +* [Filters](filters.md) ### Special Playlist Attributes diff --git a/docs/metadata/templates.md b/docs/metadata/templates.md index 7011fe1b..502e741c 100644 --- a/docs/metadata/templates.md +++ b/docs/metadata/templates.md @@ -84,7 +84,7 @@ collections: Note that we provide the template name `Actor` and the value to insert in the place of `<>`. The `<>` is a template variable that is always available and doesn't have to be called out like `<>`. -Inside a template, you can use all the Builders, Details, and [Filters]filters.md) attributes that you can give collections/playlists [except `template`; templates cannot be nested]. +Inside a template, you can use all the Builders, Details, and [Filters](filters.md) attributes that you can give collections/playlists [except `template`; templates cannot be nested]. The names of template variables that you define are arbitrary. In the example above, `<>` could have been `<>` or `<>` or anything else. The only thing that matters is that in the template definition you surround them with `<< >>` and in the collection definition you spell it correctly. diff --git a/docs/pmm/essentials/scripts/overlay-reset.md b/docs/pmm/essentials/scripts/overlay-reset.md index a5b83f6b..d0c92020 100644 --- a/docs/pmm/essentials/scripts/overlay-reset.md +++ b/docs/pmm/essentials/scripts/overlay-reset.md @@ -105,7 +105,7 @@ Each option can be applied in three ways: | TMDb V3 API Key | TMDb V3 API Key for restoring posters from TMDb.
**Shell Command:** `-ta` or `--tmdbapi 123456789123456789`
**Environment Variable:** `TMDBAPI=123456789123456789` | :fontawesome-solid-circle-xmark:{ .red } | | Start From | Plex Item Title to Start restoring posters from.
**Shell Command:** `-st` or `--start "Mad Max"`
**Environment Variable:** `START=Mad Max` | :fontawesome-solid-circle-xmark:{ .red } | | Items | Restore specific Plex Items by Title. Can use a bar-separated (|) list.
**Shell Command:** `-it` or --items "Mad Max|Mad Max 2"
**Environment Variable:** ITEMS=Mad Max|Mad Max 2 | :fontawesome-solid-circle-xmark:{ .red } | -| Timeout | Timeout can be any number greater then 0. **Default:** `600`
**Shell Command:** `-ti` or `--timeout 1000`
**Environment Variable:** `TIMEOUT=1000` | :fontawesome-solid-circle-xmark:{ .red } | +| Timeout | Timeout can be any number greater than 0. **Default:** `600`
**Shell Command:** `-ti` or `--timeout 1000`
**Environment Variable:** `TIMEOUT=1000` | :fontawesome-solid-circle-xmark:{ .red } | | Dry Run | Run as a Dry Run without making changes in Plex.
**Shell Command:** `-d` or `--dry`
**Environment Variable:** `DRY_RUN=True` | :fontawesome-solid-circle-xmark:{ .red } | | Flat Assets | PMM Asset Folder uses [Flat Assets Image Paths](../../install/guides/assets.md#asset-naming).
**Shell Command:** `-f` or `--flat`
**Environment Variable:** `PMM_FLAT=True` | :fontawesome-solid-circle-xmark:{ .red } | | Reset Season Posters | Restore Season posters during run.
**Shell Command:** `-s` or `--season`
**Environment Variable:** `SEASON=True` | :fontawesome-solid-circle-xmark:{ .red } | diff --git a/mkdocs.yml b/mkdocs.yml index 5bcc8bf1..4a8e61f8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -381,43 +381,42 @@ nav: - MyAnimeList ID: builders/myanimelist/#myanimelist-id - MyAnimeList UserList: builders/myanimelist/#myanimelist-userlist - MyAnimeList Seasonal: builders/myanimelist/#myanimelist-seasonal - - "DYNAMIC COLLECTIONS": + - DYNAMIC COLLECTIONS: - Overview: metadata/dynamic.md - - Dynamic Collection Builders: - - TMDb Dynamic Collections: - - TMDb Collection: metadata/dynamic/#tmdb-collection - - TMDb Popular People: metadata/dynamic/#tmdb-popular-people - - Original Language: metadata/dynamic/#original-language - - Origin Country: metadata/dynamic/#origin-country - - Trakt Dynamic Collections: - - Trakt User Lists: metadata/dynamic/#trakt-user-lists - - Trakt Liked Lists: metadata/dynamic/#trakt-liked-lists - - Trakt People Lists: metadata/dynamic/#trakt-people-lists - - Plex Dynamic Collections: - - Actor: metadata/dynamic/#actor - - Director: metadata/dynamic/#director - - Writer: metadata/dynamic/#writer - - Producer: metadata/dynamic/#producer - - Genre: metadata/dynamic/#genre - - Album Genre: metadata/dynamic/#album-genre - - Content Rating: metadata/dynamic/#content-rating - - Year: metadata/dynamic/#year - - Decade: metadata/dynamic/#decade - - Country: metadata/dynamic/#country - - Resolution: metadata/dynamic/#resolution - - Subtitle Language: metadata/dynamic/#subtitle-language - - Audio Language: metadata/dynamic/#audio-language - - Studio: metadata/dynamic/#studio - - Edition: metadata/dynamic/#edition - - Network: metadata/dynamic/#network - - Mood: metadata/dynamic/#mood - - Album Mood: metadata/dynamic/#album-mood - - Track Mood: metadata/dynamic/#track-mood - - Style: metadata/dynamic/#style - - Album Style: metadata/dynamic/#album-style - - Other Dynamic Collections: - - Number: metadata/dynamic/#number - - Custom: metadata/dynamic/#custom + - TMDb Dynamic Collections: + - TMDb Collection: metadata/dynamic_types/#tmdb-collection + - TMDb Popular People: metadata/dynamic_types/#tmdb-popular-people + - Original Language: metadata/dynamic_types/#original-language + - Origin Country: metadata/dynamic_types/#origin-country + - Trakt Dynamic Collections: + - Trakt User Lists: metadata/dynamic_types/#trakt-user-lists + - Trakt Liked Lists: metadata/dynamic_types/#trakt-liked-lists + - Trakt People Lists: metadata/dynamic_types/#trakt-people-lists + - Plex Dynamic Collections: + - Actor: metadata/dynamic_types/#actor + - Director: metadata/dynamic_types/#director + - Writer: metadata/dynamic_types/#writer + - Producer: metadata/dynamic_types/#producer + - Genre: metadata/dynamic_types/#genre + - Album Genre: metadata/dynamic_types/#album-genre + - Content Rating: metadata/dynamic_types/#content-rating + - Year: metadata/dynamic_types/#year + - Decade: metadata/dynamic_types/#decade + - Country: metadata/dynamic_types/#country + - Resolution: metadata/dynamic_types/#resolution + - Subtitle Language: metadata/dynamic_types/#subtitle-language + - Audio Language: metadata/dynamic_types/#audio-language + - Studio: metadata/dynamic_types/#studio + - Edition: metadata/dynamic_types/#edition + - Network: metadata/dynamic_types/#network + - Mood: metadata/dynamic_types/#mood + - Album Mood: metadata/dynamic_types/#album-mood + - Track Mood: metadata/dynamic_types/#track-mood + - Style: metadata/dynamic_types/#style + - Album Style: metadata/dynamic_types/#album-style + - Other Dynamic Collections: + - Number: metadata/dynamic_types/#number + - Custom: metadata/dynamic_types/#custom - SETTINGS & UPDATES: - Overview: metadata/update.md - Settings: