57 KiB
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, Harry Potter, 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.
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
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.
- This particular example also uses the
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 multiplekeys
, 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.
dynamic_collections:
networks:
type: network
addons:
MTV:
- MTV2
- MTV3
- MTV (UK)
Attributes
Attribute | Description | Required |
---|---|---|
type |
Type of Dynamic Collection to be created. | ✅ |
data |
Data to determine how dynamic collections with a certain type are created. |
Depends on type |
exclude |
Exclude this list of keys from being created into collections. | ❌ |
addons |
Defines how multiple keys can be combined under a parent key. | ❌ |
template |
Name of the template to use for these dynamic collections. | ❌ |
template_variables |
Defines how template variables can be defined by key. | ❌ |
other_template |
Name of the template to use for the other collection. | ❌ |
remove_suffix |
Removes the defined suffixes from the key before it's used in the collection title. | ❌ |
remove_prefix |
Removes the defined prefixes from the key before it's used in the collection title. | ❌ |
title_format |
This is the format for the collection titles. | ❌ |
key_name_override |
Defines how key names can be overridden before they are formatted into collection titles. | ❌ |
title_override |
Defines how collection titles can be overridden ignoring title formatting. | ❌ |
custom_keys |
Defines if custom keys are allowed. | ❌ |
test |
Will add test: true to all collections for test runs. |
❌ |
sync |
Will remove dynamic collections that are no longer in the creation list. | ❌ |
include |
Define a list of keys to be made into collections. | ❌ |
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 | Usesdata |
Movies | Shows | Music | Video |
---|---|---|---|---|---|---|
tmdb_collection |
Create a collection for each TMDb Collection associated with an item in the library | ❌ | ✅ | ❌ | ❌ | ❌ |
tmdb_popular_people |
Create a collection for each actor found on TMDb's Popular People List | ✅ | ✅ | ✅ | ❌ | ❌ |
original_language |
Create a collection for each TMDb original language associated with an item in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
origin_country |
Create a collection for each TMDb origin country associated with an item in the library | ❌ | ❌ | ✅ | ❌ | ❌ |
trakt_user_lists |
Create a collection for each list from specific trakt users | ✅ | ✅ | ✅ | ❌ | ❌ |
trakt_liked_lists |
Create a collection for each list the authenticated trakt user likes | ❌ | ✅ | ✅ | ❌ | ❌ |
trakt_people_list |
Create a collection for each actor found in the trakt list | ✅ | ✅ | ✅ | ❌ | ❌ |
actor |
Create a collection for each actor found in the library | ✅ | ✅ | ✅ | ❌ | ❌ |
director |
Create a collection for each director found in the library | ✅ | ✅ | ❌ | ❌ | ❌ |
writer |
Create a collection for each writer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ |
producer |
Create a collection for each producer found in the library | ✅ | ✅ | ❌ | ❌ | ❌ |
genre |
Create a collection for each genre found in the library | ❌ | ✅ | ✅ | ✅ | ✅ |
content_rating |
Create a collection for each content rating found in the library | ❌ | ✅ | ✅ | ❌ | ✅ |
year |
Create a collection for each year found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
decade |
Create a collection for each decade found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
country |
Create a collection for each country found in the library | ❌ | ✅ | ❌ | ✅ | ✅ |
resolution |
Create a collection for each resolution found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
subtitle_language |
Create a collection for each subtitle language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
audio_language |
Create a collection for each audio language found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
studio |
Create a collection for each studio found in the library | ❌ | ✅ | ✅ | ❌ | ❌ |
edition |
Create a collection for each edition found in the library | ❌ | ✅ | ❌ | ❌ | ❌ |
network |
Create a collection for each network found in the library | ❌ | ❌ | ✅ | ❌ | ❌ |
mood |
Create a collection for each mood found in the library | ❌ | ❌ | ❌ | ✅ | ❌ |
style |
Create a collection for each artist style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ |
album_style |
Create a collection for each album style found in the library | ❌ | ❌ | ❌ | ✅ | ❌ |
number |
Creates a collection for each number defined | ✅ | ✅ | ✅ | ✅ | ✅ |
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 Option |
tmdb_collection |
---|---|
data Value |
Not Used |
Keys | TMDb Collection ID |
Key Names | TMDb Collection Title |
Default title_format |
<<key_name>> |
Default Template |
|
Example: Create collection for every TMDb Collection found in the library.
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.
type Option |
tmdb_popular_people |
---|---|
data Value |
Number greater than 0 |
Keys | TMDb Person ID |
Key Names | TMDb Person Name |
Default title_format |
<<key_name>> |
Default Template |
|
Example: Create collection for the top 10 popular people
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 Option |
original_language |
---|---|
data Value |
Not Used |
Keys | ISO 639-1 Code |
Key Names | ISO Language Name |
Default title_format |
<<key_name>> <<library_type>>s |
Default Template |
|
Example: Create collection for every TMDb Original Language found in the library.
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 Option |
origin_country |
---|---|
data Value |
Not Used |
Keys | ISO 3166-1 alpha-2 country code |
Key Names | ISO Country Name |
Default title_format |
<<key_name>> <<library_type>>s |
Default Template |
|
Example: Create collection for every TMDb Origin Country found in the library.
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 to be configured within the Configuration File
type Option |
trakt_user_lists |
---|---|
data Value |
List of Trakt Users |
Keys | Trakt List URL |
Key Names | Trakt List Title |
Default title_format |
<<key_name>> |
Default Template |
|
Example: Create collections for each of the lists that the users have created
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 to be configured within the Configuration File
type Option |
trakt_liked_lists |
---|---|
data Value |
Not Used |
Keys | Trakt List URL |
Key Names | Trakt List Title |
Default title_format |
<<key_name>> |
Default Template |
|
Example: Create collections for each of the lists that the user has liked within Trakt
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 to be configured within the Configuration File
type Option |
trakt_user_lists |
---|---|
data Value |
List of Trakt URLs |
Keys | TMDb Person ID |
Key Names | TMDb Person Name |
Default title_format |
<<key_name>> |
Default Template |
|
Example: Create a collection for each of the people on the trakt list
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.
type Option |
actor |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
data Values |
|
|||||||||||
Keys | Person Name | |||||||||||
Key Names | Person Name | |||||||||||
Default title_format |
<<key_name>> |
|||||||||||
Default Template |
|
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 withindepth
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
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
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 Option |
director |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
data Values |
|
|||||||||||
Keys | Person Name | |||||||||||
Key Names | Person Name | |||||||||||
Default title_format |
<<key_name>> |
|||||||||||
Default Template |
|
depth
determines how many directors are looked at per item.minimum
determines the minimum number of times the director must appear withindepth
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
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
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 Option |
writer |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
data Values |
|
|||||||||||
Keys | Person Name | |||||||||||
Key Names | Person Name | |||||||||||
Default title_format |
<<key_name>> |
|||||||||||
Default Template |
|
depth
determines how many writers are looked at per item.minimum
determines the minimum number of times the writer must appear withindepth
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
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
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 Option |
producer |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
data Values |
|
|||||||||||
Keys | Person Name | |||||||||||
Key Names | Person Name | |||||||||||
Default title_format |
<<key_name>> |
|||||||||||
Default Template |
|
depth
determines how many producers are looked at per item.minimum
determines the minimum number of times the producer must appear withindepth
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
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
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 Option |
genre |
---|---|
data Value |
Not Used |
Keys | Genre |
Key Names | Genre |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
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"
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.
type Option |
content_rating |
---|---|
data Value |
Not Used |
Keys | Content Rating |
Key Names | Content Rating |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
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
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.
type Option |
year |
---|---|
data Value |
Not Used |
Keys | Year |
Key Names | Year |
Default title_format |
Best <<library_type>>s of <<key_name>> |
Default Template |
|
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]"
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
type Option |
decade |
---|---|
data Value |
Not Used |
Keys | Decade |
Key Names | Decade |
Default title_format |
Best <<library_type>>s of <<key_name>> |
Default Template |
|
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)"
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
type Option |
country |
---|---|
data Value |
Not Used |
Keys | Country |
Key Names | Country |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
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 thetitle_format
to change the collection name from "France" which would be the default title, to "Top French Cinema"
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
type Option |
resolution |
---|---|
data Value |
Not Used |
Keys | Resolution |
Key Names | Resolution |
Default title_format |
<<key_name>> <<library_type>>s |
Default Template |
|
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"
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 Option |
subtitle_language |
---|---|
data Value |
Not Used |
Keys | ISO 639-1 Code |
Key Names | Subtitle Language Name |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for each subtitle language found in the library
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 Option |
audio_language |
---|---|
data Value |
Not Used |
Keys | ISO 639-1 Code |
Key Names | Audio Language Name |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for each audio language found in the library
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 Option |
studio |
---|---|
data Value |
Not Used |
Keys | Studio |
Key Names | Studio |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for each studio found in a Movies library
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
Edition
Create a collection for each edition found in the library.
type Option |
edition |
---|---|
data Value |
Not Used |
Keys | Editions |
Key Names | Edition |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for each edition found in a Movies library
templates:
edition collection:
smart_filter:
sort_by: critic_rating.desc
all:
edition: <<value>>
dynamic_collections:
Sditions: # mapping name does not matter just needs to be unique
type: edition
title_format: <<key_name>>
template: edition collection
Network
Create a collection for each network found in the library.
type Option |
network |
---|---|
data Value |
Not Used |
Keys | Network |
Key Names | Network |
Default title_format |
Top <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for each network found in a TV Shows library
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.
type Option |
mood |
---|---|
data Value |
Not Used |
Keys | Mood |
Key Names | Mood |
Default title_format |
Most Played <<value>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for the top 100 items for each mood found in the Music library
- Name the collection "Top [Mood] Tracks"
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 artist style found in the library.
type Option |
style |
---|---|
data Value |
Not Used |
Keys | Style |
Key Names | Style |
Default title_format |
Most Played <<key_name>> <<library_type>>s |
Default Template |
|
Example:
- Create a collection for the top 10 artists for each style found in the Music library
- Name the collection "Top [Style] Artists"
templates:
style collection:
smart_filter:
limit: 10
sort_by: plays.desc
all:
artist_style: <<value>>
dynamic_collections:
Styles: # mapping name does not matter just needs to be unique
type: style
title_format: Top <<key_name>> <<library_type>>
template: style collection
Album Style
Create a collection for each album style found in the library.
type Option |
album_style |
---|---|
data Value |
Not Used |
Keys | Style |
Key Names | Style |
Default title_format |
Most Played <<key_name>> Albums |
Default Template |
|
Example:
- Create a collection for the top 10 albums for each style found in the Music library
- Name the collection "Top [Style] Albums"
templates:
style collection:
builder_level: album
smart_filter:
limit: 10
sort_by: plays.desc
all:
album_style: <<value>>
dynamic_collections:
Styles: # mapping name does not matter just needs to be unique
type: album_style
title_format: Top <<key_name>> Albums
template: style collection
Number
Creates a collection for each number defined.
type Option |
number |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
data Values |
|
|||||||||||
Keys | Number | |||||||||||
Key Names | Number | |||||||||||
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]"
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.
type Option |
custom |
---|---|
data Values |
Strings to iterate |
Keys | key |
Key Names | key_name |
Default title_format |
<<key_name>> |
Default Template | None |
Example:
- Create a collection for the various Streaming Services
- Name the collection "[Key Name] Movies"
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.
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.
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 addonskey
: The dynamic keykey_name
: The key afterkey_name_override
,remove_prefix
, orremove_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
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
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 addonskey
: The dynamic keykey_name
: The key afterkey_name_override
,remove_prefix
, orremove_suffix
are run on it.included_keys
: The list of included keysused_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
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
.
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.
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.
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
.
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
.
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
.
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
.
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
.
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