mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-12-28 05:43:08 +00:00
1950 lines
No EOL
54 KiB
Markdown
1950 lines
No EOL
54 KiB
Markdown
# Dynamic Collections
|
||
|
||
Plex Meta Manager can dynamically create collections based on different criteria, such as
|
||
* Collections based on the Collections from TMDb for every item in the library. ([Star Wars](https://www.themoviedb.org/collection/10-star-wars-collection), [Harry Potter](https://www.themoviedb.org/collection/1241), etc...)
|
||
* Collections based on each of a Users Trakt Lists
|
||
* Collections for the top `X` popular people on TMDb (Bruce Willis, Tom Hanks, etc...)
|
||
* Collections for each decade represented in the library (Best of 1990s, Best of 2000s, etc...)
|
||
* Collections for each of the moods/styles within a Music library (A Cappella, Pop Rock, etc...)
|
||
|
||
The main purpose of dynamic collections is to automate the creation of collections which would otherwise require considerable user input and repetition (such as creating a collection for every genre).
|
||
|
||
Each dynamic collection must have a mapping name (just like standard collections), which is also attached to the collection as a label to mark it as having been created by this dynamic collection.
|
||
|
||
This example will create a collection for every TMDb Collection associated with items in the library.
|
||
|
||
```yaml
|
||
dynamic_collections:
|
||
TMDb Collections: # This name is the mapping name
|
||
type: tmdb_collection
|
||
remove_suffix: "Collection"
|
||
```
|
||
|
||
## Collection Naming
|
||
|
||
By default, the collections generated will be named for the thing being used to create them; things like genres, countries, actors or even Trakt List Names.
|
||
|
||
There are many attributes that can change the titles, including `title_format`, `remove_suffix`, `remove_prefix`, `key_name_override`, and `title_override` all detailed below.
|
||
|
||
## Dynamic Keys & Key Names
|
||
|
||
A `dynamic key` or `key` for short is used to refer to a specific value/result from the dynamic collection criteria that will be used to create the collection.
|
||
|
||
A `key_name` is the name that replaces `<<key_name>>` in `title_format` to create the collection titles for each key.
|
||
|
||
An example of some keys and their names that would be generated from a `tmdb_collection` dynamic collection are
|
||
* `key`: "10"
|
||
* `key_name`: Star Wars Collection
|
||
* `key`: "1241"
|
||
* `key_name`: Harry Potter Collection
|
||
|
||
### Example Key Usage
|
||
|
||
Keys can be used for a number of purposes, examples can be found throughout this page. A few examples are shown below:
|
||
|
||
* Excluding the "Horror" key from the `Genre` dynamic collection definition
|
||
|
||
```yaml
|
||
dynamic_collections:
|
||
Genres: # mapping name does not matter, just needs to be unique
|
||
type: genre
|
||
exclude:
|
||
- Horror
|
||
```
|
||
|
||
* Using 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: <<key_name>> Cinema
|
||
key_name_override:
|
||
France: French
|
||
```
|
||
|
||
* Using the `addons` attribute to combine multiple `keys`, i.e. merging "MTV2", "MTV3" and "MTV (UK)" into one "MTV" collection.
|
||
* When doing this, individual collections will not be created for the individual MTV collections, instead they will be merged within the "MTV" collection.
|
||
|
||
```yaml
|
||
dynamic_collections:
|
||
networks:
|
||
type: network
|
||
addons:
|
||
MTV:
|
||
- MTV2
|
||
- MTV3
|
||
- MTV (UK)
|
||
```
|
||
|
||
## Attributes
|
||
|
||
| Attribute | Description | Required |
|
||
|:--------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------|:-----------------:|
|
||
| [`type`](#type--data) | Type of Dynamic Collection to be created. | ✅ |
|
||
| [`data`](#type--data) | Data to determine how dynamic collections with a certain `type` are created. | Depends on `type` |
|
||
| [`exclude`](#exclude) | Exclude this list of keys from being created into collections. | ❌ |
|
||
| [`addons`](#addons) | Defines how multiple keys can be combined under a parent key. | ❌ |
|
||
| [`template`](#template) | Name of the template to use for these dynamic collections. | ❌ |
|
||
| [`template_variables`](#template-variables) | Defines how template variables can be defined by key. | ❌ |
|
||
| [`other_template`](#other-template) | Name of the template to use for the other collection. | ❌ |
|
||
| [`remove_suffix`](#remove-prefixsuffix) | Removes the defined suffixes from the key before it's used in the collection title. | ❌ |
|
||
| [`remove_prefix`](#remove-prefixsuffix) | Removes the defined prefixes from the key before it's used in the collection title. | ❌ |
|
||
| [`title_format`](#title-format) | This is the format for the collection titles. | ❌ |
|
||
| [`key_name_override`](#key-name-override) | Defines how key names can be overridden before they are formatted into collection titles. | ❌ |
|
||
| [`title_override`](#title-override) | Defines how collection titles can be overridden ignoring title formatting. | ❌ |
|
||
| [`test`](#test) | Will add `test: true` to all collections for test runs. | ❌ |
|
||
| [`sync`](#sync) | Will remove dynamic collections that are no longer in the creation list. | ❌ |
|
||
| [`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<br>`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-lists) | 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 | ❌ | ✅ | ✅ | ✅ | ✅ |
|
||
| [`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 | ❌ | ✅ | ✅ | ❌ | ❌ |
|
||
| [`decade`](#decade) | Create a collection for each decade found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
|
||
| [`country`](#country) | 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 | ❌ | ✅ | ✅ | ❌ | ❌ |
|
||
| [`network`](#network) | Create a collection for each network found in the library | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||
| [`mood`](#mood) | Create a collection for each mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ |
|
||
| [`style`](#style) | Create a collection for each 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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>tmdb_collection</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>TMDb Collection ID</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>TMDb Collection Title</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
tmdb_collection_details: <<value>>
|
||
minimum_items: 2
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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).
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>tmdb_popular_people</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Number greater than 0</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>TMDb Person ID</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>TMDb Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
tmdb_person: <<value>>
|
||
plex_search:
|
||
all:
|
||
actor: tmdb
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>original_language</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td><a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 Code</a></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>ISO Language Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_all: true
|
||
filters:
|
||
original_language: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>origin_country</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td><a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha-2 country code</a></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>ISO Country Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_all: true
|
||
filters:
|
||
origin_country: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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) to be configured within the Configuration File
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>trakt_user_lists</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>List of Trakt Users</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Trakt List URL</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Trakt List Title</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
trakt_list_details: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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) to be configured within the Configuration File
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>trakt_liked_lists</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Trakt List URL</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Trakt List Title</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
trakt_list_details: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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 Lists
|
||
|
||
Create collections for each of the people found within Trakt lists that the user specifies.
|
||
|
||
* Requires [Trakt Authentication](../config/trakt) to be configured within the Configuration File
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>trakt_user_lists</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>List of Trakt URLs</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>TMDb Person ID</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>TMDb Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
tmdb_person: <<value>>
|
||
plex_search:
|
||
all:
|
||
actor: tmdb
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### Example: Create a collection for each of the people on the trakt list
|
||
```yaml
|
||
dynamic_collections:
|
||
Trakt User Lists:
|
||
type: trakt_people_lists
|
||
data:
|
||
- https://trakt.tv/users/ash9001/lists/all-time-top-actors
|
||
```
|
||
|
||
### Actor
|
||
|
||
Create a collection for each actor found in the library.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>actor</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>
|
||
<table class="clearTable">
|
||
<tr>
|
||
<th>Attribute</th>
|
||
<th>Description & Values</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>depth</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>minimum</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>limit</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> None</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_search:
|
||
any:
|
||
actor: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
* `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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>director</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>
|
||
<table class="clearTable">
|
||
<tr>
|
||
<th>Attribute</th>
|
||
<th>Description & Values</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>depth</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>minimum</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>limit</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> None</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_search:
|
||
any:
|
||
director: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
* `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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>writer</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>
|
||
<table class="clearTable">
|
||
<tr>
|
||
<th>Attribute</th>
|
||
<th>Description & Values</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>depth</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>minimum</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>limit</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> None</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_search:
|
||
any:
|
||
writer: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
* `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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>producer</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>
|
||
<table class="clearTable">
|
||
<tr>
|
||
<th>Attribute</th>
|
||
<th>Description & Values</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>depth</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>minimum</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>limit</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> None</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Person Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
plex_search:
|
||
all:
|
||
producer: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
* `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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>genre</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Genre</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Genre</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
genre: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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: <<value>>
|
||
dynamic_collections:
|
||
Genres: # mapping name does not matter just needs to be unique
|
||
type: genre
|
||
exclude:
|
||
- Talk Show
|
||
title_format: Top <<key_name>> <<library_type>>s
|
||
template: genre collection
|
||
```
|
||
|
||
### Content Rating
|
||
|
||
Create a collection for each content rating found in the library.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>content_rating</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Content Rating</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Content Rating</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
content_rating: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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: <<value>>
|
||
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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>year</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Year</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Year</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Best <<library_type>>s of <<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
year: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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 <<key_name>>
|
||
```
|
||
|
||
### Decade
|
||
|
||
Create a collection for each decade found in the library
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>decade</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Decade</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Decade</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Best <<library_type>>s of <<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
decade: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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 <<key_name>> <<library_type>>s
|
||
title_override:
|
||
2020: Top 2020 Movies (so far)
|
||
```
|
||
|
||
### Country
|
||
|
||
Create a collection for each country found in the library
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>country</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Country</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Country</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
country: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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 <<key_name>> Cinema
|
||
key_name_override:
|
||
France: French
|
||
Germany: German
|
||
India: Indian
|
||
```
|
||
|
||
### Resolution
|
||
|
||
Create a collection for each resolution found in the library
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>resolution</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Resolution</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Resolution</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: title.asc
|
||
any:
|
||
resolution: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>subtitle_language</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td><a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 Code</a></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Subtitle Language Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.asc
|
||
any:
|
||
subtitle_language: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>audio_language</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td><a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 Code</a></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Audio Language Name</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.asc
|
||
any:
|
||
audio_language: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>studio</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Studio</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Studio</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
studio: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
#### 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: <<value>>
|
||
dynamic_collections:
|
||
Studios: # mapping name does not matter just needs to be unique
|
||
type: studio
|
||
title_format: <<key_name>>
|
||
template: studio collection
|
||
```
|
||
|
||
### Network
|
||
|
||
Create a collection for each network found in the library.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>network</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Network</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Network</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Top <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: critic_rating.desc
|
||
any:
|
||
network: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
#### 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: <<value>>
|
||
dynamic_collections:
|
||
Networks: # mapping name does not matter just needs to be unique
|
||
type: network
|
||
title_format: <<key_name>>
|
||
template: network collection
|
||
```
|
||
|
||
### Mood
|
||
|
||
Create a collection for each mood found in the library.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>mood</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Mood</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Mood</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Most Played <<value>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: plays.desc
|
||
any:
|
||
artist_mood: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### Example:
|
||
|
||
* Create a collection for the top 100 items for each mood found in the Music library
|
||
* Name the collection "Top [Mood] Tracks"
|
||
|
||
```yaml
|
||
templates:
|
||
mood collection:
|
||
smart_filter:
|
||
limit: 100
|
||
sort_by: plays.desc
|
||
type: tracks
|
||
all:
|
||
track_mood: <<value>>
|
||
dynamic_collections:
|
||
Moods: # mapping name does not matter just needs to be unique
|
||
type: mood
|
||
title_format: Top <<key_name>> Tracks
|
||
template: mood collection
|
||
```
|
||
|
||
### Style
|
||
|
||
Create a collection for each style found in the library.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>style</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Value</th>
|
||
<td>Not Used</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Style</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Style</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code>Most Played <<key_name>> <<library_type>>s</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>
|
||
|
||
```yaml
|
||
default_template:
|
||
smart_filter:
|
||
limit: 50
|
||
sort_by: plays.desc
|
||
any:
|
||
artist_style: <<value>>
|
||
```
|
||
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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:
|
||
smart_filter:
|
||
limit: 10
|
||
sort_by: plays.desc
|
||
type: albums
|
||
all:
|
||
album_style: <<value>>
|
||
dynamic_collections:
|
||
Styles: # mapping name does not matter just needs to be unique
|
||
type: style
|
||
title_format: Top <<key_name>> Albums
|
||
template: style collection
|
||
```
|
||
|
||
### Number
|
||
|
||
Creates a collection for each number defined.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>number</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>
|
||
<table class="clearTable">
|
||
<tr>
|
||
<th>Attribute</th>
|
||
<th>Description & Values</th>
|
||
</tr>
|
||
<tr>
|
||
<td><code>starting</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 0</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>ending</code></td>
|
||
<td><strong>Values:</strong> Number greater than 1</td>
|
||
<td><strong>Default:</strong> 1</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>increment</code></td>
|
||
<td><strong>Values:</strong> Number greater than 0</td>
|
||
<td><strong>Default:</strong> 1</td>
|
||
</tr>
|
||
</table>
|
||
<ul>
|
||
<li><strong><code>starting</code> and <code>ending</code> can also have the value <code>current_year</code></strong></li>
|
||
<li><strong>You can also use a value relative to the <code>current_year</code> by doing <code>current_year-5</code></strong></li>
|
||
</ul>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td>Number</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td>Number</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td>**None**</td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
#### 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 <<key>>
|
||
imdb_list: https://www.imdb.com/search/title/?release_date=<<key>>-01-01,<<key>>-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 <<key_name>>
|
||
template:
|
||
- Oscars
|
||
```
|
||
|
||
### Custom
|
||
|
||
Creates a collection for each custom `key: key_name` pair defined.
|
||
|
||
<table class="dualTable colwidths-auto align-default table">
|
||
<tr>
|
||
<th><code>type</code> Option</th>
|
||
<td><code>custom</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th><code>data</code> Values</th>
|
||
<td>Strings to iterate</td>
|
||
</tr>
|
||
<tr>
|
||
<th>Keys</th>
|
||
<td><code>key</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Key Names</th>
|
||
<td><code>key_name</code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default <code>title_format</code></th>
|
||
<td><code><<key_name>></code></td>
|
||
</tr>
|
||
<tr>
|
||
<th>Default Template</th>
|
||
<td><strong>None</strong></td>
|
||
</tr>
|
||
</table>
|
||
|
||
#### 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/<<key>>-movies
|
||
url_poster: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/streaming/<<key_name_encoded>>.jpg
|
||
|
||
dynamic_collections:
|
||
Streaming:
|
||
type: custom
|
||
data:
|
||
all-4: All 4
|
||
appletv: Apple TV+
|
||
bet: BET+
|
||
britbox: BritBox
|
||
disney: Disney+
|
||
hbo-max: HBO Max
|
||
hulu: Hulu
|
||
netflix: Netflix
|
||
now: NOW
|
||
paramount: Paramount+
|
||
peacock: Peacock
|
||
amazon-prime-video: Prime Video
|
||
title_format: <<key_name>> 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: <<value>>
|
||
dynamic_collections:
|
||
Networks: # mapping name does not matter just needs to be unique
|
||
type: network
|
||
title_format: <<key_name>>
|
||
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: <<value>>
|
||
collection_order: release
|
||
url_poster: <<my_collection_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`
|
||
* `<<key_name>>` is required and is what will be replaced by the dynamic key name.
|
||
* `<<library_type>>` 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 <<key_name>> <<library_type>>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: <<key_name>> 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
|
||
```
|
||
|
||
## 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
|
||
``` |