Merge remote-tracking branch 'meisnate12/nightly' into nightly
2
VERSION
|
@ -1 +1 @@
|
||||||
1.20.0-develop24
|
1.20.0-develop29
|
||||||
|
|
|
@ -596,6 +596,7 @@ dynamic_collections:
|
||||||
- Haoliners Huimeng Animation
|
- Haoliners Huimeng Animation
|
||||||
- Haoliners Animation
|
- Haoliners Animation
|
||||||
Illumination Entertainment:
|
Illumination Entertainment:
|
||||||
|
- Illumination
|
||||||
- Illumination Films
|
- Illumination Films
|
||||||
J.C.Staff:
|
J.C.Staff:
|
||||||
- J.C. Staff
|
- J.C. Staff
|
||||||
|
|
BIN
defaults/overlays/images/network/color/7mate.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
defaults/overlays/images/network/color/Angel Studios.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
defaults/overlays/images/network/color/Kanal 5.png
Normal file
After Width: | Height: | Size: 6 KiB |
BIN
defaults/overlays/images/network/color/SVT Play.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
defaults/overlays/images/network/color/SVT.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
defaults/overlays/images/network/color/Seven Network.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
defaults/overlays/images/network/color/TV4 Play.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
defaults/overlays/images/network/color/The Daily Wire.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
defaults/overlays/images/network/white/7mate.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
defaults/overlays/images/network/white/Angel Studios.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
defaults/overlays/images/network/white/Kanal 5.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
defaults/overlays/images/network/white/SVT Play.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
defaults/overlays/images/network/white/SVT.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
defaults/overlays/images/network/white/Seven Network.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
defaults/overlays/images/network/white/TV4 Play.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
defaults/overlays/images/network/white/The Daily Wire.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -72,12 +72,6 @@ vars:
|
||||||
v1-4: &v1-4 {vertical_offset: 198}
|
v1-4: &v1-4 {vertical_offset: 198}
|
||||||
v1-5: &v1-5 {vertical_offset: 259}
|
v1-5: &v1-5 {vertical_offset: 259}
|
||||||
|
|
||||||
v0-1: &v0-1 {vertical_offset: -122}
|
|
||||||
v0-2: &v0-2 {vertical_offset: -61}
|
|
||||||
v0-3: &v0-3 {vertical_offset: 0}
|
|
||||||
v0-4: &v0-4 {vertical_offset: 61}
|
|
||||||
v0-5: &v0-5 {vertical_offset: 122}
|
|
||||||
|
|
||||||
v2-1: &v2-1 {vertical_offset: 150}
|
v2-1: &v2-1 {vertical_offset: 150}
|
||||||
v2-2: &v2-2 {vertical_offset: 211}
|
v2-2: &v2-2 {vertical_offset: 211}
|
||||||
v2-3: &v2-3 {vertical_offset: 272}
|
v2-3: &v2-3 {vertical_offset: 272}
|
||||||
|
@ -90,6 +84,24 @@ vars:
|
||||||
v3-4: &v3-4 {vertical_offset: 406}
|
v3-4: &v3-4 {vertical_offset: 406}
|
||||||
v3-5: &v3-5 {vertical_offset: 467}
|
v3-5: &v3-5 {vertical_offset: 467}
|
||||||
|
|
||||||
|
vct-1: &vct-1 {vertical_offset: -244}
|
||||||
|
vct-2: &vct-2 {vertical_offset: -183}
|
||||||
|
vct-3: &vct-3 {vertical_offset: -122}
|
||||||
|
vct-4: &vct-4 {vertical_offset: -61}
|
||||||
|
vct-5: &vct-5 {vertical_offset: 0}
|
||||||
|
|
||||||
|
vc-1: &vc-1 {vertical_offset: -122}
|
||||||
|
vc-2: &vc-2 {vertical_offset: -61}
|
||||||
|
vc-3: &vc-3 {vertical_offset: 0}
|
||||||
|
vc-4: &vc-4 {vertical_offset: 61}
|
||||||
|
vc-5: &vc-5 {vertical_offset: 122}
|
||||||
|
|
||||||
|
vcb-1: &vcb-1 {vertical_offset: 0}
|
||||||
|
vcb-2: &vcb-2 {vertical_offset: 61}
|
||||||
|
vcb-3: &vcb-3 {vertical_offset: 122}
|
||||||
|
vcb-4: &vcb-4 {vertical_offset: 183}
|
||||||
|
vcb-5: &vcb-5 {vertical_offset: 244}
|
||||||
|
|
||||||
vc-c: &vc-c {vertical_offset: 0}
|
vc-c: &vc-c {vertical_offset: 0}
|
||||||
vc-t: &vc-t {vertical_offset: -30}
|
vc-t: &vc-t {vertical_offset: -30}
|
||||||
vc-b: &vc-b {vertical_offset: 30}
|
vc-b: &vc-b {vertical_offset: 30}
|
||||||
|
@ -155,29 +167,29 @@ queues:
|
||||||
vertical_top3_right2: [<<: [*top_right, *v3-1, *h1-2], *v3-2, *v3-3, *v3-4, *v3-5]
|
vertical_top3_right2: [<<: [*top_right, *v3-1, *h1-2], *v3-2, *v3-3, *v3-4, *v3-5]
|
||||||
vertical_top3_right: [<<: [*top_right, *v3-1, *h1-1], *v3-2, *v3-3, *v3-4, *v3-5]
|
vertical_top3_right: [<<: [*top_right, *v3-1, *h1-1], *v3-2, *v3-3, *v3-4, *v3-5]
|
||||||
|
|
||||||
vertical_center_top_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_left: [<<: [*center_left, *vct-1, *h1-1], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_left2: [<<: [*center_left, *vct-1, *h1-2], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_center_left: [<<: [*center_center, *vct-1, *hc-l], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_center: [<<: [*center_center, *vct-1, *hc-c], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_center_right: [<<: [*center_center, *vct-1, *hc-r], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_right2: [<<: [*center_right, *vct-1, *h1-2], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
vertical_center_top_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_top_right: [<<: [*center_right, *vct-1, *h1-1], *vct-2, *vct-3, *vct-4, *vct-5]
|
||||||
|
|
||||||
vertical_center_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_left: [<<: [*center_left, *vc-1, *h1-1], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_left2: [<<: [*center_left, *vc-1, *h1-2], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_center_left: [<<: [*center_center, *vc-1, *hc-l], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_center: [<<: [*center_center, *vc-1, *hc-c], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_center_right: [<<: [*center_center, *vc-1, *hc-r], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_right2: [<<: [*center_right, *vc-1, *h1-2], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
vertical_center_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_right: [<<: [*center_right, *vc-1, *h1-1], *vc-2, *vc-3, *vc-4, *vc-5]
|
||||||
|
|
||||||
vertical_center_bottom_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_left: [<<: [*center_left, *vcb-1, *h1-1], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_left2: [<<: [*center_left, *vcb-1, *h1-2], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_center_left: [<<: [*center_center, *vcb-1, *hc-l], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_center: [<<: [*center_center, *vcb-1, *hc-c], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_center_right: [<<: [*center_center, *vcb-1, *hc-r], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_right2: [<<: [*center_right, *vcb-1, *h1-2], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
vertical_center_bottom_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
|
vertical_center_bottom_right: [<<: [*center_right, *vcb-1, *h1-1], *vcb-2, *vcb-3, *vcb-4, *vcb-5]
|
||||||
|
|
||||||
vertical_bottom3_left: [<<: [*bottom_left, *v3-1, *h1-1], *v3-2, *v3-3, *v3-4, *v3-5]
|
vertical_bottom3_left: [<<: [*bottom_left, *v3-1, *h1-1], *v3-2, *v3-3, *v3-4, *v3-5]
|
||||||
vertical_bottom3_left2: [<<: [*bottom_left, *v3-1, *h1-2], *v3-2, *v3-3, *v3-4, *v3-5]
|
vertical_bottom3_left2: [<<: [*bottom_left, *v3-1, *h1-2], *v3-2, *v3-3, *v3-4, *v3-5]
|
||||||
|
|
|
@ -69,6 +69,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
|
7mate:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
ABC:
|
ABC:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, {name: networks, search: [ABC, ABC.com]}]
|
template: [name: standard, {name: networks, search: [ABC, ABC.com]}]
|
||||||
|
@ -125,6 +129,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, {name: networks, search: [Animal Planet, Animal Planet Brasil, Animal Planet Deutschland]}]
|
template: [name: standard, {name: networks, search: [Animal Planet, Animal Planet Brasil, Animal Planet Deutschland]}]
|
||||||
|
|
||||||
|
Angel Studios:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, {name: networks, search: [Angel Studios, VidAngel]}]
|
||||||
|
|
||||||
Antena 3:
|
Antena 3:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
@ -565,6 +573,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
|
Kanal 5:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
KBS2:
|
KBS2:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
@ -777,6 +789,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
|
Seven Network:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
Shahid:
|
Shahid:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
@ -837,6 +853,14 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, {name: networks, search: [Sundance TV, SundanceTV]}]
|
template: [name: standard, {name: networks, search: [Sundance TV, SundanceTV]}]
|
||||||
|
|
||||||
|
SVT:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
|
SVT Play:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
SVT1:
|
SVT1:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
@ -885,6 +909,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, {name: networks, search: [The CW, CW seed]}]
|
template: [name: standard, {name: networks, search: [The CW, CW seed]}]
|
||||||
|
|
||||||
|
The Daily Wire:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
The Roku Channel:
|
The Roku Channel:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
@ -945,6 +973,10 @@ overlays:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
|
TV4 Play:
|
||||||
|
variables: { weight: 10}
|
||||||
|
template: [name: standard, name: networks]
|
||||||
|
|
||||||
TVB Jade:
|
TVB Jade:
|
||||||
variables: { weight: 10}
|
variables: { weight: 10}
|
||||||
template: [name: standard, name: networks]
|
template: [name: standard, name: networks]
|
||||||
|
|
|
@ -980,7 +980,7 @@ overlays:
|
||||||
template: [name: standard, name: studios]
|
template: [name: standard, name: studios]
|
||||||
|
|
||||||
Illumination Entertainment:
|
Illumination Entertainment:
|
||||||
template: [name: standard, {name: studios, search: [Illumination Entertainment, Illumination Films]}]
|
template: [name: standard, {name: studios, search: [Illumination, Illumination Entertainment, Illumination Films]}]
|
||||||
|
|
||||||
Imagin:
|
Imagin:
|
||||||
template: [name: standard, name: studios]
|
template: [name: standard, name: studios]
|
||||||
|
|
|
@ -40,6 +40,7 @@ dynamic_collections:
|
||||||
default: true
|
default: true
|
||||||
include:
|
include:
|
||||||
- "#0"
|
- "#0"
|
||||||
|
- 7mate
|
||||||
- ABC
|
- ABC
|
||||||
- ABC Family
|
- ABC Family
|
||||||
- ABC Kids
|
- ABC Kids
|
||||||
|
@ -54,6 +55,7 @@ dynamic_collections:
|
||||||
- AMC
|
- AMC
|
||||||
- AMC+
|
- AMC+
|
||||||
- Animal Planet
|
- Animal Planet
|
||||||
|
- Angel Studios
|
||||||
- Antena 3
|
- Antena 3
|
||||||
- Apple TV+
|
- Apple TV+
|
||||||
- ARD
|
- ARD
|
||||||
|
@ -166,6 +168,7 @@ dynamic_collections:
|
||||||
- joyn
|
- joyn
|
||||||
- JTBC
|
- JTBC
|
||||||
- Kan 11
|
- Kan 11
|
||||||
|
- Kanal 5
|
||||||
- KBS2
|
- KBS2
|
||||||
- Kids WB
|
- Kids WB
|
||||||
- La 1
|
- La 1
|
||||||
|
@ -219,6 +222,7 @@ dynamic_collections:
|
||||||
- SAT.1
|
- SAT.1
|
||||||
- SBS
|
- SBS
|
||||||
- Science
|
- Science
|
||||||
|
- Seven Network
|
||||||
- Shahid
|
- Shahid
|
||||||
- Showcase
|
- Showcase
|
||||||
- Showmax
|
- Showmax
|
||||||
|
@ -234,6 +238,8 @@ dynamic_collections:
|
||||||
- Starz
|
- Starz
|
||||||
- STAR+
|
- STAR+
|
||||||
- Sundance TV
|
- Sundance TV
|
||||||
|
- SVT
|
||||||
|
- SVT Play
|
||||||
- SVT1
|
- SVT1
|
||||||
- Syfy
|
- Syfy
|
||||||
- Syndication
|
- Syndication
|
||||||
|
@ -246,6 +252,7 @@ dynamic_collections:
|
||||||
- Tencent Video
|
- Tencent Video
|
||||||
- TF1
|
- TF1
|
||||||
- The CW
|
- The CW
|
||||||
|
- The Daily Wire
|
||||||
- The Roku Channel
|
- The Roku Channel
|
||||||
- The WB
|
- The WB
|
||||||
- TLC
|
- TLC
|
||||||
|
@ -261,6 +268,7 @@ dynamic_collections:
|
||||||
- TV Tokyo
|
- TV Tokyo
|
||||||
- TV3
|
- TV3
|
||||||
- TV4
|
- TV4
|
||||||
|
- TV4 Play
|
||||||
- TVB Jade
|
- TVB Jade
|
||||||
- tving
|
- tving
|
||||||
- tvN
|
- tvN
|
||||||
|
@ -306,6 +314,8 @@ dynamic_collections:
|
||||||
Animal Planet:
|
Animal Planet:
|
||||||
- Animal Planet Brasil
|
- Animal Planet Brasil
|
||||||
- Animal Planet Deutschland
|
- Animal Planet Deutschland
|
||||||
|
Angel Studios:
|
||||||
|
- VidAngel
|
||||||
BET:
|
BET:
|
||||||
- BET Her
|
- BET Her
|
||||||
Canal+:
|
Canal+:
|
||||||
|
|
|
@ -58,10 +58,10 @@ work. Any value not specified will use its default value if it has one if not it
|
||||||
| `name_<<key>>`<sup>1</sup> | **Description:** Changes the name of the specified key's playlist.<br>**Values:** New Playlist Name |
|
| `name_<<key>>`<sup>1</sup> | **Description:** Changes the name of the specified key's playlist.<br>**Values:** New Playlist Name |
|
||||||
| `summary_<<key>>`<sup>1</sup> | **Description:** Changes the summary of the specified key's playlist.<br>**Values:** New Playlist Summary |
|
| `summary_<<key>>`<sup>1</sup> | **Description:** Changes the summary of the specified key's playlist.<br>**Values:** New Playlist Summary |
|
||||||
| `libraries` | **Description:** Sets the names of the libraries to use for the Playlists.<br>**Default:** `Movies, TV Shows`<br>**Values:** Comma-separated string or list of library mapping names defined in the `libraries` attribute in the base of your [Configuration File](../config/overview.md. |
|
| `libraries` | **Description:** Sets the names of the libraries to use for the Playlists.<br>**Default:** `Movies, TV Shows`<br>**Values:** Comma-separated string or list of library mapping names defined in the `libraries` attribute in the base of your [Configuration File](../config/overview.md. |
|
||||||
| `sync_to_user` | **Description:** Sets the users to sync all playlists to.<br>**Default:** `playlist_sync_to_users` Global Setting Value<br>**Values:** Comma-separated string or list of user names. |
|
| `sync_to_users` | **Description:** Sets the users to sync all playlists to.<br>**Default:** `playlist_sync_to_users` Global Setting Value<br>**Values:** Comma-separated string or list of user names. |
|
||||||
| `sync_to_user_<<key>>`<sup>1</sup> | **Description:** Sets the users to sync the specified key's playlist to.<br>**Default:** `sync_to_user` Value<br>**Values:** Comma-separated string or list of user names. |
|
| `sync_to_users_<<key>>`<sup>1</sup> | **Description:** Sets the users to sync the specified key's playlist to.<br>**Default:** `sync_to_user` Value<br>**Values:** Comma-separated string or list of user names. |
|
||||||
| `exclude_user` | **Description:** Sets the users to exclude from sync for all playlists.<br>**Default:** `playlist_sync_to_users` Global Setting Value<br>**Values:** Comma-separated string or list of user names. |
|
| `exclude_user` | **Description:** Sets the users to exclude from sync for all playlists.<br>**Default:** `playlist_sync_to_users` Global Setting Value<br>**Values:** Comma-separated string or list of user names. |
|
||||||
| `exclude_user_<<key>>`<sup>1</sup> | **Description:** Sets the users to exclude from sync the specified key's playlist.<br>**Default:** `sync_to_user` Value<br>**Values:** Comma-separated string or list of user names. |
|
| `exclude_user_<<key>>`<sup>1</sup> | **Description:** Sets the users to exclude from sync the specified key's playlist.<br>**Default:** `sync_to_users` Value<br>**Values:** Comma-separated string or list of user names. |
|
||||||
| `trakt_list_<<key>>`<sup>1</sup> | **Description:** Adds the Movies in the Trakt List to the specified key's playlist. Overrides the [default trakt_list](#default-trakt_list) for that playlist if used.<br>**Values:** List of Trakt List URLs | | | |
|
| `trakt_list_<<key>>`<sup>1</sup> | **Description:** Adds the Movies in the Trakt List to the specified key's playlist. Overrides the [default trakt_list](#default-trakt_list) for that playlist if used.<br>**Values:** List of Trakt List URLs | | | |
|
||||||
| `delete_playlist` | **Description:** Will delete all playlists for the users defined by sync_to_users.<br>**Values:** `true` or `false` |
|
| `delete_playlist` | **Description:** Will delete all playlists for the users defined by sync_to_users.<br>**Values:** `true` or `false` |
|
||||||
| `delete_playlist_<<key>>`<sup>1</sup> | **Description:** Will delete the specified key's playlists for the users defined by sync_to_users.<br>**Values:** `true` or `false` |
|
| `delete_playlist_<<key>>`<sup>1</sup> | **Description:** Will delete the specified key's playlists for the users defined by sync_to_users.<br>**Values:** `true` or `false` |
|
||||||
|
|
|
@ -161,7 +161,7 @@ In addition, templates also have a few special attributes that they can use:
|
||||||
|
|
||||||
3. Using the exists modifier by appending `.exists` to the key template variable:
|
3. Using the exists modifier by appending `.exists` to the key template variable:
|
||||||
|
|
||||||
* While `ture` the template variable specified must exist in the template call.
|
* While `true` the template variable specified must exist in the template call.
|
||||||
* While anything but `true` the template variable specified must not exist in the template call.
|
* While anything but `true` the template variable specified must not exist in the template call.
|
||||||
|
|
||||||
???+ example "Example"
|
???+ example "Example"
|
||||||
|
|
|
@ -64,9 +64,11 @@ To install a container from docker hub, you will need community applications - a
|
||||||
|
|
||||||
3. Choose which branch you want to run `latest`, `develop`, or `nightly`.
|
3. Choose which branch you want to run `latest`, `develop`, or `nightly`.
|
||||||
|
|
||||||
4. Click `Show more settings...` to set any [Environmental Variables](../environmental.md) you wish to use. **For the purposes of this walkthrough, the** `Container Path: /config` **path for the unRAID app is** `/mnt/user/appdata/plex-meta-manager`
|
4. Set the `Console shell command:` to `Bash`
|
||||||
|
|
||||||
5. Hit `Apply`, and allow unRAID to download the docker container.
|
5. Click `Show more settings...` to set any [Environmental Variables](../environmental.md) you wish to use. **For the purposes of this walkthrough, the** `Container Path: /config` **path for the unRAID app is** `/mnt/user/appdata/plex-meta-manager`. Other than this, set the `PMM_TIME` variable to `5:00` under the `Show more settings...`
|
||||||
|
|
||||||
|
6. Hit `Apply`, and allow unRAID to download the docker container.
|
||||||
|
|
||||||
#### Important note on Docker images
|
#### Important note on Docker images
|
||||||
|
|
||||||
|
@ -74,19 +76,29 @@ This tutorial uses the official image, and you should, too. Don't change `meisn
|
||||||
|
|
||||||
The great thing about Docker is that all the setup you'd have to do to run PMM is already done inside the docker image.
|
The great thing about Docker is that all the setup you'd have to do to run PMM is already done inside the docker image.
|
||||||
|
|
||||||
That means we can just jump right into running it. Open a `Console` by left-clicking on the running Plex-Meta-Manager container and selecting `>_Console`. This will open up an interactive session within the container to be able to run the commands we want.
|
First let's start the container. Oops! The container won't start?
|
||||||
|
|
||||||
```
|
|
||||||
python plex_meta_manager.py --run
|
|
||||||
```
|
|
||||||
This is going to fail with an error. That's expected.
|
This is going to fail with an error. That's expected.
|
||||||
|
|
||||||
You should see something like this:
|
You should see something like this in the unRAID logs for the container:
|
||||||
|
|
||||||
```
|
```
|
||||||
Config Error: config not found at //config
|
Config Error: config not found at //config
|
||||||
```
|
```
|
||||||
This is going to fail with an error, which you will then fix.
|
We need to have a file called `config.yml` in the correct directory for PMM to start. Open up an unRAID terminal session by clicking on the terminal icon `>_` in the top right of unRAID.
|
||||||
|
|
||||||
|
=== ":fontawesome-brands-linux: Linux"
|
||||||
|
|
||||||
|
[type this into your terminal]
|
||||||
|
```
|
||||||
|
mkdir /mnt/user/appdata/plex-meta-manager/config
|
||||||
|
touch /mnt/user/appdata/plex-meta-manager/config/config.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
You can now close the unRAID terminal and start the PMM container.
|
||||||
|
|
||||||
|
**_From this point forward, you can Console `>_Console` into the running container as it will stay running_**
|
||||||
|
|
||||||
|
Open a Console by left-clicking on the running Plex-Meta-Manager container and selecting `>_Console`. This will open up an interactive session within the container to be able to run the commands we want.
|
||||||
|
|
||||||
### Create a directory to quiet an error later
|
### Create a directory to quiet an error later
|
||||||
|
|
||||||
|
|
|
@ -695,16 +695,16 @@
|
||||||
"minimum": 1
|
"minimum": 1
|
||||||
},
|
},
|
||||||
"default_collection_order": {
|
"default_collection_order": {
|
||||||
"description": "Used to set the collection_order for every collection run.\nSet the collection_order for every collection run by PMM unless the collection has a specific collection_order",
|
"description": "Used to set the collection_order for every collection run.\nSet the collection_order for every collection run by PMM unless the collection has a specific collection_order\nTIP: 'custom' cannot be used if more than one builder is being used for the collection (such as imdb_list and trakt_list within the same collection). ",
|
||||||
"type": ["string", "null"],
|
"type": ["string", "null"],
|
||||||
"enum": [
|
"enum": [
|
||||||
"added.asc", "added.desc", "audience_rating.asc",
|
"added.asc", "added.desc", "alpha", "audience_rating.asc",
|
||||||
"audience_rating.desc", "bitrate.asc", "bitrate.desc",
|
"audience_rating.desc", "bitrate.asc", "bitrate.desc",
|
||||||
"content_rating.asc", "content_rating.desc", "critic_rating.asc",
|
"content_rating.asc", "content_rating.desc", "critic_rating.asc",
|
||||||
"critic_rating.desc", "duration.asc", "duration.desc",
|
"critic_rating.desc", "custom", "duration.asc", "duration.desc",
|
||||||
"originally_available.asc", "originally_available.desc",
|
"originally_available.asc", "originally_available.desc",
|
||||||
"plays.asc", "plays.desc", "progress.asc", "progress.desc",
|
"plays.asc", "plays.desc", "progress.asc", "progress.desc",
|
||||||
"random", "release.asc", "release.desc",
|
"random", "release", "release.asc", "release.desc",
|
||||||
"resolution.asc", "resolution.desc", "title.asc", "title.desc",
|
"resolution.asc", "resolution.desc", "title.asc", "title.desc",
|
||||||
"user_rating.asc", "user_rating.desc", "viewed.asc", "viewed.desc",
|
"user_rating.asc", "user_rating.desc", "viewed.asc", "viewed.desc",
|
||||||
"year.asc", "year.desc", null
|
"year.asc", "year.desc", null
|
||||||
|
@ -944,7 +944,7 @@
|
||||||
"properties": {
|
"properties": {
|
||||||
"pmm": {
|
"pmm": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": ["actor", "anilist","aspect","audio_language","bafta","based","basic","berlinale","cannes","cesar","choice","collectionless","content_rating_cs","content_rating_de","content_rating_mal","content_rating_uk","content_rating_us","continent","country","decade","director","emmy","flixpatrol","franchise","genre","golden","imdb","myanimelist","network","nfr","oscars","other_chart","pca","producer","razzie","region","resolution","sag","seasonal","separator_award","separator_chart","spirit","streaming","studio","subtitle_language","sundance","tautulli","tiff","tmdb","trakt","universe","venice","writer","year"]
|
"enum": ["actor", "anilist","aspect","audio_language","bafta","based","basic","berlinale","cannes","cesar","choice","collectionless","content_rating_au","content_rating_cs","content_rating_de","content_rating_mal","content_rating_uk","content_rating_us","continent","country","decade","director","emmy","flixpatrol","franchise","genre","golden","imdb","myanimelist","network","nfr","oscars","other_chart","pca","producer","razzie","region","resolution","sag","seasonal","separator_award","separator_chart","spirit","streaming","studio","subtitle_language","sundance","tautulli","tiff","tmdb","trakt","universe","venice","writer","year"]
|
||||||
},
|
},
|
||||||
"schedule": {
|
"schedule": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -1568,12 +1568,13 @@
|
||||||
"location": { "type": "string", "enum": ["world","albania","argentina","armenia","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","belarus","belgium","belize","benin","bolivia","bosnia_and_herzegovina","botswana","brazil","bulgaria","burkina_faso","cambodia","canada","chile","colombia","costa_rica","croatia","cyprus","czech_republic","denmark","dominican_republic","ecuador","egypt","estonia","finland","france","gabon","germany","ghana","greece","guatemala","guinea_bissau","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","ireland","israel","italy","ivory_coast","jamaica","japan","jordan","kazakhstan","kenya","kuwait","kyrgyzstan","laos","latvia","lebanon","lithuania","luxembourg","malaysia","maldives","mali","malta","mexico","moldova","mongolia","montenegro","morocco","mozambique","namibia","netherlands","new_zealand","nicaragua","niger","nigeria","north_macedonia","norway","oman","pakistan","panama","papua_new_guinea","paraguay","peru","philippines","poland","portugal","qatar","romania","russia","rwanda","salvador","saudi_arabia","senegal","serbia","singapore","slovakia","slovenia","south_africa","south_korea","spain","sri_lanka","sweden","switzerland","taiwan","tajikistan","tanzania","thailand","togo","trinidad_and_tobago","turkey","turkmenistan","uganda","ukraine","united_arab_emirates","united_kingdom","united_states","uruguay","uzbekistan","venezuela","vietnam","zambia","zimbabwe"] },
|
"location": { "type": "string", "enum": ["world","albania","argentina","armenia","australia","austria","azerbaijan","bahamas","bahrain","bangladesh","belarus","belgium","belize","benin","bolivia","bosnia_and_herzegovina","botswana","brazil","bulgaria","burkina_faso","cambodia","canada","chile","colombia","costa_rica","croatia","cyprus","czech_republic","denmark","dominican_republic","ecuador","egypt","estonia","finland","france","gabon","germany","ghana","greece","guatemala","guinea_bissau","haiti","honduras","hong_kong","hungary","iceland","india","indonesia","ireland","israel","italy","ivory_coast","jamaica","japan","jordan","kazakhstan","kenya","kuwait","kyrgyzstan","laos","latvia","lebanon","lithuania","luxembourg","malaysia","maldives","mali","malta","mexico","moldova","mongolia","montenegro","morocco","mozambique","namibia","netherlands","new_zealand","nicaragua","niger","nigeria","north_macedonia","norway","oman","pakistan","panama","papua_new_guinea","paraguay","peru","philippines","poland","portugal","qatar","romania","russia","rwanda","salvador","saudi_arabia","senegal","serbia","singapore","slovakia","slovenia","south_africa","south_korea","spain","sri_lanka","sweden","switzerland","taiwan","tajikistan","tanzania","thailand","togo","trinidad_and_tobago","turkey","turkmenistan","uganda","ukraine","united_arab_emirates","united_kingdom","united_states","uruguay","uzbekistan","venezuela","vietnam","zambia","zimbabwe"] },
|
||||||
"minimum": { "type": "integer"},
|
"minimum": { "type": "integer"},
|
||||||
"offset": { "type": "integer", "minimum": 0 },
|
"offset": { "type": "integer", "minimum": 0 },
|
||||||
"overlay_limit": { "type": "integer", "minimum": 1, "maximum": 5 },
|
"originals_only": { "description": "Changes Streaming Service overlays to only apply to original content produced by the service.\nNote: Cannot be used with region, and only produces overlays for amazon, appletv, disney, max, hulu, netflix, paramount, peacock", "type": "boolean" },
|
||||||
|
"overlay_limit": { "description": "Choose the number of overlay this queue displays.\nDefault: 3\nValues: 1, 2, 3, 4, or 5", "type": "integer", "minimum": 1, "maximum": 5 },
|
||||||
"position": { "type": "string", "enum": ["left","right"] },
|
"position": { "type": "string", "enum": ["left","right"] },
|
||||||
"post_nr_text": { "type": "string" },
|
"post_nr_text": { "description": "Choose the text after the 'nr' key for the Overlay.\nValues: Any String", "type": "string" },
|
||||||
"post_text": { "type": "string" },
|
"post_text": { "description": "Choose the text after the key for the Overlay.\nDefault: +\nValues: Any String", "type": "string" },
|
||||||
"pre_nr_text": { "type": "string" },
|
"pre_nr_text": { "description": "Choose the text before the 'nr' key for the Overlay.\nValues: Any String","type": "string" },
|
||||||
"pre_text": { "type": "string" },
|
"pre_text": { "description": "Choose the text before the key for the Overlay.\nValues: Any String", "type": "string" },
|
||||||
"rating_alignment": { "type": "string", "enum": ["vertical", "horizontal"] },
|
"rating_alignment": { "type": "string", "enum": ["vertical", "horizontal"] },
|
||||||
"rating1": { "type": "string", "enum": ["critic", "audience", "user"] },
|
"rating1": { "type": "string", "enum": ["critic", "audience", "user"] },
|
||||||
"rating1_image": { "type": "string", "enum": ["anidb", "imdb", "letterboxd", "tmdb", "metacritic", "rt_popcorn", "rt_tomato", "trakt", "mal", "mdb", "star"] },
|
"rating1_image": { "type": "string", "enum": ["anidb", "imdb", "letterboxd", "tmdb", "metacritic", "rt_popcorn", "rt_tomato", "trakt", "mal", "mdb", "star"] },
|
||||||
|
@ -1594,7 +1595,7 @@
|
||||||
"repo": { "type": "string" },
|
"repo": { "type": "string" },
|
||||||
"stroke_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" },
|
"stroke_color": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" },
|
||||||
"stroke_width": { "type": "integer", "exclusiveMinimum": 0 },
|
"stroke_width": { "type": "integer", "exclusiveMinimum": 0 },
|
||||||
"style": { "type": "string", "enum": ["compact","standard","bigger","round","square","half", "red", "black", "yellow", "gray"] },
|
"style": { "type": "string", "enum": ["compact","standard","bigger","round","square","half", "red", "black", "yellow", "gray", "color", "white"] },
|
||||||
"text": { "type": "string" },
|
"text": { "type": "string" },
|
||||||
"time_window": { "type": "string", "enum": ["today","yesterday","this_week","last_week","this_month","last_month","this_year","last_year"] },
|
"time_window": { "type": "string", "enum": ["today","yesterday","this_week","last_week","this_month","last_month","this_year","last_year"] },
|
||||||
"url": { "type": "string", "format": "uri", "pattern": "^(https?)://" },
|
"url": { "type": "string", "format": "uri", "pattern": "^(https?)://" },
|
||||||
|
@ -1608,6 +1609,7 @@
|
||||||
},
|
},
|
||||||
"patternProperties": {
|
"patternProperties": {
|
||||||
"^back_color_.*$": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" },
|
"^back_color_.*$": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" },
|
||||||
|
"^font_color_.*$": { "type": "string", "pattern": "^\\#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$" },
|
||||||
"^country_.*$": { "type": "string", "pattern": "^[A-Z]{2}$" },
|
"^country_.*$": { "type": "string", "pattern": "^[A-Z]{2}$" },
|
||||||
"^file_.*$": { "type": "string" },
|
"^file_.*$": { "type": "string" },
|
||||||
"^git_.*$": { "type": "string" },
|
"^git_.*$": { "type": "string" },
|
||||||
|
|
|
@ -59,6 +59,7 @@ item_false_details = ["item_lock_background", "item_lock_poster", "item_lock_tit
|
||||||
item_bool_details = ["item_tmdb_season_titles", "revert_overlay", "item_assets", "item_refresh"] + item_false_details
|
item_bool_details = ["item_tmdb_season_titles", "revert_overlay", "item_assets", "item_refresh"] + item_false_details
|
||||||
item_details = ["non_item_remove_label", "item_label", "item_genre", "item_edition", "item_radarr_tag", "item_sonarr_tag", "item_refresh_delay"] + item_bool_details + list(plex.item_advance_keys.keys())
|
item_details = ["non_item_remove_label", "item_label", "item_genre", "item_edition", "item_radarr_tag", "item_sonarr_tag", "item_refresh_delay"] + item_bool_details + list(plex.item_advance_keys.keys())
|
||||||
none_details = ["label.sync", "item_label.sync", "item_genre.sync", "radarr_taglist", "sonarr_taglist", "item_edition"]
|
none_details = ["label.sync", "item_label.sync", "item_genre.sync", "radarr_taglist", "sonarr_taglist", "item_edition"]
|
||||||
|
none_builders = ["radarr_tag_list", "sonarr_taglist"]
|
||||||
radarr_details = [
|
radarr_details = [
|
||||||
"radarr_add_missing", "radarr_add_existing", "radarr_upgrade_existing", "radarr_monitor_existing", "radarr_folder", "radarr_monitor",
|
"radarr_add_missing", "radarr_add_existing", "radarr_upgrade_existing", "radarr_monitor_existing", "radarr_folder", "radarr_monitor",
|
||||||
"radarr_search", "radarr_availability", "radarr_quality", "radarr_tag", "item_radarr_tag", "radarr_ignore_cache",
|
"radarr_search", "radarr_availability", "radarr_quality", "radarr_tag", "item_radarr_tag", "radarr_ignore_cache",
|
||||||
|
@ -966,7 +967,7 @@ class CollectionBuilder:
|
||||||
logger.debug(f"Validating Method: {method_key}")
|
logger.debug(f"Validating Method: {method_key}")
|
||||||
logger.debug(f"Value: {method_data}")
|
logger.debug(f"Value: {method_data}")
|
||||||
try:
|
try:
|
||||||
if method_data is None and method_name in all_builders + plex.searches:
|
if method_data is None and method_name in all_builders + plex.searches and method_final not in none_builders:
|
||||||
raise Failed(f"{self.Type} Error: {method_final} attribute is blank")
|
raise Failed(f"{self.Type} Error: {method_final} attribute is blank")
|
||||||
elif method_data is None and method_final not in none_details:
|
elif method_data is None and method_final not in none_details:
|
||||||
logger.warning(f"Collection Warning: {method_final} attribute is blank")
|
logger.warning(f"Collection Warning: {method_final} attribute is blank")
|
||||||
|
|
|
@ -918,7 +918,7 @@ class ConfigFile:
|
||||||
default_path = os.path.join(default_dir, f"{str(library_name)}_Metadata_Backup.yml")
|
default_path = os.path.join(default_dir, f"{str(library_name)}_Metadata_Backup.yml")
|
||||||
if "path" not in input_dict:
|
if "path" not in input_dict:
|
||||||
logger.warning(f"Config Warning: path attribute not found using default: {default_path}")
|
logger.warning(f"Config Warning: path attribute not found using default: {default_path}")
|
||||||
if "path" in input_dict and not input_dict["path"]:
|
elif "path" in input_dict and not input_dict["path"]:
|
||||||
logger.warning(f"Config Warning: path attribute blank using default: {default_path}")
|
logger.warning(f"Config Warning: path attribute blank using default: {default_path}")
|
||||||
else:
|
else:
|
||||||
default_path = input_dict["path"]
|
default_path = input_dict["path"]
|
||||||
|
|
|
@ -1123,10 +1123,14 @@ class Operations:
|
||||||
if "year" in mv:
|
if "year" in mv:
|
||||||
special_names[f"{mv['title']} ({mv['year']})"] = mk
|
special_names[f"{mv['title']} ({mv['year']})"] = mk
|
||||||
items = self.library.get_all(load=True)
|
items = self.library.get_all(load=True)
|
||||||
titles = [i.title for i in items]
|
titles = []
|
||||||
|
year_titles = []
|
||||||
|
for item in items:
|
||||||
|
titles.append(item.title)
|
||||||
|
year_titles.append(f"{item.title} ({item.year})")
|
||||||
for i, item in enumerate(items, 1):
|
for i, item in enumerate(items, 1):
|
||||||
logger.ghost(f"Processing: {i}/{len(items)} {item.title}")
|
logger.ghost(f"Processing: {i}/{len(items)} {item.title}")
|
||||||
map_key, attrs = self.library.get_locked_attributes(item, titles)
|
map_key, attrs = self.library.get_locked_attributes(item, titles, year_titles)
|
||||||
if map_key in special_names:
|
if map_key in special_names:
|
||||||
map_key = special_names[map_key]
|
map_key = special_names[map_key]
|
||||||
og_dict = yaml.data["metadata"][map_key] if map_key in yaml.data["metadata"] and yaml.data["metadata"][map_key] and isinstance(yaml.data["metadata"][map_key], dict) else {}
|
og_dict = yaml.data["metadata"][map_key] if map_key in yaml.data["metadata"] and yaml.data["metadata"][map_key] and isinstance(yaml.data["metadata"][map_key], dict) else {}
|
||||||
|
|
|
@ -1494,27 +1494,40 @@ class Plex(Library):
|
||||||
imdb_id = self.get_imdb_from_map(item)
|
imdb_id = self.get_imdb_from_map(item)
|
||||||
return tmdb_id, tvdb_id, imdb_id
|
return tmdb_id, tvdb_id, imdb_id
|
||||||
|
|
||||||
def get_locked_attributes(self, item, titles=None):
|
def get_locked_attributes(self, item, titles=None, year_titles=None):
|
||||||
item = self.reload(item)
|
item = self.reload(item)
|
||||||
attrs = {}
|
attrs = {}
|
||||||
|
match_dict = {}
|
||||||
fields = {f.name: f for f in item.fields if f.locked}
|
fields = {f.name: f for f in item.fields if f.locked}
|
||||||
if isinstance(item, (Movie, Show)) and titles and titles.count(item.title) > 1:
|
if isinstance(item, (Movie, Show)) and titles and titles.count(item.title) > 1:
|
||||||
map_key = f"{item.title} ({item.year})"
|
if year_titles.count(f"{item.title} ({item.year})") > 1:
|
||||||
attrs["title"] = item.title
|
match_dict["title"] = item.title
|
||||||
attrs["year"] = item.year
|
match_dict["year"] = item.year
|
||||||
|
if item.editionTitle:
|
||||||
|
map_key = f"{item.title} ({item.year}) [{item.editionTitle}]"
|
||||||
|
match_dict["edition"] = item.editionTitle
|
||||||
|
else:
|
||||||
|
map_key = f"{item.title} ({item.year})"
|
||||||
|
match_dict["blank_edition"] = True
|
||||||
|
else:
|
||||||
|
map_key = f"{item.title} ({item.year})"
|
||||||
|
match_dict["title"] = item.title
|
||||||
|
match_dict["year"] = item.year
|
||||||
elif isinstance(item, (Season, Episode, Track)) and item.index:
|
elif isinstance(item, (Season, Episode, Track)) and item.index:
|
||||||
map_key = int(item.index)
|
map_key = int(item.index)
|
||||||
else:
|
else:
|
||||||
map_key = item.title
|
map_key = item.title
|
||||||
|
|
||||||
if "title" in fields:
|
if "title" in fields:
|
||||||
|
attrs["title"] = item.title
|
||||||
if isinstance(item, (Movie, Show)):
|
if isinstance(item, (Movie, Show)):
|
||||||
tmdb_id, tvdb_id, imdb_id = self.get_ids(item)
|
tmdb_id, tvdb_id, imdb_id = self.get_ids(item)
|
||||||
tmdb_item = self.config.TMDb.get_item(item, tmdb_id, tvdb_id, imdb_id, is_movie=isinstance(item, Movie))
|
tmdb_item = self.config.TMDb.get_item(item, tmdb_id, tvdb_id, imdb_id, is_movie=isinstance(item, Movie))
|
||||||
if tmdb_item:
|
if tmdb_item:
|
||||||
attrs["alt_title"] = tmdb_item.title
|
match_dict["title"] = [item.title, tmdb_item.title]
|
||||||
elif isinstance(item, (Season, Episode, Track)):
|
|
||||||
attrs["title"] = item.title
|
if match_dict:
|
||||||
|
attrs["match"] = match_dict
|
||||||
|
|
||||||
def check_field(plex_key, pmm_key, var_key=None):
|
def check_field(plex_key, pmm_key, var_key=None):
|
||||||
if plex_key in fields and pmm_key not in self.metadata_backup["exclude"]:
|
if plex_key in fields and pmm_key not in self.metadata_backup["exclude"]:
|
||||||
|
@ -1532,6 +1545,7 @@ class Plex(Library):
|
||||||
attrs[pmm_key] = plex_value
|
attrs[pmm_key] = plex_value
|
||||||
|
|
||||||
check_field("titleSort", "sort_title")
|
check_field("titleSort", "sort_title")
|
||||||
|
check_field("editionTitle", "edition")
|
||||||
check_field("originalTitle", "original_artist" if self.is_music else "original_title")
|
check_field("originalTitle", "original_artist" if self.is_music else "original_title")
|
||||||
check_field("originallyAvailableAt", "originally_available")
|
check_field("originallyAvailableAt", "originally_available")
|
||||||
check_field("contentRating", "content_rating")
|
check_field("contentRating", "content_rating")
|
||||||
|
|