| `username` | **Description:** A user's AniList Username |
| `list_name` | **Description:** A user's AniList List Name |
| `score.gt`<sup>1</sup> | **Description:** Only return items that have a score greater then the given number.<br>**Values:** `0.0`-`10.0` |
| `score.gte`<sup>1</sup> | **Description:** Only return items that have a score greater then or equal to the given number.<br>**Values:** `0.0`-`10.0` |
| `score.gt`<sup>1</sup> | **Description:** Only return items that have a score greater than the given number.<br>**Values:** `0.0`-`10.0` |
| `score.gte`<sup>1</sup> | **Description:** Only return items that have a score greater than or equal to the given number.<br>**Values:** `0.0`-`10.0` |
| `score.lt`<sup>1</sup> | **Description:** Only return items that have a score less then the given number.<br>**Values:** `0.0`-`10.0` |
| `score.lte`<sup>1</sup> | **Description:** Only return items that have a score less then or equal to the given number.<br>**Values:** `0.0`-`10.0` |
| `sort_by` | **Description:** Sort Order to return<br>**Default:** `score`<br>**Values:**<tableclass="clearTable"><tr><td>`score`</td><td>Sort by User Score</td></tr><tr><td>`popularity`</td><td>Sort by Popularity</td></tr><tr><td>`status`</td><td>Sort by Status</td></tr><tr><td>`progress`</td><td>Sort by Progress</td></tr><tr><td>`last_updated`</td><td>Sort by Last Updated</td></tr><tr><td>`last_added`</td><td>Sort by Last Added</td></tr><tr><td>`start_date`</td><td>Sort by Start Date</td></tr><tr><td>`completed_date`</td><td>Sort by Completed Date</td></tr></table> |
@ -5,6 +5,7 @@ Filters allow for you to filter every item added to the collection/overlay/playl
## Using Filters
Filters cannot do anything alone they require the use of at least one [Builder](../metadata/builders.md) to function.
You can have multiple filters in each set but an item must match at least one value from **each** filter to not be ignored. The values for each must match what Plex has including special characters in order to match.
```yaml
@ -31,19 +32,9 @@ All filter options are listed below. To display items filtered out add `show_fil
You can use the `plex_all: true` builder to filter from your entire library.
**Filters can be very slow. Try to build or narrow your items using [Plex Search](plex.md#plex-search) or another [Builder](../metadata/builders.md) if possible.**
[definition.md](details%2Fdefinition.md)
## Table Annotations
<sup>**1**</sup> Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition.md).
<sup>**2**</sup> Also filters out missing movies/shows from being added to Radarr/Sonarr. These Values also cannot use the `count` modifiers.
<sup>**3**</sup> You can use `current_year` to have PMM use the current years value. This can be combined with a `-#` at the end to subtract that number of years. i.e. `current-2`
<sup>**4**</sup> The actual numbers are pulled from the [PMM-Mediastingers](https://github.com/meisnate12/PMM-Mediastingers) Repo.
<sup>**5**</sup> Also is a Tag Filter and can use all of those modifiers.
???+ warning
Filters can be very slow, particularly on larger libraries. Try to build or narrow your items using a [Smart Label Collection](smart.md#smart-label), [Plex Search](plex.md#plex-search) or another [Builder](../metadata/builders.md) if possible.
## String Filters
@ -218,6 +209,18 @@ Special Filters each have their own set of rules for how they're used.
| `imdb_keyword`<sup>**[2](#table-annotations)**</sup><sup>**[5](#table-annotations)**</sup> | Uses the keywords from IMDb to match<br>`keywords`: list of keywords to match<br>`minimum_votes`: minimum number of votes keywords must have<br>`minimum_relevant`: minimum number of relevant votes keywords must have<br>`minimum_percentage`: minimum percentage of relevant votes keywords must have | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-check:{ .green } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } | :fontawesome-solid-circle-xmark:{ .red } |
## Table Annotations
<sup>**1**</sup> Filters using the special `episodes`/`tracks` [filter](#special-filters) with the [default percent](details/definition.md).
<sup>**2**</sup> Also filters out missing movies/shows from being added to Radarr/Sonarr. These Values also cannot use the `count` modifiers.
<sup>**3**</sup> You can use `current_year` to have PMM use the current years value. This can be combined with a `-#` at the end to subtract that number of years. i.e. `current-2`
<sup>**4**</sup> The actual numbers are pulled from the [PMM-Mediastingers](https://github.com/meisnate12/PMM-Mediastingers) Repo.
<sup>**5**</sup> Also is a Tag Filter and can use all of those modifiers.
* To get a Client Name and Client Version please follow the following steps.
To get a Client Name and Client Version please follow the following steps.
1. Login to [AniDB](https://anidb.net/)
2. Go to you [API Client Page](https://anidb.net/software/add) and go to the `Add New Project` Tab.
1. Login to [AniDB](https://anidb.net/)
2. Go to you [API Client Page](https://anidb.net/software/add) and go to the `Add New Project` Tab.
![AniDB Add Project](anidb-1.png)
![AniDB Add Project](anidb-1.png)
3. Fill in the Project Name with whatever name you want and then hit `+ Add Project`. The rest of the settings don't matter.
4. After you've added the project you should end up on the Projects Page. If not go back to the [API Client Page](https://anidb.net/software/add) and click your projects name.
5. Once you're on the project page click `Add Client` in the top right.
3. Fill in the Project Name with whatever name you want and then hit `+ Add Project`. The rest of the settings don't matter.
4. After you've added the project you should end up on the Projects Page. If not go back to the [API Client Page](https://anidb.net/software/add) and click your projects name.
5. Once you're on the project page click `Add Client` in the top right.
![AniDB Add Client](anidb-2.png)
![AniDB Add Client](anidb-2.png)
6a. Come up with and enter a unique to AniDB Client Name
6b. Select `HTTP API` in the API Dropdown
6c. Put `1` for Version.
6. Come up with and enter a unique to AniDB Client Name
7. Select `HTTP API` in the API Dropdown
8. Put `1` for Version.
![AniDB Client Page](anidb-3.png)
![AniDB Client Page](anidb-3.png)
7. Put the Client Name and Client Version you just created in your config.yml as `client` and `version` respectively.
9. Put the Client Name and Client Version you just created in your config.yml as `client` and `version` respectively.
This will remove all overlays from your library, but will not delete the overlaid images from your system, resulting in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
You can remove overlays from a library by adding `remove_overlays: true` to `overlay_path`. This will remove all overlays when run and not generate new ones.
You can remove overlays from a library by adding `remove_overlays: true` to `overlay_path`.
???+ warning "Proceed with Caution"
This will remove all overlays from your library, but will not delete the overlaid images from your system, resulting in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
```yaml
libraries:
TV Shows:
@ -173,11 +174,11 @@ You can remove overlays from a library by adding `remove_overlays: true` to `ove
#### Reapply Overlays
This will reapply all overlays on each run until this attribute is set to `false`, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
You can reapply overlays from a library by adding `reapply_overlays: true` to `overlay_path`. This will reapply overlays to every item in your library.
???+ danger Proceed with Caution
???+ danger "Important Notice"
This will reapply all overlays on each run until this attribute is set to `false`, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
```yaml
libraries:
@ -191,11 +192,12 @@ You can reapply overlays from a library by adding `reapply_overlays: true` to `o
#### Reset Overlays
This will reset all posters to the desired source on each run until this attribute is set to `false`, and will reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
You can reset overlays from a library by adding `reset_overlays` to `overlay_path` and setting it to either `tmdb` or `plex` depending on where you want to source the images from. This will use the reset image when overlaying items in your library.
???+ danger "Proceed with Caution"
???+ danger "Important Notice"
This will reset all posters to the desired source on each run until this attribute is set to `false`, and will reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
| `cache_expiration` | Number of days before each cache mapping expires and has to be re-cached. | 60 | :fontawesome-solid-circle-xmark:{ .red } |
* The MdbList apikey can be found [here](https://mdblist.com/preferences/).
???+ tip
* The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled
The MdbList apikey can be found [here](https://mdblist.com/preferences/).
The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled
* All other attributes will be filled in by Plex Meta Manager.
All other attributes will be filled in by Plex Meta Manager.
To connect to MyAnimeList.net you must create a MyAnimeList application and supply Plex Meta Manager the `client id` and `client secret` provided, please do the following:
1. [Click here to create a MyAnimeList API application.](https://myanimelist.net/apiconfig/create)
2. Enter an `App Name` for the application. Ex. `Plex Meta Manager`
3. Select `web` for `App Type`.
4. Enter an `App Description` for the application Ex. `Plex Meta Manager manages metadata and collections`
5. Enter `http://localhost/` for `App Redirect URL`.
6. Enter `https://github.com/meisnate12/Plex-Meta-Manager` for `Homepage URL`.
7. Select `non-commercial` for `Commercial / Non-Commercial`.
8. Enter any name under `Name / Company Name`.
9. Select `hobbyist` for `Purpose of Use`.
10. Agree to the API License and Developer Agreement and hit the `Submit` button
11. You should see `Successfully registered.` followed by a link that says `Return to list` click this link.
12. On this page Click the `Edit` button next to the application you just created.
13. Record the `Client ID` and `Client Secret` found on the application page.
14. Go to this URL but replace `CLIENT_ID` with your Client ID
* To connect to MyAnimeList.net you must create a MyAnimeList application and supply Plex Meta Manager the `client id` and `client secret` provided, please do the following:
15. You should see a page that looks like this
1. [Click here to create a MyAnimeList API application.](https://myanimelist.net/apiconfig/create)
2. Enter an `App Name` for the application. Ex. `Plex Meta Manager`
3. Select `web` for `App Type`.
4. Enter an `App Description` for the application Ex. `Plex Meta Manager manages metadata and collections`
5. Enter `http://localhost/` for `App Redirect URL`.
6. Enter `https://github.com/meisnate12/Plex-Meta-Manager` for `Homepage URL`.
7. Select `non-commercial` for `Commercial / Non-Commercial`.
8. Enter any name under `Name / Company Name`.
9. Select `hobbyist` for `Purpose of Use`.
10. Agree to the API License and Developer Agreement and hit the `Submit` button
11. You should see `Successfully registered.` followed by a link that says `Return to list` click this link.
12. On this page Click the `Edit` button next to the application you just created.
13. Record the `Client ID` and `Client Secret` found on the application page.
14. Go to this URL but replace `CLIENT_ID` with your Client ID
17. You will be taken to a page that will not load. That's fine and expected.
Click "Allow"
16. You will be taken to a page that will not load. That's fine and expected.
![Localhost Failure](localhost-fail.png)
![Localhost Failure](localhost-fail.png)
18. Copy the URL, which will be `localhost/?code=BLAH` and paste in your config file next to `localhost_url`.
17. Copy the URL, which will be `localhost/?code=BLAH` and paste in your config file next to `localhost_url`.
NOTE: If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.
You will need to stop that web server while you're doing this in order to grab that localhost URL.
18. Run PMM and the auth will be completed.
**If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.**
You will need to stop that web server while you're doing this in order to grab that localhost URL.
## Alternative Way Letting PMM make the URL
19. Run PMM and the auth will be completed.
## Alternative Way of Letting PMM make the URL
You can record just your `client_id` and `client_secret` and pmm will create the url for you described below.
* On the first run, Plex Meta Manager will walk the user through the OAuth flow by producing a MyAnimeList URL for the user to follow. After following the URL login to MyAnimeList.net and authorize the application by clicking the `Allow` button which will redirect the user to `http://localhost/`. Copy the entire URL and paste it into Plex Meta Manager and if the URL is correct then Plex Meta Manager will populate the `authorization` sub-attributes to use in subsequent runs.
On the first run, Plex Meta Manager will walk the user through the OAuth flow by producing a MyAnimeList URL for the user to follow.
After following the URL login to MyAnimeList.net and authorize the application by clicking the `Allow` button which will redirect the user to `http://localhost/`.
Copy the entire URL and paste it into Plex Meta Manager and if the URL is correct then Plex Meta Manager will populate the `authorization` sub-attributes to use in subsequent runs.
On first run:
```
@ -87,7 +97,7 @@ Click "Allow", and you will be taken to a page that will not load. That's fine
Copy the URL, which will be `localhost/?code=BLAH` and paste it at the prompt.
NOTE: If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.
**If you do not see an error as above but instead get taken to some seemingly random website, you probably have a webserver running on your local computer, probably from some sort of tutorial if you don't recall having set one up. For example, some Docker tutorials have you start up local web servers.**
You will need to stop that web server while you're doing this in order to grab that localhost URL.
@ -99,11 +109,11 @@ You will need to stop that web server while you're doing this in order to grab t
```
<h4>OAuth Flow using Docker</h4>
### OAuth Flow using Docker
To authenticate MyAnimeList the first time, you need run the container with the `-it` flags in order to walk through the OAuth flow mentioned above. Once you have the MyAnimeList authentication data saved into the YAML, you'll be able to run the container normally.
<h4>OAuth Flow using unRAID Docker</h4>
### OAuth Flow using unRAID Docker
Directions on how to authenticate MyAnimeList on unRAID can be found on the [unRAID Walkthrough](../pmm/install/guides/unraid.md#advanced-installation-authenticating-trakt-or-myanimelist) page.
| `cache_expiration` | Number of days before each cache mapping expires and has to be re-cached. | 60 | :fontawesome-solid-circle-xmark:{ .red } |
* The OMDb apikey can be generated [here](http://www.omdbapi.com/apikey.aspx).
???+ tip
* The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled
The OMDb apikey can be generated [here](http://www.omdbapi.com/apikey.aspx).
The free apikey is limited to 1000 requests per day so if you hit your limit the program should be able to pick up where it left off the next day as long as the `cache` [Setting](settings.md#cache) is enabled
| `managed` | **Values:**<br>`true`: Collection must be a Managed Collection to be deleted (the collection has the `PMM` label)<br>`false`: Collection must be an Unmanaged Collection to be deleted (the collection does not have the `PMM` label) |
| `configured` | **Values:**<br>`true`: Collection must be a Configured Collection to be deleted (collection is in the config file of the specific PMM run)<br>`false`: Collection must be an Unconfigured Collection to be deleted (collection is not in the config file of the specific PMM run).<br>**The collection does not need to be scheduled to be considered configured and only needs to be in the config file.** |
| `less` | Collection must contain less then the given number of items to be deleted.<br>**Values:** Number Greater then 0 |
| `less` | Collection must contain less then the given number of items to be deleted.<br>**Values:** Number greater than 0 |
**Example:**
@ -246,6 +246,11 @@ Updates every item's episode's audience/critic/user rating in the library to the
Updates every item's poster to the chosen sites poster. Will fallback to `plex` if the given option fails. Assets will be used over anything else.
???+ warning
When used in combination with Overlays, this could cause PMM to reset the poster and then reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
**Attribute:** `mass_poster_update`
**Values:** There are a few different options to determine how the `mass_poster_update` works.
@ -272,6 +277,10 @@ library:
Updates every item's background to the chosen sites background. Will fallback to `plex` if the given option fails. Assets will be used over anything else.
???+ warning
When used in combination with Overlays, this could cause PMM to reset the background and then reapply all overlays on each run, which will result in [image bloat](../pmm/essentials/scripts/image-cleanup.md).
**Attribute:** `mass_background_update`
**Values:** There are a few different options to determine how the `mass_background_update` works.
@ -9,6 +9,7 @@ Configuring [Plex](https://www.plex.tv/) is required in order to connect to your
A `plex` mapping can be either in the root of the config file as global mapping for all libraries, or you can specify the `plex` mapping individually per library.
Below is a `plex` mapping example and the full set of attributes:
```yaml
plex:
url: http://192.168.1.12:32400
@ -30,11 +31,14 @@ plex:
| `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | ❌ |
| `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | ❌ |
* **Do Not Use the Plex Token found in Plex's Preferences.xml file**
???+ warning
Do Not Use the Plex Token found in Plex's Preferences.xml file.
If you need help finding your Plex authentication token, please see Plex's [support article](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/).
* This script can be run on a remote Plex server, but be sure that the `url` provided is publicly addressable, and it's recommended to use `HTTPS`.
This script can be run on a remote Plex server, but be sure that the `url` provided is publicly addressable, and it's recommended to use `HTTPS`.
* If you need help finding your Plex authentication token, please see Plex's [support article](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/).
Configuring [Radarr](https://radarr.video/) is optional but will allow you to send movies to a Radarr instance when they're found missing while updating a library's collections.
Radarr V2 may work, but it is not supported please upgrade to V3 if you can.
???+ note
Radarr V2 may work, but it is not supported. Please upgrade to V3 if you can.
Items in your List Exclusions will be ignored by PMM.
@ -49,9 +51,11 @@ radarr:
| `plex_path` | When using `add_existing` or `radarr_add_all` Convert this part of the path to `radarr_path`. | ` ` | ❌ |
| `radarr_path` | When using `add_existing` or `radarr_add_all` Convert the `plex_path` part of the path to this. | ` ` | ❌ |
* The `token` can be found by going to `Radarr > Settings > General > Security > API Key`
???+ tip
The `token` can be found by going to `Radarr > Settings > General > Security > API Key`
* The `quality_profile` must be the exact name of the desired quality profile, including all spaces and capitalization.
The `quality_profile` must be the exact name of the desired quality profile, including all spaces and capitalization.
* You can set most attributes per collection by using the [Radarr Details](../builders/details/arr.md#radarr-definition-settings) in the collection definition.
@ -82,7 +86,6 @@ Specifying different options for specific libraries:
In this example we have two Radarr instances, standard and 4K, and four libraries showing how one can override individual settings at the library level. Also, movies are being added to the "Library05" library outside Radarr via a custom script and I want those new movies added to Radarr for tracking.
```
libraries:
Library01: # this library uses the default radarr config
@ -67,61 +67,39 @@ The available setting attributes which can be set at each level are outlined bel
## Cache
Cache the Plex GUID and associated IDs for each library item for faster subsequent processing. The cache file is created in the same directory as the configuration file.
Whilst searching for assets, scan the folders within the `asset_directory` and if an asset poster (i.e. `/ASSET_NAME/poster.ext`) was not found, rename the first image found that has a height greater than or equal to its width to `poster.ext`. If an asset background (i.e. `/ASSET_NAME/background.ext`), rename the first image found that has a width greater than its height to `background.ext`.
* `asset_folders` must be set to `true` for this to take effect.
`asset_folders` must be set to `true` for this to take effect.
| | |
|---|---|
| Default Value | false |
| Allowed Values | `true` or `false` |
## Download URL Assets
Whilst searching for assets, download images set within Metadata/Playlist files( i.e. images set by `url_poster` or `url_background`) into the asset folder if none are already present.
Whilst searching for assets, when scanning for assets for a TV Show, if Season posters are found (i.e. `/ASSET_NAME/Season##.ext`), notify the user of any seasons which do not have an asset image.
Whilst searching for assets, when scanning for assets for a TV Show, if an Episode Title Card is found (i.e. `/ASSET_NAME/S##E##.ext`), notify the user of any episodes which do not have an asset image.
| Allowed Values | `release`: Order Collection by Release Dates</br>`alpha`: Order Collection Alphabetically</br>`custom`: Order Collection Via the Builder Order</br>Any `plex_search` sort option1 |
<sup>1</sup>`plex_search` sort options can be found [here](plex.md#sort-options)
## Minimum Items
Set the minimum number of items that must be found in order to build or update a collection/playlist.
@ -354,162 +265,110 @@ Set the number of minutes to delay running `run_again` collections after daily r
For example, if a collection adds items to Sonarr/Radarr, the library can automatically re-run "X" amount of time later so that any downloaded items are processed.
* A collection is a `run_again` collection if it has the `run_again` [Setting Detail](../builders/details/definition.md) attribute set to true.
???+ note
A collection is a `run_again` collection if it has the `run_again` [Setting Detail](../builders/details/definition.md) attribute set to true.
Only items missing from a collection will be filtered. **Only specific filters can filter missing. See [Filters](../metadata/filters.md) for more information.**
* this can be used to filter which missing media items get sent to Sonarr/Radarr
???+ note
this can be used to filter which missing media items get sent to Sonarr/Radarr
set to false if your log file shows any errors similar to "SSL: CERTIFICATE_VERIFY_FAILED"
| | |
|---|---|
| Default Value | true |
| Allowed Values | `true` or `false` |
## Check Nightly
Will check nightly for updates instead of develop.
* This does not affect which version of PMM is grabbed when using `git pull` or any other update mechanism, it is only used for the initial version check when PMM runs to specify if a new version is available.
* It is recommended to set this to `true` if you primarily use the `nightly` branch
This does not affect which version of PMM is grabbed when using `git pull` or any other update mechanism, it is only used for the initial version check when PMM runs to specify if a new version is available.
It is recommended to set this to `true` if you primarily use the `nightly` branch
Configuring [Sonarr](https://sonarr.tv/) is optional but will allow you to send shows to a Sonarr instance when they're found missing while updating a library's collections.
Sonarr V2 may work, but it is not supported please upgrade to V3 if you can.
???+ note
Sonarr V2 may work, but it is not supported please upgrade to V3 if you can.
Items in your List Exclusions will be ignored by PMM.
@ -55,9 +57,11 @@ sonarr:
| `plex_path` | When using `add_existing` or `sonarr_add_all` Convert this part of the path to `sonarr_path`. | ` ` | ❌ |
| `sonarr_path` | When using `add_existing` or `sonarr_add_all` Convert the `plex_path` part of the path to this. | ` ` | ❌ |
* The `token` can be found by going to `Sonarr > Settings > General > Security > API Key`
???+ tip
The `token` can be found by going to `Sonarr > Settings > General > Security > API Key`
* The `quality_profile` and `language_profile` must be the exact name of the desired quality profile, including all spaces and capitalization.
The `quality_profile` and `language_profile` must be the exact name of the desired quality profile, including all spaces and capitalization.
* You can set most attributes per collection by using the [Sonarr Details](../builders/details/arr.md#sonarr-definition-settings) in the collection definition.
* All other attributes will be filled in by Plex Meta Manager.
* To connect to Trakt.tv you must create a Trakt application and supply Plex Meta Manager the `client_id`, `client_secret`, and `pin` provided, please do the following:
1. [Click here to create a Trakt API application.](https://trakt.tv/oauth/applications/new)
2. Enter a `Name` for the application.
3. Enter `urn:ietf:wg:oauth:2.0:oob` for `Redirect uri`.
4. Click the `SAVE APP` button.
5. Record the `Client ID` and `Client Secret` as `client_id` and `client_secret` in your Configuration File.
6. Click the Green Authorize Button next to the Redirect URI
To connect to Trakt.tv you must create a Trakt application and supply Plex Meta Manager the `client_id`, `client_secret`, and `pin` provided, please do the following:
1. [Click here to create a Trakt API application.](https://trakt.tv/oauth/applications/new)
2. Enter a `Name` for the application.
3. Enter `urn:ietf:wg:oauth:2.0:oob` for `Redirect uri`.
4. Click the `SAVE APP` button.
5. Record the `Client ID` and `Client Secret` as `client_id` and `client_secret` in your Configuration File.
6. Click the Green Authorize Button next to the Redirect URI
![Trakt Authorize](trakt.png)
8. Record the `PIN` as `pin` in your Configuration File.
* Run Plex Meta Manager shortly after obtaining your PIN; the PIN may expire at some point.
7. Record the `PIN` as `pin` in your Configuration File.
???+ warning
Run Plex Meta Manager shortly after obtaining your PIN; the PIN may expire at some point.
| `limit` | **Description:** Changes the number of items in a collection for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the number of items in a collection of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater then 0 |
| `limit` | **Description:** Changes the number of items in a collection for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the number of items in a collection of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `limit` | **Description:** Changes the Smart Filter Limit for all collections in a Defaults file.<br>**Values:** Number Greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Smart Filter Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number Greater then 0 |
| `limit` | **Description:** Changes the Smart Filter Limit for all collections in a Defaults file.<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Smart Filter Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `sort_by` | **Description:** Changes the Smart Filter Sort for all collections in a Defaults file.<br>**Default:** `release.desc`<br>**Values:** [Any `smart_filter` Sort Option](../../builders/smart.md#sort-options) |
| `sort_by_<<key>>`<sup>1</sup> | **Description:** Changes the Smart Filter Sort of the specified key's collection.<br>**Default:** `sort_by`<br>**Values:** [Any `smart_filter` Sort Option](../../builders/smart.md#sort-options) |
| `in_the_last_<<key>>`<sup>1</sup> | **Description:** Changes how far back the Smart Filter looks.<tableclass="clearTable"><tr><td>**Default:**</td></tr><tr><td>`released`</td><td>`90`</td></tr><tr><td>`episodes`</td><td>`7`</td></tr></table>**Values:** Number Greater then 0 |
| `in_the_last_<<key>>`<sup>1</sup> | **Description:** Changes how far back the Smart Filter looks.<tableclass="clearTable"><tr><td>**Default:**</td></tr><tr><td>`released`</td><td>`90`</td></tr><tr><td>`episodes`</td><td>`7`</td></tr></table>**Values:** Number greater than 0 |
1. Each default collection has a `key` that when calling to effect a specific collection you must replace `<<key>>` with when calling.
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `10`<br>**Values:** Number Greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number Greater then 0 |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `10`<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `location` | **Description:** Changes the Builder Location for all collections in a Defaults file.<br>**Default:** `world`<br>**Values:** [`location` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) |
| `location_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Location of the specified key's collection.<br>**Default:** `location`<br>**Values:** [`location` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) |
| `time_window` | **Description:** Changes the Builder Time Window for all collections in a Defaults file.<br>**Default:** `last_week`<br>**Values:** [`time_window` Attribute Options](../../builders/flixpatrol.md#top-platform-attributes) |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number Greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number Greater then 0 |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `limit_anidb` | **Description:** Changes the Builder Limit of the AniDB Popular Collection.<br>**Default:** `30`<br>**Values:** Number Greater then 0 |
| `limit_anidb` | **Description:** Changes the Builder Limit of the AniDB Popular Collection.<br>**Default:** `30`<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `list_days` | **Description:** Changes the `list_days` attribute of the builder for all collections in a Defaults file.<br>**Values:** Number greater then 0 |
| `list_days_<<key>>`<sup>1</sup> | **Description:** Changes the `list_days` attribute of the builder of the specified key's collection.<br>**Values:** Number greater then 0 |
| `list_size` | **Description:** Changes the `list_size` attribute of the builder for all collections in a Defaults file.<br>**Values:** Number greater then 0 |
| `list_size_<<key>>`<sup>1</sup> | **Description:** Changes the `list_size` attribute of the builder of the specified key's collection.<br>**Values:** Number greater then 0 |
| `list_days` | **Description:** Changes the `list_days` attribute of the builder for all collections in a Defaults file.<br>**Values:** Number greater than 0 |
| `list_days_<<key>>`<sup>1</sup> | **Description:** Changes the `list_days` attribute of the builder of the specified key's collection.<br>**Values:** Number greater than 0 |
| `list_size` | **Description:** Changes the `list_size` attribute of the builder for all collections in a Defaults file.<br>**Values:** Number greater than 0 |
| `list_size_<<key>>`<sup>1</sup> | **Description:** Changes the `list_size` attribute of the builder of the specified key's collection.<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number Greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number Greater then 0 |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number Greater then 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number Greater then 0 |
| `limit` | **Description:** Changes the Builder Limit for all collections in a Defaults file.<br>**Default:** `100`<br>**Values:** Number greater than 0 |
| `limit_<<key>>`<sup>1</sup> | **Description:** Changes the Builder Limit of the specified key's collection.<br>**Default:** `limit`<br>**Values:** Number greater than 0 |
| `sync_mode` | **Description:** Changes the Sync Mode for all collections in a Defaults file.<br>**Default:** `sync`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `sync_mode_<<key>>`<sup>1</sup> | **Description:** Changes the Sync Mode of the specified key's collection.<br>**Default:** `sync_mode`<br>**Values:**<tableclass="clearTable"><tr><td>`sync`</td><td>Add and Remove Items based on Builders</td></tr><tr><td>`append`</td><td>Only Add Items based on Builders</td></tr></table> |
| `collection_order` | **Description:** Changes the Collection Order for all collections in a Defaults file.<br>**Default:** `custom`<br>**Values:**<tableclass="clearTable"><tr><td>`release`</td><td>Order Collection by Release Dates</td></tr><tr><td>`alpha`</td><td>Order Collection Alphabetically</td></tr><tr><td>`custom`</td><td>Order Collection Via the Builder Order</td></tr><tr><td>[Any `plex_search` Sort Option](../../builders/plex.md#sort-options)</td><td>Order Collection by any `plex_search` Sort Option</td></tr></table> |
@ -68,11 +68,11 @@ All [Shared Overlay Variables](../overlay_variables.md) except `horizontal_offse
| `weight_<<key>>`<sup>1</sup> | **Description:** Controls the weight of the Overlay. Higher numbers have priority.<br>**Values:** Any Number |
| `font` | **Description:** Choose the font for the Overlay.<br>**Default:** `fonts/Inter-Medium.ttf`<br>**Values:** Path to font file |
| `font_style` | **Description:** Font style for Variable Fonts.<br>**Values:** Variable Font Style |
| `font_size` | **Description:** Choose the font size for the Overlay.<br>**Default:** `50`<br>**Values:** Any Number greater then 0 |
| `font_size` | **Description:** Choose the font size for the Overlay.<br>**Default:** `50`<br>**Values:** Any Number greater than 0 |
| `font_color` | **Description:** Choose the font color for the Overlay.<br>**Default:** `#FFFFFF`<br>**Values:** Color Hex Code in format `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA` |
| `stroke_width` | **Description:** Font Stroke Width for the Text Overlay.<br>**Values:** Any Number greater then 0 |
| `stroke_width` | **Description:** Font Stroke Width for the Text Overlay.<br>**Values:** Any Number greater than 0 |
| `stroke_color` | **Description:** Font Stroke Color for the Text Overlay.<br>**Values:** Color Hex Code in format `#RGB`, `#RGBA`, `#RRGGBB` or `#RRGGBBAA` |
| `addon_offset` | **Description:** Text Addon Image Offset from the text.<br>**Default:** `30`<br>**Values:** Any Number greater then 0 |
| `addon_offset` | **Description:** Text Addon Image Offset from the text.<br>**Default:** `30`<br>**Values:** Any Number greater than 0 |
| `addon_position` | **Description:** Text Addon Image Alignment in relation to the text.<br>**Default:** `top`<br>**Values:** `left`, `right`, `top`, `bottom` |
1. Each default overlay has a `key` that when calling to effect a specific overlay you must replace `<<key>>` with when calling.
@ -8,7 +8,9 @@ All overlay coordinates assume 1000 x 1500 for Posters and 1920 x 1080 for Backg
**To remove all overlays add `remove_overlays: true` to the `overlay_path` [Libraries Attribute](../config/libraries.md#remove-overlays).**
**IMPORTANT NOTE ON OVERLAYS:** Once you have applied overlays to your posters in Plex, it is highly recommended that you never change artwork on a thing directly in Plex again. PMM uses labels on the items in Plex to decide if an overlay has been applied, so if you change artwork behind PMM's back things can become confused and items can end up with double-overlaid posters. It's recommended to set new artwork using the asset directory, which will ensure that this doesn't happen.
???+ danger "Important Notice"
Once you have applied overlays to your posters in Plex, it is highly recommended that you never change artwork on a thing directly in Plex again. PMM uses labels on the items in Plex to decide if an overlay has been applied, so if you change artwork behind PMM's back things can become confused and items can end up with double-overlaid posters. It's recommended to set new artwork using the asset directory, which will ensure that this doesn't happen.
**To change a single overlay original image either remove the `Overlay` shared label and update the Image in Plex or replace the image in the assets folder and then PMM will overlay the new image**
@ -42,7 +44,7 @@ There are multiple types of attributes that can be utilized within an overlay:
@ -4,7 +4,9 @@ Playlist files are used to create and maintain playlists on the Plex Server.
If utilized to their fullest, these files can be used to maintain the entire server's collections and playlists, and can be used as a backup for these in the event of a restore requirement.
Playlists are defined in one or more Playlist files that are mapped in the [Playlist Files Attribute](../config/playlists.md) within the Configuration File.
???+ tip
Playlists are defined in one or more Playlist files that are mapped in the [Playlist Files Attribute](../config/playlists.md) within the Configuration File.
You can use the [`playlist_report` setting](../config/settings.md#playlist-report) to get a list of your playlists printed out in your log.
@ -40,7 +42,7 @@ There are multiple types of attributes that can be utilized within a playlist:
Note that we provide the template name `Actor` and the value to insert in the place of `<<person>>`. The `<<collection_name>>` is a template variable that is always available and doesn't have to be called out like `<<person>>`.
Inside a template, you can use all the Builders, Details, and [Filters]filters.md) attributes that you can give collections/playlists [except `template`; templates cannot be nested].
Inside a template, you can use all the Builders, Details, and [Filters](filters.md) attributes that you can give collections/playlists [except `template`; templates cannot be nested].
The names of template variables that you define are arbitrary. In the example above, `<<person>>` could have been `<<tvdb_person_id>>` or `<<bing>>` or anything else. The only thing that matters is that in the template definition you surround them with `<< >>` and in the collection definition you spell it correctly.
@ -105,7 +105,7 @@ Each option can be applied in three ways:
| TMDb V3 API Key | TMDb V3 API Key for restoring posters from TMDb.<br>**Shell Command:** `-ta` or `--tmdbapi 123456789123456789`<br>**Environment Variable:** `TMDBAPI=123456789123456789` | :fontawesome-solid-circle-xmark:{ .red } |
| Start From | Plex Item Title to Start restoring posters from.<br>**Shell Command:** `-st` or `--start "Mad Max"`<br>**Environment Variable:** `START=Mad Max` | :fontawesome-solid-circle-xmark:{ .red } |
| Items | Restore specific Plex Items by Title. Can use a bar-separated (<code>|</code>) list.<br>**Shell Command:** `-it` or <code>--items "Mad Max|Mad Max 2"</code><br>**Environment Variable:** <code>ITEMS=Mad Max|Mad Max 2</code> | :fontawesome-solid-circle-xmark:{ .red } |
| Timeout | Timeout can be any number greater then 0. **Default:**`600`<br>**Shell Command:** `-ti` or `--timeout 1000`<br>**Environment Variable:** `TIMEOUT=1000` | :fontawesome-solid-circle-xmark:{ .red } |
| Timeout | Timeout can be any number greater than 0. **Default:**`600`<br>**Shell Command:** `-ti` or `--timeout 1000`<br>**Environment Variable:** `TIMEOUT=1000` | :fontawesome-solid-circle-xmark:{ .red } |
| Dry Run | Run as a Dry Run without making changes in Plex.<br>**Shell Command:** `-d` or `--dry`<br>**Environment Variable:** `DRY_RUN=True` | :fontawesome-solid-circle-xmark:{ .red } |