@ -129,7 +129,7 @@ All the following attributes update various details of the collection's Metadata
| Content Rating | `content_rating` | Used to change the collection's content rating | Text to change Content Rating |
| Label | `label` | Used to append new labels to the collection | Comma-separated string of labels to append |
| Label Remove | `label.remove` | Used to remove existing labels from the collection | Comma-separated string of labels to remove |
| Label Sync | `label.sync` | Matches the labels of the collection to the labels provided | Comma-separated string of labels to sync |
| Label Sync | `label.sync` | Matches the labels of the collection to the labels provided (Leave blank to remove all labels) | Comma-separated string of labels to sync |
| Collection Mode | `collection_mode` | Used to change the Collection Mode | `default`: Library default<br>`hide`: Hide Collection<br>`hide_items`: Hide Items in this Collection<br>`show_items`: Show this Collection and its Items |
| Collection Order | `collection_order` | Used to change the Collection Order | `release`: Order Collection by Release Dates<br>`alpha`: Order Collection Alphabetically<br>`custom`: Order Collection Via the Builder Order | :heavy_check_mark: | :heavy_check_mark: |
| Collection Level | `collection_level` | Used to make episode or season collections from `plex_search` or `trakt_list` Builders | `season`: Collection contains seasons<br>`episode`: Collection contains episodes }
@ -147,7 +147,7 @@ All the following attributes update various details of the metadata for every it
| :--- | :--- | :--- | :--- | :---: | :---: |
| Label | `item_label` | Used to append new labels to every movie/show in the collection | Comma-separated string of labels to append | :heavy_check_mark: | :heavy_check_mark: |
| Label Remove | `item_label.remove` | Used to remove existing labels from every movie/show in the collection | Comma-separated string of labels to remove | :heavy_check_mark: | :heavy_check_mark: |
| Label Sync | `item_label.sync` | Matches the labels of every movie/show in the collection to the labels provided | Comma-separated string of labels to sync | :heavy_check_mark: | :heavy_check_mark: |
| Label Sync | `item_label.sync` | Matches the labels of every movie/show in the collection to the labels provided (Leave blank to remove all labels) | Comma-separated string of labels to sync | :heavy_check_mark: | :heavy_check_mark: |
| Lock Posters | `item_lock_poster` | Locks the poster of every movie/show in the collection | `true` or `false`<br>**Default:** false | :heavy_check_mark: | :heavy_check_mark: |
| Lock Backgrounds | `item_lock_background` | Locks the background of every movie/show in the collection | `true` or `false`<br>**Default:** false | :heavy_check_mark: | :heavy_check_mark: |
| Lock Titles | `item_lock_title` | Locks the title of every movie/show in the collection | `true` or `false`<br>**Default:** false | :heavy_check_mark: | :heavy_check_mark: |
@ -27,6 +27,87 @@ The available operations attributes for each library are as follows
| Split Duplicates | `split_duplicates` | Splits all duplicate movies/shows found in this library | `true` or `false` |
| Radarr Add All | `radarr_add_all` | Adds every item in the library to Radarr | `true` or `false` |
| Sonarr Add All | `sonarr_add_all` | Adds every item in the library to Sonarr | `true` or `false` |
| [TMDb Collections](#tmdb-collections) | `tmdb_collections` | Builds Collections for every movie in your library based on TMDb Collections | [`tmdb_collections` mapping details](#tmdb-collections) |
| [Genre Mapper](#genre-mapper) | `genre_mapper` |Will check every item in your library and changed mapped genres | [`genre_mapper` mapping details](#genre-mapper) |
* When using `radarr_add_all` or `sonarr_add_all` the existing paths in plex will be used as the root folder of each item.
* If the paths in Plex are not the same as your Radarr/Sonarr paths you can use the `plex_path` and `radarr_path`/`sonarr_path` [Radarr](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Radarr-Attributes)/[Sonarr](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Sonarr-Attributes) details to convert the paths
## TMDb Collections
This operation will scan every movie in your library and create collections based on a `template` for those collections.
To run the most basic way you can just leave `tmdb_collections` Blank like so:
```yaml
library:
Movies:
operations:
tmdb_collections:
```
This will run all collections found with the template that simply has `tmdb_collection_details: <<collection_id>>` in it.
To change the template for more complex runs you can use the `template` attribute to define the template that is used for the operation like so:
```yaml
library:
Movies:
operations:
tmdb_collections:
template:
tmdb_collection_details: <<collection_id>>
collection_order: release
```
* Remember if you define your own template you need to use the `<<collection_id>>` still to make the collection
There are two other attributes that can be used under `tmdb_collections`
* `exclude_ids`: list or comma separate list of TMDb Collection IDs to ignore
* `remove_suffix`: Removes the suffix given from the TMDb Collection names. i.e. `Star Wars Collection` -> `Star Wars`
```yaml
library:
Movies:
operations:
tmdb_collections:
exclude_ids:
- 10
remove_suffix: Collection
template:
tmdb_collection_details: <<collection_id>>
collection_order: release
```
* If the Collection is defined in another Metadata file (i.e. you define your own `Star Wars` Collection) then it will not run under `tmdb_collections` as long as the collection names match.
## Genre Mapper
You can use the `genre_mapper` operation to map genres in your library.
Each attribute under `genre_mapper` is a separate mapping and has two parts.
* The key (`Action` in the example below) is what the genres will end up as.
* The value( `Action/Adventure, Action & Adventure` in the example below) is what genres you want mapped to the key.
So this example will change go through every item in your library and change the genre `Action/Adventure` or `Action & Adventure` to `Action` and `Romantic Comedy` to `Comedy`.
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.
A `radarr` mapping can be either in the root of the config file as global mapping for all libraries or you can specify the `radarr` mapping individually per library.
Below is a `radarr` mapping example and the full set of attributes:
| Weekly | Update this collection once a week on the specified day | weekly(Day of Week) | weekly(sunday) |
| Monthly | Update this collection once a month on the specified day | monthly(Day of Month) | monthly(1) |
| Yearly | Update this collection once a year on the specified day | yearly(MM/DD) | yearly(01/30) |
| Range | Updates this collection whenever the date is within the range | range(MM/DD-MM/DD) | range(12/01-12/31) |
* Using `daily` to schedule a collection is the default when `schedule` isn't specified
* You can run the script multiple times per day but using the `--time` command line argument detailed on the [Local Installation Page](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Local-Installation#time-to-run).
* You can have multiple scheduling options just make them a list or comma-separated values
* You can have multiple scheduling options just make them a list or comma-separated values
* You can use the `delete_not_scheduled` setting to delete Collections that are skipped due to not being scheduled.
| [TVDb Language](#tvdb-language) | `tvdb_language` | [ISO 639-2 Language Code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) or Blank for original Language<br>**default:** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| [TVDb Language](#tvdb-language) | `tvdb_language` | [ISO 639-2 Language Code](https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes) or Blank for original Language<br>**default:** | :heavy_check_mark: | :x: | :x: |
## Cache
@ -63,20 +67,24 @@ Minimum number of items that must be found in order to update a collection.
## Delete Below Minimum
When a collection is run it will be deleted if it is below the minimum specified by `collection_minimum`.
## Delete Not Scheduled
When a collection is skipped due to it not being scheduled delete it.
## Run Again Delay
Number of minutes to run `run_again` collections after daily run is finished.
A collection is a `run_again` collection if it has the `run_again` [Collection Detail](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Collection-Details#setting-details) attribute set to true.
## Missing Only Released
Library Level toggle to filter missing items from a collection that has yet to be released.
## Only Filter Missing
Library Level toggle to only filter missing items from a collection.
## Show Unmanaged Collections
Show collections not managed by Plex Meta Manager at the end of each run.
## Show Filtered Collections
## Show Filtered
Library Level toggle to show items filtered from collections.
@ -4,7 +4,7 @@ Using Plex Meta Manager you can create Smart Collections in two different ways.
## Smart Label
A Smart Label Collection is a smart collection that grabs every item with a specific label generated by the program. That label is added to all the items the Collection Builders find instead of being added to a normal collection.
You can add `smart_label` giving it one of the sorts from the Movies/Shows column of the [Sorts Table](#sorts-table) below along with any other builder to make that collection a Smart Label Collection.
You can add `smart_label` giving it one of the sorts from the Movies/Shows column of the [Sorts Table](#sort-options) below along with any other builder to make that collection a Smart Label Collection.
This is extremely useful because smart collections don't follow normal show/hide rules and can eliminate the need to have [Plex Collectionless](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Plex-Builders#plex-collectionless) when used correctly. To fix the issue described in [Plex Collectionless](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Plex-Builders#plex-collectionless) you would make `Marvel Cinematic Universe` a Smart Label Collection and all other Marvel collection just normal collections and they will show/hide all the movie properly.
@ -29,7 +29,7 @@ There are a couple other attributes you can have at the top level only along wit
| :--- | :--- | :--- | :---: |
| Type | `type` | The Type of items inside this collection<br>**Options**: `movies`, `shows`, `seasons`, and `episodes` | `movies` for Movies Libraries and `shows` for Show Libraries |
| Limit | `limit` | The max number of item for the filter | all |
| Sort By | `sort_by` | This will control how the filter is sorted in your library. You can use any sort options for your search type in the [Sorts Table](#sorts-table) | `random` |
| Sort By | `sort_by` | This will control how the filter is sorted in your library. You can use any sort options for your search type in the [Sorts Table](#sort-options) | `random` |
| Validate | `validate` | Determines if a collection will fail on a validation error<br>**Options**: `true` or `false` | `true` |
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.
A `sonarr` mapping can be either in the root of the config file as global mapping for all libraries or you can specify the `sonarr` mapping individually per library.
Below is a `sonarr` mapping example and the full set of attributes:
There are two attributes unique to `templates`, `default` and `optional`.
There are three attributes unique to `templates`, `default`, `optional`, and `move_collection_prefix`.
* `default` can set default values for template variables to be used if they're not specified in the call.
* `optional` can specify variables that if not specified on the template call will cause any attribute using one of those variables to be ignored in the template.
* `move_collection_prefix` can be given a list or comma-separated string of prefixes to move to the end of the collection name for sorting.
i.e. If you have `move_collection_prefix: The` and a collection is called `The Avengers` then `<<collection_name>>` is replaced with `Avengers, The` instead of `The Avengers` for that collection.
Here's an example IMDB Genre template and two different ways to call it.
summary: Action film is a genre wherein physical action takes precedence in the storytelling. The film will often have continuous motion and action including physical stunts, chases, fights, battles, and races. The story usually revolves around a hero that has a goal, but is facing incredible odds to obtain it.
summary: Comedy is a genre of film that uses humor as a driving force. The aim of a comedy film is to illicit laughter from the audience through entertaining stories and characters. Although the comedy film may take on some serious material, most have a happy ending. Comedy film has the tendency to become a hybrid sub-genre because humor can be incorporated into many other genres. Comedies are more likely than other films to fall back on the success and popularity of an individual star.
* Each Attribute can be either a webhook url as a string or a comma-separated list of webhooks urls.
* To send notifications to [Notifiarr](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Notifiarr-Attributes) just add `notifiarr` to a webhook instead of the webhook url.
@ -30,38 +26,27 @@ webhooks:
The Error notification will be sent whenever an error occurs. The payload that is sent is different Depending on which level the error occurs.
#### JSON Payload
<table>
<tr>
<th>Global</th>
<th>Library</th>
<th>Collection</th>
</tr>
<tr>
<td>
#### Global JSON Payload
```yaml
{
"error": str, // Error Message
"critical": bool // Critical Error
"error": str, // Error Message
"critical": bool // Critical Error
}
```
</td>
<td>
#### Library JSON Payload
```yaml
{
"error": str, // Error Message
"critical": bool, // Critical Error
"server_name": str, // Server Name
"library_name": str // Library Name
"error": str, // Error Message
"critical": bool, // Critical Error
"server_name": str, // Server Name
"library_name": str // Library Name
}
```
</td>
<td>
#### Collection JSON Payload
```yaml
{
@ -73,10 +58,6 @@ The Error notification will be sent whenever an error occurs. The payload that i
}
```
</td>
</tr>
</table>
## Run Start Notifications
The Run Start notification will be sent at the beginning of every run.
@ -85,7 +66,7 @@ The Run Start notification will be sent at the beginning of every run.
```yaml
{
"start_time": str, // Time Run is started Format "HH:MM"
"start_time": str, // Time Run is started Format "YY-mm-dd HH:MM:SS"
}
```
@ -97,7 +78,8 @@ The Run End notification will be sent at the end of every run with statistics.
```yaml
{
"start_time": str, // Time Run is started Format "YY-mm-ddTHH:MM:SSZ"
"start_time": str, // Time Run started Format "YY-mm-dd HH:MM:SS"
"end_time": str, // Time Run ended Format "YY-mm-dd HH:MM:SS"
"run_time": str, // Time Run took to complete Format "HH:MM"
"collections_created": int, // Number of Collections Created
"collections_modified": int, // Number of Collections Modified
@ -111,23 +93,22 @@ The Run End notification will be sent at the end of every run with statistics.
## Collection Notifications
The Collection Notification will be sent after each collection, containing the following payload.
The Collection Notification will be sent after each collection containing the following payload if the collection has been created, has new items, or has had items removed.
#### JSON Payload
```yaml
{
"start_time": str, // Time Run is started Format "YY-mm-ddTHH:MM:SSZ"
"server_name": str, // Server Name
"library_name": str, // Library Name
"type": str, // Will be either "movie" or "show"
"collection": str, // Collection Name
"created": bool, // Was the Collection Created on this run