parent
f44159d1aa
commit
2b5b2c62d9
@ -0,0 +1,136 @@
|
||||
You can have the script edit the metadata of Artists, Albums, and Tracks by adding them to the `metadata` mapping of a Metadata File.
|
||||
|
||||
An example of multiple metadata edits in a music library is below:
|
||||
```yaml
|
||||
metadata:
|
||||
"Avatar: The Last Airbender":
|
||||
sort_title: Avatar 01
|
||||
seasons:
|
||||
1:
|
||||
title: "Book One: Water"
|
||||
summary: >-
|
||||
After a lapse of 100 years, the Avatar-spiritual master of the elements-has returned. And just in
|
||||
the nick of time. The Four Nations (Water, Earth, Fire, and Air) have become unbalanced. The Fire
|
||||
Nation wants to rule the world, and its first conquest will be the Northern Water Tribe. It's up to
|
||||
a 12-year-old Airbender named Aang to find a way to stop it. Join Aang, Katara, Sokka, Momo, and
|
||||
Appa as they head north on the adventure of a lifetime.
|
||||
episodes:
|
||||
1:
|
||||
rating: 9.1
|
||||
2:
|
||||
title: "Book Two: Earth"
|
||||
summary: >-
|
||||
Avatar Aang continues his quest to master the four elements before the end of summer. Together with
|
||||
Katara, Sokka, Momo, and Appa, he journeys across the Earth Kingdom in search of an Earthbending
|
||||
mentor. Along the way, he confronts Princess Azula, treacherous daughter of Firelord Ozai and
|
||||
sister to Prince Zuko. More powerful than her brother, Azula will stop nothing to defeat the Avatar.
|
||||
But Aang and the gang find plenty of Earth Kingdom allies to help them along the way. From the swamps
|
||||
of the South to the Earth King's palace, Avatar: Book 2 is an adventure like no other.
|
||||
3:
|
||||
title: "Book Three: Fire"
|
||||
summary: >-
|
||||
Having survived the terrible battle with Azula, Aang faces new challenges as he and his brave
|
||||
friends secretly enter the Fire Nation. Their quest is to find and defeat Firelord Ozai. Along
|
||||
the way, they discover that Ozai has plans of his own. The leader of the Fire Nation intends to
|
||||
use the massive power of Sozin's comet to spread his dominion permanently across the four nations.
|
||||
Short on time, Aang has a lot of bending to learn and no master to help him learn it. However, his
|
||||
friends are there to help, and he finds unexpected allies deep in the heart of the Fire Nation. In
|
||||
the spectacular four-part conclusion, Aang must fulfill his destiny and become a fully realized
|
||||
Avatar, or watch the world go up in smoke.
|
||||
episodes:
|
||||
21:
|
||||
summary: The Epic Series Final of Avatar The Last Airbender
|
||||
"Avatar: The Legend of Korra":
|
||||
sort_title: Avatar 02
|
||||
alt_title: The Legend of Korra
|
||||
original_title: The Legend of Korra
|
||||
seasons:
|
||||
1:
|
||||
title: "Book One: Air"
|
||||
2:
|
||||
title: "Book Two: Spirits"
|
||||
3:
|
||||
title: "Book Three: Change"
|
||||
4:
|
||||
title: "Book Four: Balance"
|
||||
```
|
||||
|
||||
## Artist
|
||||
|
||||
Each artist is defined by the mapping name which must be the same as the artist name in the library unless an `alt_title` is specified.
|
||||
|
||||
### Albums
|
||||
To edit the metadata of a particular Album for an Artist use the `albums` attribute on its artist.
|
||||
|
||||
The mapping name is the album name.
|
||||
|
||||
### Tracks
|
||||
To edit the metadata of a particular Track on an Album use the `tracks` attribute on its album.
|
||||
|
||||
The mapping name is the episode number in that season or the title of the episode.
|
||||
|
||||
## Metadata Edits
|
||||
|
||||
The available attributes for editing artists, albums, and tracks are as follows
|
||||
|
||||
### Special Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values | Artists | Tracks | Tracks |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Alternative Title | `alt_title` | Alternative title to look for | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Albums | `albums` | Mapping to define Albums | :heavy_check_mark: | :x: | :x: |
|
||||
| Tracks | `tracks` | Mapping to define Tracks | :x: | :heavy_check_mark: | :x: |
|
||||
|
||||
* If you know of another Title your item might exist under, but you want it titled differently you can use `alt_title` to specify another title to look under and then be changed to the mapping name. For Example TMDb uses the name `The Legend of Korra`, but I want it as `Avatar: The Legend of Korra` (Which must be surrounded by quotes since it uses the character `:`):
|
||||
```yaml
|
||||
metadata:
|
||||
"Avatar: The Legend of Korra":
|
||||
alt_title: The Legend of Korra
|
||||
```
|
||||
This would change the name of the TMDb default `The Legend of Korra` to `Avatar: The Legend of Korra` and would not mess up any subsequent runs.
|
||||
``
|
||||
### General Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values | Artists | Tracks | Tracks |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Sort Title | `sort_title` | Text to change Sort Title | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Rating | `rating` | Number to change Rating | :x:| :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Originally Available | `originally_available` | Date to change Originally Available<br>**Format:** YYYY-MM-DD | :x: | :heavy_check_mark: | :x: |
|
||||
| Record Label | `record_label` | Text to change Record Label | :x: | :heavy_check_mark: | :x: |
|
||||
| Summary | `summary` | Text to change Summary | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Track | `track` | Text to change Track | :x: | :x: | :heavy_check_mark: |
|
||||
| Disc | `disc` | Text to change Disc | :x: | :x: | :heavy_check_mark: |
|
||||
| Original Artist | `original_artist` | Text to change Original Artist | :x: | :x: | :heavy_check_mark: |
|
||||
|
||||
### Tag Attributes
|
||||
|
||||
You can add `.remove` to any tag attribute to only remove those tags i.e. `genre.remove`.
|
||||
|
||||
You can add `.sync` to any tag attribute to sync all tags vs just appending the new ones i.e. `genre.sync`.
|
||||
|
||||
| Name | Attribute | Allowed Values | Artists | Tracks | Tracks |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Genre | `genre` | List or comma-separated text of each Genre Tag | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| Collection | `collection` | List or comma-separated text of each Collection Tag | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Label | `label` | List or comma-separated text of each Label Tag | :x: | :heavy_check_mark: | :x: |
|
||||
| Style | `style` | List or comma-separated text of each Style Tag | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| Mood | `mood` | List or comma-separated text of each Mood Tag | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Country | `country` | List or comma-separated text of each Country Tag | :heavy_check_mark: | :x: | :x: |
|
||||
| Similar Artist | `similar_artist` | List or comma-separated text of each Similar Artist Tag | :heavy_check_mark: | :x: | :x: |
|
||||
|
||||
## Image Attributes
|
||||
|
||||
| Name | Attribute | Description | Allowed Values | Artists | Tracks | Tracks |
|
||||
| :--- | :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| URL Poster | `url_poster` | Used to change the item's poster to the URL | URL of image publicly available on the internet | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| File Poster | `file_poster` | Used to change the item's poster to the image in the file system | Path to image in the file system | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| URL Background | `url_background` | Use to change the item's background to the URL | URL of image publicly available on the internet | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| File Background | `file_background` | Used to change the item's background to the image in the file system | Path to image in the file system | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
|
||||
### Advance Attributes
|
||||
|
||||
All these attributes only work with Artists.
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Album Sorting | `album_sorting` | `default`: Library default<br>`oldest`: Oldest first<br>`newest`: Newest first<br>`name`: Alphabetical |
|
@ -1,122 +0,0 @@
|
||||
A simple `Dockerfile` is available in this repo if you'd like to build it yourself. The official build is also available from dockerhub here: https://hub.docker.com/r/meisnate12/plex-meta-manager
|
||||
|
||||
```shell
|
||||
docker run -it -v <PATH_TO_CONFIG>:/config:rw meisnate12/plex-meta-manager
|
||||
```
|
||||
* The `-it` allows you to interact with the script when needed.
|
||||
* For example, it's required in order to go through the OAuth flow while connecting to Trakt or MyAnimeList.
|
||||
* The `-v <PATH_TO_CONFIG>:/config:rw` mounts the location you choose as a persistent volume to store your files.
|
||||
* Change `<PATH_TO_CONFIG>` to a folder where your config.yml and other files are.
|
||||
* The docker image defaults to running the config named `config.yml` in your persistent volume.
|
||||
* Use quotes around the whole thing if your path has spaces i.e. `-v "<PATH_TO_CONFIG>:/config:rw"`
|
||||
|
||||
Example
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager
|
||||
```
|
||||
|
||||
### Commands
|
||||
|
||||
| Name | Shell Command | Environmental<br>Variable | Allowed Values | Default Value |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| [Config](#config) | `-c` or `--config` | `PMM_CONFIG` | Path to YAML config file | `config/config.yml` alongside<br>`plex_meta_manager.py` |
|
||||
| [Time to Run](#time-to-run) | `-t` or `--time` | `PMM_TIME` | comma-separated list of times to update each day<br>**Format:** HH:MM | `03:00` |
|
||||
| [Run](#run) | `-r` or `--run` | `PMM_RUN` | Run without the scheduler | `False` |
|
||||
| [Run Tests](#run-tests) | `-rt`, `--tests`, or `--run-tests` | `PMM_TEST` | Run in debug mode with only collections that have `test: true` | `False` |
|
||||
| [Run Collections Only](#collections-only) | `-co` or `--collections-only` | `PMM_COLLECTIONS_ONLY` | Process only collections during the run | `False` |
|
||||
| [Run Libraries Only](#libraries-only) | `-lo` or `--libraries-only` | `PMM_LIBRARIES_ONLY` | Process everything but collections during the run | `False` |
|
||||
| [Run Collections](#run-collections) | `-rc` or `--run-collections` | `PMM_COLLECTIONS` | comma-separated list of collection names to process | All Collections |
|
||||
| [Run Libraries](#run-libraries) | `-rl` or `--run-libraries` | `PMM_LIBRARIES` | comma-separated list of library names to process | All libraries |
|
||||
| [Resume Run](#resume-run) | `-re` or `--resume` | `PMM_RESUME` | Name of the Collection you want to resume the run at | ` ` |
|
||||
| [No Countdown](#no-countdown) | `-nc` or `--no-countdown` | `PMM_NO_COUNTDOWN` | Run without displaying the countdown | `False` |
|
||||
| [No Missing](#no-missing) | `-nm` or `--no-missing` | `PMM_NO_MISSING` | Run without any of the missing movie/show functions | `False` |
|
||||
| [Divider Character](#divider-character--screen-width) | `-d` or `--divider` | `PMM_DIVIDER` | Character that divides the sections | `=` |
|
||||
| [Screen Width](#divider-character--screen-width) | `-w` or `--width` | `PMM_WIDTH` | Integer between 90 and 300 | `100` |
|
||||
|
||||
* Environmental Variable values are used over Shell Command values
|
||||
|
||||
## Config
|
||||
To choose the location of the YAML config file use the `--config` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config <path_to_config>
|
||||
```
|
||||
|
||||
## Time to Run
|
||||
To choose the times when the script will run each day use a comma-separated list with the `--time` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --time 22:00,03:00
|
||||
```
|
||||
|
||||
## Run
|
||||
To just run the script without having it continuously run use the `--run` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --run
|
||||
```
|
||||
|
||||
## Run Tests
|
||||
To run the script in debug mode while only running collections that have `test: true` use the `--run-tests` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --run-tests
|
||||
```
|
||||
|
||||
## Collections Only
|
||||
To have the script run only collections and not any library operations use the `--collections-only` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --collections-only
|
||||
```
|
||||
|
||||
## Libraries Only
|
||||
To have the script run only library operations and not any collections use the `--libraries-only` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --libraries-only
|
||||
```
|
||||
|
||||
|
||||
## Run Collections
|
||||
To have the script run only using the collections in the comma-separated list use the `--run-collections` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --run-collections "Harry Potter, Star Wars"
|
||||
```
|
||||
|
||||
## Run Libraries
|
||||
To have the script run only the libraries in the comma-separated list use the `--run-libraries` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --run-libraries "TV Shows"
|
||||
```
|
||||
|
||||
## Resume Run
|
||||
To have the script resume a run from a specific collection use the `--resume` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --resume "Star Wars"
|
||||
```
|
||||
|
||||
## No Countdown
|
||||
To have the script run without displaying a countdown use the `--no-countdown` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --no-countdown
|
||||
```
|
||||
|
||||
## No Missing
|
||||
To have the script run without any of the missing movie/show functions use the `--no-missing` option
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --config /configs/config.yml --no-missing
|
||||
```
|
||||
|
||||
## Divider Character & Screen Width
|
||||
To change the terminal output divider character or width use `--divider` and `--width`
|
||||
|
||||
```shell
|
||||
docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex-meta-manager --divider * --width 200
|
||||
```
|
@ -0,0 +1,162 @@
|
||||
You can have the script edit the metadata of Movies by adding them to the `metadata` mapping of a Metadata File.
|
||||
|
||||
An example of multiple metadata edits in a movie library is below:
|
||||
```yaml
|
||||
metadata:
|
||||
Godzilla (1954):
|
||||
title: Godzilla
|
||||
year: 1954
|
||||
content_rating: R
|
||||
Godzilla (1998):
|
||||
title: Godzilla
|
||||
year: 1998
|
||||
sort_title: Godzilla 03
|
||||
content_rating: PG-13
|
||||
Shin Godzilla:
|
||||
sort_title: Godzilla 06
|
||||
content_rating: R
|
||||
Godzilla 1985:
|
||||
content_rating: PG
|
||||
"Godzilla 2000: Millennium":
|
||||
originally_available: 1999-08-18
|
||||
Godzilla Against MechaGodzilla:
|
||||
originally_available: 2002-03-23
|
||||
Godzilla Raids Again:
|
||||
content_rating: G
|
||||
originally_available: 1955-05-21
|
||||
Godzilla vs. Biollante:
|
||||
content_rating: PG
|
||||
Godzilla vs. Destoroyah:
|
||||
content_rating: PG
|
||||
originally_available: 1995-01-19
|
||||
Godzilla vs. Gigan:
|
||||
content_rating: G
|
||||
originally_available: 1972-09-14
|
||||
Godzilla vs. Hedorah:
|
||||
content_rating: G
|
||||
originally_available: 1971-04-01
|
||||
Godzilla vs. King Ghidorah:
|
||||
content_rating: PG
|
||||
originally_available: 1991-04-28
|
||||
Godzilla vs. Mechagodzilla:
|
||||
content_rating: G
|
||||
originally_available: 1974-03-24
|
||||
Godzilla vs. Mechagodzilla II:
|
||||
content_rating: PG
|
||||
Godzilla vs. Megaguirus:
|
||||
content_rating: PG
|
||||
originally_available: 2000-08-31
|
||||
Godzilla vs. Megalon:
|
||||
content_rating: G
|
||||
originally_available: 1973-03-17
|
||||
Godzilla vs. Mothra:
|
||||
content_rating: PG
|
||||
originally_available: 1992-04-28
|
||||
Godzilla vs. SpaceGodzilla:
|
||||
content_rating: PG
|
||||
originally_available: 1994-01-19
|
||||
Godzilla, King of the Monsters!:
|
||||
content_rating: G
|
||||
"Godzilla, Mothra and King Ghidorah: Giant Monsters All-Out Attack":
|
||||
content_rating: PG
|
||||
originally_available: 2001-08-31
|
||||
"Godzilla: Final Wars":
|
||||
content_rating: PG
|
||||
originally_available: 2004-12-13
|
||||
"Godzilla: Tokyo S.O.S.":
|
||||
originally_available: 2003-12-14
|
||||
Halloween (Rob Zombie):
|
||||
alt_title: Halloween
|
||||
year: 2007
|
||||
"Halo 4: Forward Unto Dawn":
|
||||
alt_title: Halo 4 Forward Unto Dawn
|
||||
tmdb_id: 56295
|
||||
content_rating: R
|
||||
```
|
||||
|
||||
## Movies
|
||||
|
||||
Each movie is defined by the mapping name which must be the same as the movie name in the library unless an `alt_title` is specified.
|
||||
|
||||
## Metadata Edits
|
||||
|
||||
The available attributes for editing movies are as follows
|
||||
|
||||
### Special Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Title | `title` | Title if different from the mapping value useful when you have multiple movies with the same name |
|
||||
| Alternative Title | `alt_title` | Alternative title to look for |
|
||||
| Year | `year` | Year of movie for better identification |
|
||||
| TMDb Show ID | `tmdb_show` | TMDb Show ID to use for metadata useful for miniseries that have been compiled into a movie |
|
||||
| TMDb Movie ID | `tmdb_movie` | TMDb Movie ID to use for metadata useful for movies that have been split into segments |
|
||||
|
||||
|
||||
* YAML files cannot have two items with the same mapping name so if you have two movies with the same name you would change the mapping values to whatever you want. Then use the `title` attribute to specify the real title and use the `year` attribute to specify which of the multiple movies to choose.
|
||||
```yaml
|
||||
metadata:
|
||||
Godzilla1:
|
||||
title: Godzilla
|
||||
year: 1954
|
||||
content_rating: R
|
||||
Godzilla2:
|
||||
title: Godzilla
|
||||
year: 1998
|
||||
content_rating: PG-13
|
||||
```
|
||||
|
||||
* If you know of another Title your movie might exist under, but you want it titled differently you can use `alt_title` to specify another title to look under and then be changed to the mapping name. For Example TMDb uses the name `The Legend of Korra`, but I want it as `Avatar: The Legend of Korra` (Which must be surrounded by quotes since it uses the character `:`):
|
||||
```yaml
|
||||
metadata:
|
||||
"Avatar: The Legend of Korra":
|
||||
alt_title: The Legend of Korra
|
||||
```
|
||||
This would change the name of the TMDb default `The Legend of Korra` to `Avatar: The Legend of Korra` and would not mess up any subsequent runs.
|
||||
|
||||
### General Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Sort Title | `sort_title` | Text to change Sort Title |
|
||||
| Original Title | `original_title` | Text to change Original Title |
|
||||
| Originally Available | `originally_available` | Date to change Originally Available<br>**Format:** YYYY-MM-DD |
|
||||
| Content Rating | `content_rating` | Text to change Content Rating |
|
||||
| Rating | `rating` | Number to change Rating |
|
||||
| Studio | `studio` | Text to change Studio |
|
||||
| Tagline | `tagline` | Text to change Tagline |
|
||||
| Summary | `summary` | Text to change Summary |
|
||||
|
||||
### Tag Attributes
|
||||
|
||||
You can add `.remove` to any tag attribute to only remove those tags i.e. `genre.remove`.
|
||||
|
||||
You can add `.sync` to any tag attribute to sync all tags vs just appending the new ones i.e. `genre.sync`.
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Director | `director` | List or comma-separated text of each Director Tag |
|
||||
| Country | `country` | List or comma-separated text of each Country Tag |
|
||||
| Genre | `genre` | List or comma-separated text of each Genre Tag |
|
||||
| Writer | `writer` | List or comma-separated text of each Writer Tag |
|
||||
| Producer | `producer` | List or comma-separated text of each Producer Tag |
|
||||
| Collection | `collection` | List or comma-separated text of each Collection Tag |
|
||||
| Label | `label` | List or comma-separated text of each Label Tag |
|
||||
|
||||
### Advance Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Metadata Language* | `metadata_language` | `default`, `ar-SA`, `ca-ES`, `cs-CZ`, `da-DK`, `de-DE`, `el-GR`, `en-AU`, `en-CA`, `en-GB`, `en-US`, `es-ES`, `es-MX`, `et-EE`, `fa-IR`, `fi-FI`, `fr-CA`, `fr-FR`, `he-IL`, `hi-IN`, `hu-HU`, `id-ID`, `it-IT`, `ja-JP`, `ko-KR`, `lt-LT`, `lv-LV`, `nb-NO`, `nl-NL`, `pl-PL`, `pt-BR`, `pt-PT`, `ro-RO`, `ru-RU`, `sk-SK`, `sv-SE`, `th-TH`, `tr-TR`, `uk-UA`, `vi-VN`, `zh-CN`, `zh-HK`, `zh-TW` |
|
||||
| Use Original Title* | `use_original_title` | `default`: Library default<br>`no`: No<br>`yes`: Yes |
|
||||
|
||||
\* Must be using the **New Plex Movie Agent*
|
||||
|
||||
## Image Attributes
|
||||
|
||||
| Name | Attribute | Description | Allowed Values |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| URL Poster | `url_poster` | Used to change the movie's poster to the URL | URL of image publicly available on the internet |
|
||||
| File Poster | `file_poster` | Used to change the movie's poster to the image in the file system | Path to image in the file system |
|
||||
| URL Background | `url_background` | Use to change the movie's background to the URL | URL of image publicly available on the internet |
|
||||
| File Background | `file_background` | Used to change the movie's background to the image in the file system | Path to image in the file system |
|
@ -0,0 +1,304 @@
|
||||
This builder finds its items by using the features of Plex.
|
||||
|
||||
No configuration is required for these builders.
|
||||
|
||||
| Name | Attribute | Description | Works with Movies | Works with Shows | Works with Playlists and Custom Sort |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| [Plex All](#plex-all) | `plex_all` | Gets every movie/show in your library. Useful with [Filters](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Filters) | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| [Plex Collectionless](#plex-collectionless) | `plex_collectionless` | Gets every movie/show that is not in a collection | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| [Plex Search](#plex-search) | `plex_search` | Gets every movie/show based on the search parameters provided | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
|
||||
## Plex All
|
||||
Finds every item in your library. Useful with [Filters](https://github.com/meisnate12/Plex-Meta-Manager/wiki/Filters).
|
||||
|
||||
The expected input is either true or false.
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
9.0 Movies:
|
||||
plex_all: true
|
||||
filters:
|
||||
rating.gte: 9
|
||||
```
|
||||
|
||||
## Plex Search
|
||||
Uses Plex's [Advance Filters](https://support.plex.tv/articles/201273953-collections/) to find all items based on the search parameters provided.
|
||||
|
||||
Any Advance Filter made using the Plex UI should be able to be recreated using `plex_search`. If you're having trouble getting `plex_search` to work correctly, build the collection you want inside of Plex's Advance Filters and take a screenshot of the parameters in the Plex UI and post it in either the [Discussions](https://github.com/meisnate12/Plex-Meta-Manager/discussions) or on [Discord](https://discord.gg/TsdpsFYqqm) and I'll do my best to help you.
|
||||
|
||||
like Plex's [Advance Filters](https://support.plex.tv/articles/201273953-collections/) you have to start each search with either `any` or `all` as a base. You can only have one base attribute and all search attributes must be under the base.
|
||||
|
||||
Inside the base attribute you can use any search below or nest more `any` or `all`. You can have as many nested `any` or `all` next to each other as you want. If using multiple `any` or `all` you will have to do so in the form of a list.
|
||||
|
||||
There are a couple other attributes you can have at the top level only along with the base attribute are:
|
||||
|
||||
## Special Attributes
|
||||
|
||||
| Special Option | Attribute | Description | Default |
|
||||
| :--- | :--- | :--- | :---: |
|
||||
| Type | `type` | The Type of items inside this collection/playlist<br>**Options**: `movies`, `shows`, `seasons`, `episodes`, `artists`, `albums`, or `tracks` | `movies` for Movies Libraries, `shows` for Show Libraries, and `artists` for Music Libraries |
|
||||
| Limit | `limit` | The max number of item for the search | all |
|
||||
| Sort By | `sort_by` | This will control how the search is sorted in your library. You can use any sort options for your search type in the [Sorts Options Table](#sort-options) | `random` |
|
||||
| Validate | `validate` | Determines if a collection/playlist will fail on a validation error<br>**Options**: `true` or `false` | `true` |
|
||||
|
||||
## Sort Options
|
||||
|
||||
| Sort Option | Description | Movies | Shows | Seasons | Episodes |
|
||||
| :--- | :--- | :---: | :---: | :---: | :---: |
|
||||
| `title.asc`/`title.desc` | Sort by Title | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| `season.asc`/`season.desc` | Sort by Season | :x: | :x: | :heavy_check_mark: | :x: |
|
||||
| `show.asc`/`show.desc` | Sort by Show | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `year.asc`/`year.desc` | Sort by Year | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| `release.asc`/<br>`release.desc` | Sort by Release Date (Originally Available) | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| `critic_rating.asc`/<br>`critic_rating.desc` | Sort by Critic Rating | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| `audience_rating.asc`/<br>`audience_rating.desc` | Sort by Audience Rating | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| `user_rating.asc`/<br>`user_rating.desc` | Sort by User Rating | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `content_rating.asc`/<br>`content_rating.desc` | Sort by Content Rating | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
|
||||
| `duration.asc`/`duration.desc` | Sort by Duration | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: |
|
||||
| `plays.asc`/`plays.desc` | Sort by Number of Plays | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: |
|
||||
| `added.asc`/`added.desc` | Sort by Date Added | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_added.asc`/<br>`episode_added.desc` | Sort by Last Episode Date Added | :x: | :heavy_check_mark: | :x: | :x: |
|
||||
| `random` | Sort by Random | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
|
||||
## Searches
|
||||
|
||||
There are three fields per search option when using Plex's Advance Filters in the Web UI. The first is the **Attribute** (what attribute you wish to search), the second is the **Modifier** (which modifier to use), and the third is the **Term** (actual term to search).
|
||||
|
||||
## String Searches
|
||||
String searches can be used with either no modifier or with `.not`, `.is`, `.isnot`, `.begins`, or `.ends`.
|
||||
|
||||
String search can take multiple values **only as a list**.
|
||||
|
||||
### String Modifiers
|
||||
|
||||
| String Modifier | Description | Plex Web UI Display |
|
||||
| :--- | :--- | :---: |
|
||||
| No Modifier | Matches every item where the attribute contains the given string | `contains` |
|
||||
| `.not` | Matches every item where the attribute does not contain the given string | `does not contain` |
|
||||
| `.is` | Matches every item where the attribute exactly matches the given string | `is` |
|
||||
| `.isnot` | Matches every item where the attribute does not exactly match the given string | `is not` |
|
||||
| `.begins` | Matches every item where the attribute begins with the given string | `begins with` |
|
||||
| `.ends` | Matches every item where the attribute ends with the given string | `ends with` |
|
||||
|
||||
### String Attributes
|
||||
|
||||
| String Search | Description | Movie<br>Libraries | Show<br>Libraries |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| `title` | Uses the title attribute to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_title` | Uses the title attribute of the show's episodes to match | :x: | :heavy_check_mark: |
|
||||
| `studio` | Uses the studio attribute to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
|
||||
## Tag Searches
|
||||
Tag searches can be used with either no modifier or with `.not` except for `decade` and `resolution` which can only be used with no modifier.
|
||||
|
||||
Tag search can take multiple values as a **list or a comma-separated string**.
|
||||
|
||||
### Tag Modifiers
|
||||
|
||||
| Tag Modifier | Description | Plex Web UI Display |
|
||||
| :--- | :--- | :---: |
|
||||
| No Modifier | Matches every item where the attribute matches the given string | `is` |
|
||||
| `.not` | Matches every item where the attribute does not match the given string | `is not` |
|
||||
|
||||
### Tag Attributes
|
||||
|
||||
| Tag Search | Description | Movie<br>Libraries | Show<br>Libraries |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| `actor` | Uses the actor tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `audio_language` | Uses the audio language tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `collection` | Uses the collection tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `content_rating` | Uses the content rating tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `country` | Uses the country tags to match | :heavy_check_mark: | :x: |
|
||||
| `decade` | Uses the year tag to match the decade | :heavy_check_mark: | :x: |
|
||||
| `director` | Uses the director tags to match | :heavy_check_mark: | :x: |
|
||||
| `genre` | Uses the genre tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `label` | Uses the label tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `network` | Uses the network tags to match<br>**Only works with the New Plex TV Agent** | :x: | :heavy_check_mark: |
|
||||
| `producer` | Uses the actor tags to match | :heavy_check_mark: | :x: |
|
||||
| `resolution` | Uses the resolution tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `subtitle_language` | Uses the subtitle language tags to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `writer` | Uses the writer tags to match | :heavy_check_mark: | :x: |
|
||||
| `year` | Uses the year tag to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_year` | Uses the year tag to match | :x: | :heavy_check_mark: |
|
||||
|
||||
## Date Searches
|
||||
Date searches can be used with either no modifier or with `.not`, `.before`, or `.after`.
|
||||
|
||||
No date search can take multiple values.
|
||||
|
||||
### Date Modifiers
|
||||
|
||||
| Date Modifier | Description | Format | Plex Web UI Display |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| No Modifier | Matches every item where the date attribute<br>is in the last X days | **Format:** number of days<br>e.g. `30` | `is in the last` |
|
||||
| `.not` | Matches every item where the date attribute<br>is not in the last X days | **Format:** number of days<br>e.g. `30` | `is not in the last` |
|
||||
| `.before` | Matches every item where the date attribute<br>is before the given date | **Format:** MM/DD/YYYY<br>e.g. `01/01/2000` | `is before` |
|
||||
| `.after` | Matches every item where the date attribute<br>is after the given date | **Format:** MM/DD/YYYY<br>e.g. `01/01/2000` | `is after` |
|
||||
|
||||
### Date Attributes
|
||||
|
||||
| Date Search | Description | Movie<br>Libraries | Show<br>Libraries |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| `added` | Uses the date added attribute to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_added` | Uses the date added attribute of the show's episodes to match | :x: | :heavy_check_mark: |
|
||||
| `release` | Uses the release date attribute (originally available) to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_air_date` | Uses the air date attribute (originally available) of the show's episodes to match | :x: | :heavy_check_mark: |
|
||||
| `last_played` | Uses the date last played attribute to match | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_last_played` | Uses the date last played attribute of the show's episodes to match | :x: | :heavy_check_mark: |
|
||||
|
||||
## Number Searches
|
||||
Number searches must use `.gt`, `.gte`, `.lt`, or `.lte` as a modifier.
|
||||
|
||||
No number search can take multiple values.
|
||||
|
||||
### Number Modifiers
|
||||
|
||||
| Number Modifier | Description | Format | Plex Web UI Display |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| `.gt` | Matches every item where the number attribute<br>is greater then the given number | **Format:** number<br>e.g. `30`, `1995`, or `7.5` | `is greater than` |
|
||||
| `.gte` | Matches every item where the number attribute<br>is greater then or equal to the given number | **Format:** number<br>e.g. `30`, `1995`, or `7.5` | N/A |
|
||||
| `.lt` | Matches every item where the number attribute<br>is less then the given number | **Format:** number<br>e.g. `30`, `1995`, or `7.5` | `is less than` |
|
||||
| `.lte` | Matches every item where the number attribute<br>is less then or equal to the given number | **Format:** number<br>e.g. `30`, `1995`, or `7.5` | N/A |
|
||||
|
||||
### Number Attributes
|
||||
|
||||
| Number Search | Description | Restrictions | Movie<br>Libraries | Show<br>Libraries |
|
||||
| :--- | :--- | :---: | :---: | :--: |
|
||||
| `duration` | Uses the duration attribute to match using minutes | minimum: `1` | :heavy_check_mark: | :x: |
|
||||
| `plays` | Uses the plays attribute to match | minimum: `1` | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_plays` | Uses the plays attribute of the show's episodes to match | minimum: `1` | :x: | :heavy_check_mark: |
|
||||
| `critic_rating` | Uses the critic rating attribute to match | `0.0` - `10.0` | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `audience_rating` | Uses the audience rating attribute to match | `0.0` - `10.0` | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `user_rating` | Uses the user rating attribute to match | `0.0` - `10.0` | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_user_rating` | Uses the user rating attribute of the show's episodes to match | `0.0` - `10.0` | :x: | :heavy_check_mark: |
|
||||
| `year` | Uses the year attribute to match | minimum: `1` | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `episode_year` | Uses the year attribute of the show's episodes to match | minimum: `1` | :x: | :heavy_check_mark: |
|
||||
|
||||
## Boolean Searches
|
||||
Boolean Searches take no modifier and can only be either `true` or `false`.
|
||||
|
||||
### Boolean Attributes
|
||||
|
||||
| Boolean Search | Description | Movie<br>Libraries | Show<br>Libraries |
|
||||
| :--- | :--- | :---: | :---: |
|
||||
| `hdr` | Is HDR | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `unmatched` | Is Unmatched | :heavy_check_mark: | :x: |
|
||||
| `duplicate` | Is Duplicate | :heavy_check_mark: | :x: |
|
||||
| `unplayed` | Is Unplayed | :heavy_check_mark: | :x: |
|
||||
| `progress` | Is In Progress | :heavy_check_mark: | :x: |
|
||||
| `trash` | Is Trashed | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| `unplayed_episodes` | Has Unplayed Episodes | :x: | :heavy_check_mark: |
|
||||
| `episode_unplayed` | Has Episodes Unplayed | :x: | :heavy_check_mark: |
|
||||
| `episode_duplicate` | Has Duplicate Episodes | :x: | :heavy_check_mark: |
|
||||
| `episode_progress` | Has Episode Progress | :x: | :heavy_check_mark: |
|
||||
| `episode_unmatched` | Has Episodes Unmatched | :x: | :heavy_check_mark: |
|
||||
|
||||
## Plex Search Examples
|
||||
|
||||
A few examples are listed below:
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
Documentaries:
|
||||
plex_search:
|
||||
all:
|
||||
genre: Documentary
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
Dave Chappelle Comedy:
|
||||
plex_search:
|
||||
all:
|
||||
actor: Dave Chappelle
|
||||
genre: Comedy
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
Top Action Movies:
|
||||
collection_order: custom
|
||||
plex_search:
|
||||
all:
|
||||
genre: Action
|
||||
sort_by: audience_rating.desc
|
||||
limit: 20
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
90s Movies:
|
||||
plex_search:
|
||||
any:
|
||||
year:
|
||||
- 1990
|
||||
- 1991
|
||||
- 1992
|
||||
- 1993
|
||||
- 1994
|
||||
- 1995
|
||||
- 1996
|
||||
- 1997
|
||||
- 1998
|
||||
- 1999
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
90s Movies:
|
||||
plex_search:
|
||||
any:
|
||||
decade: 1990
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
Best 2010+ Movies:
|
||||
collection_order: custom
|
||||
plex_search:
|
||||
all:
|
||||
year.gte: 2010
|
||||
sort_by: audience_rating.desc
|
||||
limit: 20
|
||||
```
|
||||
|
||||
Here's an example of an episode collection using `plex_search`.
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
Top 100 Simpsons Episodes:
|
||||
collection_order: custom
|
||||
collection_level: episode
|
||||
plex_search:
|
||||
type: episodes
|
||||
sort_by: audience_rating.desc
|
||||
limit: 100
|
||||
all:
|
||||
title.ends: "Simpsons"
|
||||
summary: A collection of the highest rated simpsons epsodes.
|
||||
```
|
||||
|
||||
If you specify TMDb Person ID's using the Detail `tmdb_person` and then tell either `actor`, `director`, `producer`, or `writer` to add `tmdb`, the script will translate the TMDb Person IDs into their names and run the search on those names.
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
Robin Williams:
|
||||
plex_search:
|
||||
all:
|
||||
actor: tmdb
|
||||
tmdb_person: 2157
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
Steven Spielberg:
|
||||
plex_search:
|
||||
all:
|
||||
director: tmdb
|
||||
tmdb_person: https://www.themoviedb.org/person/488-steven-spielberg
|
||||
```
|
||||
```yaml
|
||||
collections:
|
||||
Quentin Tarantino:
|
||||
plex_search:
|
||||
any:
|
||||
actor: tmdb
|
||||
director: tmdb
|
||||
producer: tmdb
|
||||
writer: tmdb
|
||||
tmdb_person: 138
|
||||
```
|
@ -0,0 +1,159 @@
|
||||
You can have the script edit the metadata of Shows, Seasons, and Episodes by adding them to the `metadata` mapping of a Metadata File.
|
||||
|
||||
An example of multiple metadata edits in a show library is below:
|
||||
```yaml
|
||||
metadata:
|
||||
"Avatar: The Last Airbender":
|
||||
sort_title: Avatar 01
|
||||
seasons:
|
||||
1:
|
||||
title: "Book One: Water"
|
||||
summary: >-
|
||||
After a lapse of 100 years, the Avatar-spiritual master of the elements-has returned. And just in
|
||||
the nick of time. The Four Nations (Water, Earth, Fire, and Air) have become unbalanced. The Fire
|
||||
Nation wants to rule the world, and its first conquest will be the Northern Water Tribe. It's up to
|
||||
a 12-year-old Airbender named Aang to find a way to stop it. Join Aang, Katara, Sokka, Momo, and
|
||||
Appa as they head north on the adventure of a lifetime.
|
||||
episodes:
|
||||
1:
|
||||
rating: 9.1
|
||||
2:
|
||||
title: "Book Two: Earth"
|
||||
summary: >-
|
||||
Avatar Aang continues his quest to master the four elements before the end of summer. Together with
|
||||
Katara, Sokka, Momo, and Appa, he journeys across the Earth Kingdom in search of an Earthbending
|
||||
mentor. Along the way, he confronts Princess Azula, treacherous daughter of Firelord Ozai and
|
||||
sister to Prince Zuko. More powerful than her brother, Azula will stop nothing to defeat the Avatar.
|
||||
But Aang and the gang find plenty of Earth Kingdom allies to help them along the way. From the swamps
|
||||
of the South to the Earth King's palace, Avatar: Book 2 is an adventure like no other.
|
||||
3:
|
||||
title: "Book Three: Fire"
|
||||
summary: >-
|
||||
Having survived the terrible battle with Azula, Aang faces new challenges as he and his brave
|
||||
friends secretly enter the Fire Nation. Their quest is to find and defeat Firelord Ozai. Along
|
||||
the way, they discover that Ozai has plans of his own. The leader of the Fire Nation intends to
|
||||
use the massive power of Sozin's comet to spread his dominion permanently across the four nations.
|
||||
Short on time, Aang has a lot of bending to learn and no master to help him learn it. However, his
|
||||
friends are there to help, and he finds unexpected allies deep in the heart of the Fire Nation. In
|
||||
the spectacular four-part conclusion, Aang must fulfill his destiny and become a fully realized
|
||||
Avatar, or watch the world go up in smoke.
|
||||
episodes:
|
||||
21:
|
||||
summary: The Epic Series Final of Avatar The Last Airbender
|
||||
"Avatar: The Legend of Korra":
|
||||
sort_title: Avatar 02
|
||||
alt_title: The Legend of Korra
|
||||
original_title: The Legend of Korra
|
||||
seasons:
|
||||
1:
|
||||
title: "Book One: Air"
|
||||
2:
|
||||
title: "Book Two: Spirits"
|
||||
3:
|
||||
title: "Book Three: Change"
|
||||
4:
|
||||
title: "Book Four: Balance"
|
||||
```
|
||||
|
||||
## Shows
|
||||
|
||||
Each show is defined by the mapping name which must be the same as the show name in the library unless an `alt_title` is specified.
|
||||
|
||||
### Seasons
|
||||
To edit the metadata of a particular Season in a Show use the `seasons` attribute on its show.
|
||||
|
||||
The mapping name is the season number (use 0 for specials) or the season name.
|
||||
|
||||
### Episodes
|
||||
To edit the metadata of a particular Episode in a Season use the `episodes` attribute on its season.
|
||||
|
||||
The mapping name is the episode number in that season or the title of the episode.
|
||||
|
||||
## Metadata Edits
|
||||
|
||||
The available attributes for editing shows, seasons, and episodes are as follows
|
||||
|
||||
### Special Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values | Shows | Seasons | Episodes |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Title | `title` | Title if different from the mapping value useful when you have multiple shows with the same name | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| Alternative Title | `alt_title` | Alternative title to look for | :heavy_check_mark: | :x: | :x: |
|
||||
| Year | `year` | Year of show for better identification | :heavy_check_mark: | :x: | :x: |
|
||||
| TMDb Show ID | `tmdb_show` | TMDb Show ID to use for metadata useful for miniseries that have been compiled into a movie | :heavy_check_mark: | :x: | :x: |
|
||||
| TMDb Movie ID | `tmdb_movie` | TMDb Movie ID to use for metadata useful for movies that have been split into segments | :heavy_check_mark: | :x: | :x: |
|
||||
| Seasons | `seasons` | Mapping to define Seasons | :heavy_check_mark: | :x: | :x: |
|
||||
| Episodes | `episodes` | Mapping to define Episodes | :x: | :heavy_check_mark: | :x: |
|
||||
|
||||
* YAML files cannot have two items with the same mapping name so if you have two shows with the same name you would change the mapping values to whatever you want. Then use the `title` attribute to specify the real title and use the `year` attribute to specify which of the multiple shows to choose.
|
||||
```yaml
|
||||
metadata:
|
||||
Godzilla1:
|
||||
title: Godzilla
|
||||
year: 1954
|
||||
content_rating: R
|
||||
Godzilla2:
|
||||
title: Godzilla
|
||||
year: 1998
|
||||
content_rating: PG-13
|
||||
```
|
||||
|
||||
* If you know of another Title your show might exist under, but you want it titled differently you can use `alt_title` to specify another title to look under and then be changed to the mapping name. For Example TMDb uses the name `The Legend of Korra`, but I want it as `Avatar: The Legend of Korra` (Which must be surrounded by quotes since it uses the character `:`):
|
||||
```yaml
|
||||
metadata:
|
||||
"Avatar: The Legend of Korra":
|
||||
alt_title: The Legend of Korra
|
||||
```
|
||||
This would change the name of the TMDb default `The Legend of Korra` to `Avatar: The Legend of Korra` and would not mess up any subsequent runs.
|
||||
|
||||
### General Attributes
|
||||
|
||||
| Name | Attribute | Allowed Values | Shows | Seasons | Episodes |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Sort Title | `sort_title` | Text to change Sort Title | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| Original Title | `original_title` | Text to change Original Title | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| Originally Available | `originally_available` | Date to change Originally Available<br>**Format:** YYYY-MM-DD | :heavy_check_mark: | :x: | :heavy_check_mark: |
|
||||
| Content Rating | `content_rating` | Text to change Content Rating | :heavy_check_mark: | :x: | :x: |
|
||||
| Rating | `rating` | Number to change Rating | :heavy_check_mark:| :x: | :heavy_check_mark: |
|
||||
| Studio | `studio` | Text to change Studio | :heavy_check_mark: | :x: | :x: |
|
||||
| Tagline | `tagline` | Text to change Tagline | :heavy_check_mark:| :x: | :x: |
|
||||
| Summary | `summary` | Text to change Summary | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
|
||||
### Tag Attributes
|
||||
|
||||
You can add `.remove` to any tag attribute to only remove those tags i.e. `genre.remove`.
|
||||
|
||||
You can add `.sync` to any tag attribute to sync all tags vs just appending the new ones i.e. `genre.sync`.
|
||||
|
||||
| Name | Attribute | Allowed Values | Shows | Seasons | Episodes |
|
||||
| :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| Director | `director` | List or comma-separated text of each Director Tag | :x: | :x: | :heavy_check_mark: |
|
||||
| Genre | `genre` | List or comma-separated text of each Genre Tag | :heavy_check_mark: | :x: | :x: |
|
||||
| Writer | `writer` | List or comma-separated text of each Writer Tag | :x: | :x: | :heavy_check_mark: |
|
||||
| Collection | `collection` | List or comma-separated text of each Collection Tag | :heavy_check_mark: | :x: | :x: |
|
||||
| Label | `label` | List or comma-separated text of each Label Tag | :heavy_check_mark: | :x: | :x: |
|
||||
|
||||
## Image Attributes
|
||||
|
||||
| Name | Attribute | Description | Allowed Values | Shows | Seasons | Episodes |
|
||||
| :--- | :--- | :--- | :--- | :---: | :---: | :---: |
|
||||
| URL Poster | `url_poster` | Used to change the show's poster to the URL | URL of image publicly available on the internet | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| File Poster | `file_poster` | Used to change the show's poster to the image in the file system | Path to image in the file system | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
|
||||
| URL Background | `url_background` | Use to change the show's background to the URL | URL of image publicly available on the internet | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
| File Background | `file_background` | Used to change the show's background to the image in the file system | Path to image in the file system | :heavy_check_mark: | :heavy_check_mark: | :x: |
|
||||
|
||||
### Advance Attributes
|
||||
|
||||
All these attributes only work with Shows.
|
||||
|
||||
| Name | Attribute | Allowed Values |
|
||||
| :--- | :--- | :--- |
|
||||
| Episode Sorting | `episode_sorting` | `default`: Library default<br>`oldest`: Oldest first<br>`newest`: Newest first |
|
||||
| Keep Episodes | `keep_episodes` | `all`: All episodes<br>`5_latest`: 5 latest episodes<br>`3_latest`: 3 latest episodes<br>`latest`: Latest episodes<br>`past_3`: Episodes added in the past 3 days<br>`past_7`: Episodes added in the past 7 days<br>`past_30`: Episodes added in the past 30 days |
|
||||
| Delete Episodes | `delete_episodes` | `never`: Never<br>`day`: After a day<br>`week`: After a week<br>`refresh`: On next refresh |
|
||||
| Season Display | `season_display` | `default`: Library default<br>`show`: Show<br>`hide`: Hide |
|
||||
| Episode Ordering | `episode_ordering` | `default`: Library default<br>`tmdb_aired`*: The Movie Database (Aired)<br>`tvdb_aired`: TheTVDB (Aired)<br>`tvdb_dvd`: TheTVDB (DVD)<br>`tvdb_absolute`: TheTVDB (Absolute) |
|
||||
| Metadata Language* | `metadata_language` | `default`, `ar-SA`, `ca-ES`, `cs-CZ`, `da-DK`, `de-DE`, `el-GR`, `en-AU`, `en-CA`, `en-GB`, `en-US`, `es-ES`, `es-MX`, `et-EE`, `fa-IR`, `fi-FI`, `fr-CA`, `fr-FR`, `he-IL`, `hi-IN`, `hu-HU`, `id-ID`, `it-IT`, `ja-JP`, `ko-KR`, `lt-LT`, `lv-LV`, `nb-NO`, `nl-NL`, `pl-PL`, `pt-BR`, `pt-PT`, `ro-RO`, `ru-RU`, `sk-SK`, `sv-SE`, `th-TH`, `tr-TR`, `uk-UA`, `vi-VN`, `zh-CN`, `zh-HK`, `zh-TW` |
|
||||
| Use Original Title* | `use_original_title` | `default`: Library default<br>`no`: No<br>`yes`: Yes |
|
||||
|
||||
\* Must be using the **New Plex TV Agent**
|
Before Width: | Height: | Size: 265 KiB After Width: | Height: | Size: 265 KiB |
Loading…
Reference in new issue