[187] wiki edits

pull/1163/head
meisnate12 2 years ago
parent fd5dcae00e
commit 1a1966159a

@ -1 +1 @@
1.17.3-develop186
1.17.3-develop187

@ -57,43 +57,43 @@ vars:
bottom_center: &bottom_center {vertical_align: bottom, horizontal_align: center}
bottom_right: &bottom_right {vertical_align: bottom, horizontal_align: right}
v1: &v1 {vertical_offset: 15}
v2: &v2 {vertical_offset: 76}
v3: &v3 {vertical_offset: 137}
v4: &v4 {vertical_offset: 198}
v5: &v5 {vertical_offset: 259}
vc1: &vc1 {vertical_offset: -122}
vc2: &vc2 {vertical_offset: -61}
vc3: &vc3 {vertical_offset: 0}
vc4: &vc4 {vertical_offset: 61}
vc5: &vc5 {vertical_offset: 122}
vo1: &vo1 {vertical_offset: 200}
vo2: &vo2 {vertical_offset: 261}
vo3: &vo3 {vertical_offset: 322}
vo4: &vo4 {vertical_offset: 383}
vo5: &vo5 {vertical_offset: 444}
vc: &vc {vertical_offset: 0}
vct: &vct {vertical_offset: -30}
vcb: &vcb {vertical_offset: 30}
h1: &h1 {horizontal_offset: 15}
h2: &h2 {horizontal_offset: 206}
h3: &h3 {horizontal_offset: 397}
h4: &h4 {horizontal_offset: 588}
h5: &h5 {horizontal_offset: 779}
hc1: &hc1 {horizontal_offset: 0}
hc2: &hc2 {horizontal_offset: 191}
hc3: &hc3 {horizontal_offset: -191}
hc4: &hc4 {horizontal_offset: 382}
hc5: &hc5 {horizontal_offset: -382}
hc: &hc {horizontal_offset: 0}
hcl: &hcl {horizontal_offset: -95}
hcr: &hcr {horizontal_offset: 95}
v1-1: &v1-1 {vertical_offset: 15}
v1-2: &v1-2 {vertical_offset: 76}
v1-3: &v1-3 {vertical_offset: 137}
v1-4: &v1-4 {vertical_offset: 198}
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: 200}
v2-2: &v2-2 {vertical_offset: 261}
v2-3: &v2-3 {vertical_offset: 322}
v2-4: &v2-4 {vertical_offset: 383}
v2-5: &v2-5 {vertical_offset: 444}
vc-c: &vc-c {vertical_offset: 0}
vc-t: &vc-t {vertical_offset: -30}
vc-b: &vc-b {vertical_offset: 30}
h1-1: &h1-1 {horizontal_offset: 15}
h1-2: &h1-2 {horizontal_offset: 206}
h1-3: &h1-3 {horizontal_offset: 397}
h1-4: &h1-4 {horizontal_offset: 588}
h1-5: &h1-5 {horizontal_offset: 779}
h0-1: &h0-1 {horizontal_offset: 0}
h0-2: &h0-2 {horizontal_offset: 191}
h0-3: &h0-3 {horizontal_offset: -191}
h0-4: &h0-4 {horizontal_offset: 382}
h0-5: &h0-5 {horizontal_offset: -382}
hc-c: &hc-c {horizontal_offset: 0}
hc-l: &hc-l {horizontal_offset: -95}
hc-r: &hc-r {horizontal_offset: 95}
queues:
@ -105,74 +105,118 @@ queues:
group_alignment: vertical
overlay_limit: 3
vertical_top_left: [<<: [*top_left, *v1, *h1 ], *v2, *v3, *v4, *v5 ]
vertical_top_off_left: [<<: [*top_left, *v1, *h2 ], *v2, *v3, *v4, *v5 ]
vertical_top_center_left: [<<: [*top_center, *v1, *hcl], *v2, *v3, *v4, *v5 ]
vertical_top_center: [<<: [*top_center, *v1, *hc ], *v2, *v3, *v4, *v5 ]
vertical_top_center_right: [<<: [*top_center, *v1, *hcr], *v2, *v3, *v4, *v5 ]
vertical_top_off_right: [<<: [*top_right, *v1, *h2 ], *v2, *v3, *v4, *v5 ]
vertical_top_right: [<<: [*top_right, *v1, *h1 ], *v2, *v3, *v4, *v5 ]
vertical_off_top_left: [<<: [*top_left, *vo1, *h1 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_off_left: [<<: [*top_left, *vo1, *h2 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_center_left: [<<: [*top_center, *vo1, *hcl], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_center: [<<: [*top_center, *vo1, *hc ], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_center_right: [<<: [*top_center, *vo1, *hcr], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_off_right: [<<: [*top_right, *vo1, *h2 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_top_right: [<<: [*top_right, *vo1, *h1 ], *vo2, *vo3, *vo4, *vo5]
vertical_center_left: [<<: [*center_left, *vc1, *h1 ], *vc2, *vc3, *vc4, *vc5]
vertical_center_off_left: [<<: [*center_left, *vc1, *h2 ], *vc2, *vc3, *vc4, *vc5]
vertical_center_center_left: [<<: [*center_center, *vc1, *hcl], *vc2, *vc3, *vc4, *vc5]
vertical_center_center: [<<: [*center_center, *vc1, *hc ], *vc2, *vc3, *vc4, *vc5]
vertical_center_center_right: [<<: [*center_center, *vc1, *hcr], *vc2, *vc3, *vc4, *vc5]
vertical_center_off_right: [<<: [*center_right, *vc1, *h2 ], *vc2, *vc3, *vc4, *vc5]
vertical_center_right: [<<: [*center_right, *vc1, *h1 ], *vc2, *vc3, *vc4, *vc5]
vertical_off_bottom_left: [<<: [*bottom_left, *vo1, *h1 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_off_left: [<<: [*bottom_left, *vo1, *h2 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_center_left: [<<: [*bottom_center, *vo1, *hcl], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_center: [<<: [*bottom_center, *vo1, *hc ], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_center_right: [<<: [*bottom_center, *vo1, *hcr], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_off_right: [<<: [*bottom_right, *vo1, *h2 ], *vo2, *vo3, *vo4, *vo5]
vertical_off_bottom_right: [<<: [*bottom_right, *vo1, *h1 ], *vo2, *vo3, *vo4, *vo5]
vertical_bottom_left: [<<: [*bottom_left, *v1, *h1 ], *v2, *v3, *v4, *v5 ]
vertical_bottom_off_left: [<<: [*bottom_left, *v1, *h2 ], *v2, *v3, *v4, *v5 ]
vertical_bottom_center_left: [<<: [*bottom_center, *v1, *hcl], *v2, *v3, *v4, *v5 ]
vertical_bottom_center: [<<: [*bottom_center, *v1, *hc ], *v2, *v3, *v4, *v5 ]
vertical_bottom_center_right: [<<: [*bottom_center, *v1, *hcr], *v2, *v3, *v4, *v5 ]
vertical_bottom_off_right: [<<: [*bottom_right, *v1, *h2 ], *v2, *v3, *v4, *v5 ]
vertical_bottom_right: [<<: [*bottom_right, *v1, *h1 ], *v2, *v3, *v4, *v5 ]
horizontal_top_left: [<<: [*top_left, *v1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_top_center: [<<: [*top_center, *v1, *hc ], *hc2, *hc3, *hc4, *hc5]
horizontal_top_right: [<<: [*top_right, *v1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_off_top_left: [<<: [*top_left, *vo1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_off_top_center: [<<: [*top_center, *vo1, *hc ], *hc2, *hc3, *hc4, *hc5]
horizontal_off_top_right: [<<: [*top_right, *vo1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_top_left: [<<: [*center_left, *vct, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_top_center: [<<: [*center_center, *vct, *hc1], *hc2, *hc3, *hc4, *hc5]
horizontal_center_top_right: [<<: [*center_right, *vct, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_left: [<<: [*center_left, *vc, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_center: [<<: [*center_center, *vc, *hc1], *hc2, *hc3, *hc4, *hc5]
horizontal_center_right: [<<: [*center_right, *vc, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_bottom_left: [<<: [*center_left, *vcb, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_center_bottom_center: [<<: [*center_center, *vcb, *hc1], *hc2, *hc3, *hc4, *hc5]
horizontal_center_bottom_right: [<<: [*center_right, *vcb, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_off_bottom_left: [<<: [*bottom_left, *vo1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_off_bottom_center: [<<: [*bottom_center, *vo1, *hc ], *hc2, *hc3, *hc4, *hc5]
horizontal_off_bottom_right: [<<: [*bottom_right, *vo1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_bottom_left: [<<: [*bottom_left, *v1, *h1 ], *h2, *h3, *h4, *h5 ]
horizontal_bottom_center: [<<: [*bottom_center, *v1, *hc ], *hc2, *hc3, *hc4, *hc5]
horizontal_bottom_right: [<<: [*bottom_right, *v1, *h1 ], *h2, *h3, *h4, *h5 ]
vertical_top_left: [<<: [*top_left, *v1-1, *h1-1], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_left2: [<<: [*top_left, *v1-1, *h1-2], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_center_left: [<<: [*top_center, *v1-1, *hc-l], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_center: [<<: [*top_center, *v1-1, *hc-c], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_center_right: [<<: [*top_center, *v1-1, *hc-r], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_right2: [<<: [*top_right, *v1-1, *h1-2], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top_right: [<<: [*top_right, *v1-1, *h1-1], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_top2_left: [<<: [*top_left, *v2-1, *h1-1], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_left2: [<<: [*top_left, *v2-1, *h1-2], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_center_left: [<<: [*top_center, *v2-1, *hc-l], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_center: [<<: [*top_center, *v2-1, *hc-c], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_center_right: [<<: [*top_center, *v2-1, *hc-r], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_right2: [<<: [*top_right, *v2-1, *h1-2], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_top2_right: [<<: [*top_right, *v2-1, *h1-1], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_center_top_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_top_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_left: [<<: [*center_left, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_left2: [<<: [*center_left, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_center_left: [<<: [*center_center, *v0-1, *hc-l], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_center: [<<: [*center_center, *v0-1, *hc-c], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_center_right: [<<: [*center_center, *v0-1, *hc-r], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_right2: [<<: [*center_right, *v0-1, *h1-2], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_center_bottom_right: [<<: [*center_right, *v0-1, *h1-1], *v0-2, *v0-3, *v0-4, *v0-5]
vertical_bottom2_left: [<<: [*bottom_left, *v2-1, *h1-1], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_left2: [<<: [*bottom_left, *v2-1, *h1-2], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_center_left: [<<: [*bottom_center, *v2-1, *hc-l], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_center: [<<: [*bottom_center, *v2-1, *hc-c], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_center_right: [<<: [*bottom_center, *v2-1, *hc-r], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_right2: [<<: [*bottom_right, *v2-1, *h1-2], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom2_right: [<<: [*bottom_right, *v2-1, *h1-1], *v2-2, *v2-3, *v2-4, *v2-5]
vertical_bottom_left: [<<: [*bottom_left, *v1-1, *h1-1], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_left2: [<<: [*bottom_left, *v1-1, *h1-2], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_center_left: [<<: [*bottom_center, *v1-1, *hc-l], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_center: [<<: [*bottom_center, *v1-1, *hc-c], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_center_right: [<<: [*bottom_center, *v1-1, *hc-r], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_right2: [<<: [*bottom_right, *v1-1, *h1-2], *v1-2, *v1-3, *v1-4, *v1-5]
vertical_bottom_right: [<<: [*bottom_right, *v1-1, *h1-1], *v1-2, *v1-3, *v1-4, *v1-5]
horizontal_top_left: [<<: [*top_left, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top_left2: [<<: [*top_left, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top_center_left: [<<: [*top_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top_center: [<<: [*top_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top_center_right: [<<: [*top_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top_right2: [<<: [*top_right, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top_right: [<<: [*top_right, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top2_left: [<<: [*top_left, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top2_left2: [<<: [*top_left, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top2_center_left: [<<: [*top_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top2_center: [<<: [*top_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top2_center_right: [<<: [*top_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_top2_right2: [<<: [*top_right, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_top2_right: [<<: [*top_right, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_top_left: [<<: [*center_left, *vc-t, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_top_left2: [<<: [*center_left, *vc-t, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_top_center_left: [<<: [*center_center, *vc-t, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_top_center: [<<: [*center_center, *vc-t, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_top_center_right: [<<: [*center_center, *vc-t, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_top_right2: [<<: [*center_right, *vc-t, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_top_right: [<<: [*center_right, *vc-t, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_left: [<<: [*center_left, *vc-c, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_left2: [<<: [*center_left, *vc-c, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_center_left: [<<: [*center_center, *vc-c, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_center: [<<: [*center_center, *vc-c, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_center_right: [<<: [*center_center, *vc-c, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_right2: [<<: [*center_right, *vc-c, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_right: [<<: [*center_right, *vc-c, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_bottom_left: [<<: [*center_left, *vc-b, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_bottom_left2: [<<: [*center_left, *vc-b, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_bottom_center_left: [<<: [*center_center, *vc-b, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_bottom_center: [<<: [*center_center, *vc-b, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_bottom_center_right: [<<: [*center_center, *vc-b, *h0-1], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_center_bottom_right2: [<<: [*center_right, *vc-b, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_center_bottom_right: [<<: [*center_right, *vc-b, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom2_left: [<<: [*bottom_left, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom2_left2: [<<: [*bottom_left, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom2_center_left: [<<: [*bottom_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom2_center: [<<: [*bottom_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom2_center_right: [<<: [*bottom_center, *v2-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom2_right2: [<<: [*bottom_right, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom2_right: [<<: [*bottom_right, *v2-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom_left: [<<: [*bottom_left, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom_left2: [<<: [*bottom_left, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom_center_left: [<<: [*bottom_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom_center: [<<: [*bottom_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom_center_right: [<<: [*bottom_center, *v1-1, *hc-c], *h0-2, *h0-3, *h0-4, *h0-5]
horizontal_bottom_right2: [<<: [*bottom_right, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
horizontal_bottom_right: [<<: [*bottom_right, *v1-1, *h1-1], *h1-2, *h1-3, *h1-4, *h1-5]
templates:
flags:

@ -340,4 +340,5 @@ playlist_files:
template_variables:
libraries: Movies, TV Shows
```
</details>

@ -33,6 +33,8 @@ The default set of overlays are a combination of Positional Overlays and Text Ov
<details>
<summary>Click to expand sample config.yml Movies overlays section:</summary>
**Note: This uses fonts not packaged with PMM. See [bullmoose20's Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/bullmoose20)**
```yaml
libraries:
Movies:
@ -78,6 +80,8 @@ libraries:
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Show Poster:</summary>
**Note: This uses fonts not packaged with PMM. See [bullmoose20's Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/bullmoose20)**
```yaml
libraries:
TV Shows:
@ -145,6 +149,8 @@ libraries:
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Episode Poster:</summary>
**Note: This uses fonts not packaged with PMM. See [bullmoose20's Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/bullmoose20)**
```yaml
libraries:
TV Shows:

@ -131,8 +131,8 @@ All [Shared Overlay Variables](variables) are available with the default values
| Variable | Description & Values |
|:------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `position` | **Description:** Use the Custom Given Queue instead of the the provided Queues.<br>**Values:** List of Coordinates |
| `horizontal_position` | **Description:** Choose the horizontal position for the flag group.<br>**Default:** `left`<br>**Values:** `left`, `off_left`, `center_left`, `center`, `center_right`, `off_right` or `right` |
| `vertical_position` | **Description:** Choose the vertical position for the flag group.<br>**Default:** `top`<br>**Values:** `top`, `off_top`, `center_top`, `center`, `center_bottom`, `off_bottom` or `bottom` |
| `horizontal_position` | **Description:** Choose the horizontal position for the flag group.<br>**Default:** `left`<br>**Values:** `left`, `left2`, `center`, `center_left`, `center_right`, `right` or `right2` |
| `vertical_position` | **Description:** Choose the vertical position for the flag group.<br>**Default:** `top`<br>**Values:** `top`, `top2`, `center`, `center_top`, `center_bottom`, `bottom` or `bottom2` |
| `overlay_limit` | **Description:** Choose the number of overlay this queue displays.<br>**Default:** `3`<br>**Values:** `1`, `2`, `3`, `4`, or `5` |
| `group_alignment` | **Description:** Choose the display alignment for the flag group.<br>**Default:** `vertical`<br>**Values:** `horizontal`, or `vertical` |
| `style` | **Description:** Controls the visual theme of the overlays created.<table class="clearTable"><tr><th>Values:</th></tr><tr><td><code>round</code></td><td>Round Theme</td></tr><tr><td><code>square</code></td><td>Square Theme</td></tr><tr><td><code>half</code></td><td>Square Flag with Round Background</td></tr></table> |

@ -103,6 +103,8 @@ All [Shared Overlay Variables](variables) can be appended by `rating1_`, `rating
The below is an example config.yml extract with some Template Variables added in to change how the file works.
**Note: This example uses fonts not packaged with PMM. See [bullmoose20's Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/bullmoose20)**
```yaml
Movies:
overlay_path:

@ -1,595 +0,0 @@
# Default Collections & Overlays
Plex Meta Manager includes a pre-created set of Metadata Files and Overlay Files which can be found in the "defaults" folder in the root of your Plex Meta Manager installation directory.
These files offer an easy-to-use and customizable set of Collections and Overlays that the user can achieve without having to worry about creating the files that makes the collections and overlays possible.
All Collections come with a matching poster to make a clean, consistent set of collections in your library. These files are stored in the [Plex Meta Manager Images](https://github.com/meisnate12/Plex-Meta-Manager-Images) Repository and each poster is downloaded straight to your Plex Collection when you run Plex Meta Manager.
It should be noted that users running the on [nightly branch](https://metamanager.wiki/en/nightly/home/kb.html#how-do-i-switch-to-the-nightly-branch) of Plex Meta Manager will receive all updates to the PMM Defaults as soon as they are published via [GitHub](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/PMM), which may at times involve bugs or implementations that need to be further addressed. Users of the [develop](https://metamanager.wiki/en/nightly/home/kb.html#how-do-i-switch-to-the-develop-branch) and [master](https://metamanager.wiki/en/nightly/home/kb.html#how-do-i-switch-back-to-the-master-branch) branches will only receive updated Defaults files when an update to Plex Meta Manager is released - this helps to protect to keep these branches stable and prevent bugs from reaching the wider user-base.
Credits to Bullmoose20 and Yozora for helping drive this entire Default Set of Configs through the concept, design and implementation.
Special thanks to Magic815 for the overlay image inspiration and base template.
Please consider [donating](https://github.com/sponsors/meisnate12) towards the project.
## Configurations
To run a file in git you can simply add it to your `metadata_path` (For Metadata Files) or `overlay_path` (For Overlay Files) using `git` like so:
```yaml
libraries:
Movies:
metadata_path:
- pmm: actor
- pmm: genre
overlay_path:
- remove_overlays: false
- pmm: ribbon
- pmm: ratings
```
## Overlays
The default set of overlays are a combination of Positional Overlays and Text Overlays.
### Example Poster Overlays
![](images/movie-overlays1-annotated.png)
![](images/movie-overlays2-annotated.png)
<details>
<summary>Click to expand sample config.yml Movies overlays section:</summary>
```yaml
libraries:
Movies:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
- pmm: audio_codec # 2
- pmm: mediastinger # 3
- pmm: special_release # 4
- pmm: ratings # 5, 6, 7
template_variables:
rating1: user # 5 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_image: rt_tomato # 5 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_font: config/custom_fonts/Adlib.ttf # 5 local font accessible to PMM
rating1_font_size: 63 # 5 adjusted font size to fit rating
rating2: critic # 6 as this is critic and mass_critic_rating_update: imdb
rating2_image: imdb # 6 as this is critic and mass_critic_rating_update: imdb
rating2_font: config/custom_fonts/Impact.ttf # 6 local font accessible to PMM
rating2_font_size: 70 # 6 adjusted font size to fit rating
rating3: audience # 7 as this is audience and mass_audience_rating_update: tmdb
rating3_image: tmdb # 7 as this is audience and mass_audience_rating_update: tmdb
rating3_font: config/custom_fonts/Avenir_95_Black.ttf # 7 local font accessible to PMM
rating3_font_size: 70 # 7 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
- pmm: streaming # 8
- pmm: video_format # 9
- pmm: audio_language # 10
- pmm: ribbon # 11, 12 Bottom right sash is used by more than one overlay so a weight for priority can be applied
operations:
mass_user_rating_update: mdb_tomatoes # 5 This operation will update the user rating in plex with Rotten Tomatoes ratings information
mass_critic_rating_update: imdb # 6 This operation will update the critic rating in plex with IMDb ratings information
mass_audience_rating_update: tmdb # 7 This operation will update the audience rating in plex with TMDb ratings information
```
</details>
### Example TV Shows - Show Overlays
![](images/tvshow-poster-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Show Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
- pmm: audio_codec # 2
- pmm: mediastinger # 3
- pmm: ratings # 4, 5, 6
template_variables:
rating1: user # 4 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_image: rt_tomato # 4 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_font: config/custom_fonts/Adlib.ttf # 4 local font accessible to PMM
rating1_font_size: 63 # 4 adjusted font size to fit rating
rating2: critic # 5 as this is critic and mass_critic_rating_update: imdb
rating2_image: imdb # 5 as this is critic and mass_critic_rating_update: imdb
rating2_font: config/custom_fonts/Impact.ttf # 5 local font accessible to PMM
rating2_font_size: 70 # 5 adjusted font size to fit rating
rating3: audience # 6 as this is audience and mass_audience_rating_update: tmdb
rating3_image: tmdb # 6 as this is audience and mass_audience_rating_update: tmdb
rating3_font: config/custom_fonts/Avenir_95_Black.ttf # 6 local font accessible to PMM
rating3_font_size: 70 # 6 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
- pmm: streaming # 7
- pmm: video_format # 8
- pmm: ribbon # 10, 11 Bottom right sash is used by more than one overlay so a weight for priority can be applied
operations:
mass_user_rating_update: mdb_tomatoes # 4 This operation will update the user rating in plex with Rotten Tomatoes ratings information
mass_critic_rating_update: imdb # 5 This operation will update the critic rating in plex with IMDb ratings information
mass_audience_rating_update: tmdb # 6 This operation will update the audience rating in plex with TMDb ratings information
```
</details>
### Example TV Shows - Season Overlays
![](images/tvshow-poster-season-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Season Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
template_variables:
overlay_level: season
- pmm: audio_codec # 2
template_variables:
overlay_level: season
- pmm: video_format # 3
template_variables:
overlay_level: season
```
</details>
### Example TV Shows - Episode Overlays
![](images/tvshow-poster-episode-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Episode Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
template_variables:
overlay_level: episode
- pmm: audio_codec # 2
template_variables:
overlay_level: episode
- pmm: ratings # 3, 4
template_variables:
rating1: critic # 3 as this is critic and mass_critic_rating_update: imdb
rating1_image: imdb # 3 as this is critic and mass_critic_rating_update: imdb
rating1_font: config/custom_fonts/Impact.ttf # 3 local font accessible to PMM
rating1_font_size: 70 # 3 adjusted font size to fit rating
rating2: audience # 4 as this is audience and mass_audience_rating_update: tmdb
rating2_image: tmdb # 4 as this is audience and mass_audience_rating_update: tmdb
rating2_font: config/custom_fonts/Avenir_95_Black.ttf # 4 local font accessible to PMM
rating2_font_size: 70 # 4 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
overlay_level: episode
- pmm: video_format # 5
template_variables:
overlay_level: episode
- pmm: episode_info # 6
template_variables:
overlay_level: episode
- pmm: runtimes # 7
template_variables:
overlay_level: episode
operations:
mass_episode_critic_rating_update: imdb # 3 This operation will update the episodes critic rating in plex with IMDb ratings information
mass_episode_audience_rating_update: tmdb # 4 This operation will update the episodes audience rating in plex with TMDb ratings information
```
</details>
## Separators
By default, most metadata files use separators to denote different sections of collection like actor collections vs studio collections.
<details>
<summary>Click to expand to see an example of Separators.</summary>
![](images/separators.jpg)
</details>
* Can be turned off by [customizing your config](#customizing-configs)
## Collection Section Order
Almost every default metadata file has a `collection_section` attribute. These attributes determine the order of the various sections and can be set by [customizing your config](#customizing-configs).
For example: `collection_section: 01` translates to `sort_title: "!<<collection_section>><<pre>><<order_<<key>>>><<sort>>"` and so for `genre.yml` if you have a `Fantasy` collection, plex is going to show `!06_Fantasy`
This is the default PMM collection ordering:
| Collection | Collection Section |
|:----------------------------------|:------------------:|
| `seasonal.yml` | `00` |
| `anilist.yml` | `01` |
| `basic.yml` | `01` |
| `imdb.yml` | `01` |
| `flixpatrol.yml` | `01` |
| `myanimelist.yml` | `01` |
| `other_chart.yml` | `01` |
| `tautulli.yml` | `01` |
| `tmdb.yml` | `01` |
| `trakt.yml` | `01` |
| `universe.yml` | `02` |
| `streaming.yml` | `03` |
| `network.yml` | `04` |
| `genre.yml` | `06` |
| `studio.yml` | `07` |
| `country.yml` | `09` |
| `audio_language.yml` | `10` |
| `subtitle_language.yml` | `11` |
| `decade.yml` | `12` |
| `year.yml` | `13` |
| `content_rating_us.yml` | `14` |
| `content_rating_uk.yml` | `14` |
| `content_rating_cs.yml` | `14` |
| `resolution.yml` | `15` |
| `resolution_standards.yml` | `15` |
| `bafta.yml` | `16` |
| `cannes.yml` | `16` |
| `choice.yml` | `16` |
| `emmy.yml` | `16` |
| `golden.yml` | `16` |
| `oscars.yml` | `16` |
| `other_award.yml` | `16` |
| `spirit.yml` | `16` |
| `sundance.yml` | `16` |
| `actor.yml` | `17` |
| `director.yml` | `18` |
| `producer.yml` | `19` |
| `writer.yml` | `20` |
## Rating Overlays
By default for Movies in Plex, the `Ratings Source` dropdown (`#3`) below, can come from Rotten Tomatoes (and includes Critic Ratings and Audience Ratings) or IMDb (Audience Ratings). This only changes the tiny icons displayed and where Plex will retrieve the ratings from upon initial scan and import of the media metadata.
**Plex Meta Manager can insert up to three ratings of your choice into the three spots regardless of what you choose in the `Advanced` tab of that Plex library**
![](images/ratings_source.png)
Plex has three available spots in the Plex DB to store ratings and thus Plex Meta Manager can be used to insert ratings sources of your choice into those spots. They are known as the User Rating (`#1`), Critic Rating (`#2`), and Audience Rating (`#3`).
**Note that the little icons cannot be changed and that the numbers next to the little icons are reflected in the poster ratings overlay**
![](images/ratings_spot.png)
To be able to insert the ratings you want, Plex Meta Manager operations need to be defined. In this example below, User ratings (`#1`) are being filled with Rotten Tomatoes Critics Ratings. Critic ratings (`#2`) are filled with IMDb, and Audience ratings (`#3`) are filled with TMDb.
**mass_*_rating_update** sources can be found here: [operations](../../config/operations)
![](images/ratings_operations.png)
Finally, to show the ratings on the poster, the following was added to the `overlay_path` section in the `config.yml` file to post Rotten Tomatoes Critics Ratings in (`#1`), IMDb ratings in (`#2`), and TMDb ratings in (`#3`)
![](images/ratings_overlay_path.png)
## Customizing Configs
Configs can be customized using the `template_variables` attribute when calling the file. These `template_variables` will be given to every template call in the file which allows them to affect how that file runs.
This example changes the ratings overlay to work on episodes.
```yaml
libraries:
TV Shows:
overlay_path:
- pmm: ratings
template_variables:
overlay_level: episode
```
Each file has a comment block at the top showing the available `template_variables` for each file. For example the [`pmm: genre`](https://github.com/meisnate12/Plex-Meta-Manager-Configs/blob/master/PMM/genre.yml) has this:
```yaml
#############################################################
# Dynamic Genre Collections #
# Created by Yozora, Bullmoose20, & Sohjiro #
#############################################################
# Call this from your config.yml (Movie or Show) #
# If nothing is specified these are the defaults #
# #
# metadata_path: #
# - pmm: genre #
# template_variables: #
# # Turn the [Separator Collection](../separators) on/off #
# use_separator: true #
# # Sets how the collection is sorted #
# sort_by: release.desc #
# # Sets the collection mode of the collection #
# collection_mode: #
# # Sets the value at the start of the sort title #
# collection_section: "06" #
#############################################################
```
Each of these when passed will change how the collection runs slightly.
* `use_separator` Turn the [Separator Collection](../separators) on/off
* `sort_by` Sets how the collection is sorted
* `collection_mode` Sets the collection mode of the collection
* `collection_section` Sets the value at the start of the sort title
**In addition to the defined `template_variables` each file in the PMM Folder has access to the `radarr_add_missing` and `sonarr_add_missing` template variables and for dynamic collections most attributes can be passed as template variables**
For example if you want yearly oscar collections that go back 10 years instead of 5 all of which gets sent to radarr use the `data` and `radarr_add_missing` template variables.
```yaml
libraries:
Movies:
metadata_path:
- pmm: oscars
template_variables:
radarr_add_missing: true
data:
starting: current_year-10
ending: current_year
```
Or maybe you want to change the number of actor collections made using pmm: actor.
```yaml
libraries:
Movies:
overlay_path:
- pmm: actor
template_variables:
collection_mode: hide
data:
depth: 5
limit: 50
```
Or maybe you want to change the collection sort order of the genre collections using pmm: genre.
```yaml
libraries:
Movies:
metadata_path:
- pmm: genre
template_variables:
collection_section: 11
```
Or maybe you want to disable separators globally per library.
```yaml
libraries:
LIBRARYNAME:
template_variables:
use_separator: false
metadata_path:
```
Alternatively it can be turned off individually per git file:
```yaml
libraries:
LIBRARYNAME:
metadata_path:
- pmm: <file1> # separator is disabled
template_variables:
use_separator: false
- pmm: <file2> # separator is enabled by default
- pmm: <file3> # separator is disabled
template_variables:
use_separator: false
```
## Errors
If there are collections being made that have configuration errors or missing posters please either bring it up in our Discord or raise an Issue on the [Configs Repo](https://github.com/meisnate12/Plex-Meta-Manager-Configs/issues/new/choose).
## Example Configuration File
<details>
<summary>Click to expand sample config.yml file:</summary>
```yaml
libraries:
Movies:
metadata_path:
- pmm: bafta
- pmm: cannes
- pmm: choice
- pmm: golden
- pmm: oscars
- pmm: other_award
- pmm: spirit
- pmm: sundance
- pmm: anilist
- pmm: basic
- pmm: imdb
- pmm: myanimelist
- pmm: other_chart
- pmm: tautulli
- pmm: tmdb
- pmm: trakt
- pmm: actor
- pmm: audio_language
- pmm: content_rating_us # Choose content_rating_uk or content_rating_us
- pmm: genre
- pmm: resolution_standards # Choose resolution_standards or resolution
- pmm: streaming
- pmm: studio
- pmm: subtitle_language
- pmm: year
- pmm: country
- pmm: decade
- pmm: director
- pmm: franchise
- pmm: universe
- pmm: producer
- pmm: seasonal
- pmm: writer
overlay_path:
- remove_overlays: false
- pmm: audio_codec
- pmm: audio_language
- pmm: commonsense
- pmm: direct_play
- pmm: edition
- pmm: episode_info
- pmm: flixpatrol
- pmm: mediastinger
- pmm: ratings
template_variables:
rating1: critic
rating1_image: rt_tomato
- pmm: resolution
- pmm: ribbon
- pmm: runtimes
- pmm: special_release
- pmm: streaming
- pmm: versions
- pmm: video_format
TV Shows:
metadata_path:
- pmm: choice
- pmm: golden
- pmm: emmy
- pmm: anilist
- pmm: basic
- pmm: imdb
- pmm: myanimelist
- pmm: other_chart
- pmm: tautulli
- pmm: tmdb
- pmm: trakt
- pmm: actor
- pmm: audio_language
- pmm: content_rating_us # Choose content_rating_uk or content_rating_us
- pmm: genre
- pmm: resolution_standards # Choose resolution_standards or resolution
- pmm: streaming
- pmm: studio
- pmm: subtitle_language
- pmm: year
- pmm: country
- pmm: decade
- pmm: network
overlay_path:
- remove_overlays: false
- pmm: audio_codec
- pmm: audio_codec
template_variables:
overlay_level: episode
- pmm: audio_codec
template_variables:
overlay_level: season
- pmm: audio_language
- pmm: audio_language
template_variables:
overlay_level: episode
- pmm: audio_language
template_variables:
overlay_level: season
- pmm: commonsense
- pmm: commonsense
template_variables:
overlay_level: episode
- pmm: commonsense
template_variables:
overlay_level: season
- pmm: direct_play
- pmm: direct_play
template_variables:
overlay_level: episode
- pmm: direct_play
template_variables:
overlay_level: season
- pmm: edition
- pmm: edition
template_variables:
overlay_level: episode
- pmm: episode_info
template_variables:
overlay_level: episode
- pmm: flixpatrol
- pmm: flixpatrol
template_variables:
overlay_level: episode
- pmm: flixpatrol
template_variables:
overlay_level: season
- pmm: mediastinger
- pmm: mediastinger
template_variables:
overlay_level: episode
- pmm: mediastinger
template_variables:
overlay_level: season
- pmm: ratings
template_variables:
rating2: audience
rating2_image: imdb
- pmm: ratings
template_variables:
rating2: audience
rating2_image: imdb
overlay_level: episode
- pmm: resolution
- pmm: resolution
template_variables:
overlay_level: episode
- pmm: resolution
template_variables:
overlay_level: season
- pmm: ribbon
- pmm: ribbon
template_variables:
overlay_level: episode
- pmm: ribbon
template_variables:
overlay_level: season
- pmm: runtimes
template_variables:
overlay_level: episode
- pmm: special_release
- pmm: special_release
template_variables:
overlay_level: episode
- pmm: special_release
template_variables:
overlay_level: season
- pmm: streaming
- pmm: versions
- pmm: versions
template_variables:
overlay_level: episode
- pmm: versions
template_variables:
overlay_level: season
- pmm: versions
template_variables:
overlay_level: show
- pmm: video_format
- pmm: video_format
template_variables:
overlay_level: episode
- pmm: video_format
template_variables:
overlay_level: season
playlist_files:
- pmm: playlist
```
</details>

@ -1,546 +0,0 @@
# Default Metadata & Overlays Files
There is a default set of Metadata and Overlay Files located in the [PMM Folder](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/PMM) in the [Plex Meta Manager Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs) Repository.
The intention of this directory is to offer easy to use and slightly customizable (using [`template_variables`](../config/paths.md#template-variables)) Metadata and Overlay Files for a general user who wants nice collections but doesn't want to learn all of Plex Meta Manager.
All posters defined in the Metadata Files are stored in the [Plex Meta Manager Images](https://github.com/meisnate12/Plex-Meta-Manager-Images) Repository and all Overlay images are in the [Configs](https://github.com/meisnate12/Plex-Meta-Manager-Configs) Repository at [pmm: images](https://github.com/meisnate12/Plex-Meta-Manager-Configs/tree/master/PMM/overlays/images), which allows for changes to be made in one central location that will deploy to all users of this setup when they next run PMM.
## Configurations
To run a file in git you can simply add it to your `metadata_path` (For Metadata Files) or `overlay_path` (For Overlay Files) using `git` like so:
```yaml
libraries:
Movies:
metadata_path:
- pmm: actor
- pmm: genre
overlay_path:
- remove_overlays: false
- pmm: ribbon
- pmm: ratings
```
## Overlays
The default set of overlays are a combination of Positional Overlays and Text Overlays.
### Example Poster Overlays
![](images/movie-overlays1-annotated.png)
![](images/movie-overlays2-annotated.png)
<details>
<summary>Click to expand sample config.yml Movies overlays section:</summary>
```yaml
libraries:
Movies:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
- pmm: audio_codec # 2
- pmm: mediastinger # 3
- pmm: special_release # 4
- pmm: ratings # 5,6,7
template_variables:
rating1: user # 5 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_image: rt_tomato # 5 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_font: config/metadata/pmm: fonts/Adlib.ttf # 5 local font accessible to PMM
rating1_font_size: 63 # 5 adjusted font size to fit rating
rating2: critic # 6 as this is critic and mass_critic_rating_update: imdb
rating2_image: imdb # 6 as this is critic and mass_critic_rating_update: imdb
rating2_font: config/metadata/pmm: fonts/Impact.ttf # 6 local font accessible to PMM
rating2_font_size: 70 # 6 adjusted font size to fit rating
rating3: audience # 7 as this is audience and mass_audience_rating_update: tmdb
rating3_image: tmdb # 7 as this is audience and mass_audience_rating_update: tmdb
rating3_font: config/metadata/pmm: fonts/Avenir_95_Black.ttf # 7 local font accessible to PMM
rating3_font_size: 70 # 7 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
- pmm: streaming # 8
- pmm: video_format # 9
- pmm: audio_language # 10
- pmm: oscars # 11
template_variables: # Bottom right sash is used by more than one overlay so a weight for priority is applied
weight: 40 # Weight of 40 applies if more than 1 sash is applied in bottom right
- pmm: ribbon # 12, #13
template_variables: # Bottom right sash is used by more than one overlay so a weight for priority is applied
weight: 30 # Weight of 30 applies if more than 1 sash is applied in bottom right
operations:
mass_user_rating_update: mdb_tomatoes # 5 This operation will update the user rating in plex with Rotten Tomatoes ratings information
mass_critic_rating_update: imdb # 6 This operation will update the critic rating in plex with IMDb ratings information
mass_audience_rating_update: tmdb # 7 This operation will update the audience rating in plex with TMDb ratings information
```
</details>
### Example TV Shows - Show Overlays
![](images/tvshow-poster-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Show Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
- pmm: audio_codec # 2
- pmm: mediastinger # 3
- pmm: ratings # 4,5,6
template_variables:
rating1: user # 4 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_image: rt_tomato # 4 as this is user and mass_user_rating_update: mdb_tomatoes
rating1_font: config/metadata/pmm: fonts/Adlib.ttf # 4 local font accessible to PMM
rating1_font_size: 63 # 4 adjusted font size to fit rating
rating2: critic # 5 as this is critic and mass_critic_rating_update: imdb
rating2_image: imdb # 5 as this is critic and mass_critic_rating_update: imdb
rating2_font: config/metadata/pmm: fonts/Impact.ttf # 5 local font accessible to PMM
rating2_font_size: 70 # 5 adjusted font size to fit rating
rating3: audience # 6 as this is audience and mass_audience_rating_update: tmdb
rating3_image: tmdb # 6 as this is audience and mass_audience_rating_update: tmdb
rating3_font: config/metadata/pmm: fonts/Avenir_95_Black.ttf # 6 local font accessible to PMM
rating3_font_size: 70 # 6 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
- pmm: streaming # 7
- pmm: video_format # 8
- pmm: ribbon # 9, #10
operations:
mass_user_rating_update: mdb_tomatoes # 4 This operation will update the user rating in plex with Rotten Tomatoes ratings information
mass_critic_rating_update: imdb # 5 This operation will update the critic rating in plex with IMDb ratings information
mass_audience_rating_update: tmdb # 6 This operation will update the audience rating in plex with TMDb ratings information
```
</details>
### Example TV Shows - Season Overlays
![](images/tvshow-poster-season-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Season Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
template_variables:
overlay_level: season
- pmm: audio_codec # 2
template_variables:
overlay_level: season
- pmm: video_format # 3
template_variables:
overlay_level: season
```
</details>
### Example TV Shows - Episode Overlays
![](images/tvshow-poster-episode-annotated.png)
<details>
<summary>Click to expand sample config.yml TV Shows overlays section for the Episode Poster:</summary>
```yaml
libraries:
TV Shows:
overlay_path:
- remove_overlays: false
- reapply_overlay: true
- pmm: resolution # 1
template_variables:
overlay_level: episode
- pmm: audio_codec # 2
template_variables:
overlay_level: episode
- pmm: ratings # 3,4
template_variables:
rating1: critic # 3 as this is critic and mass_critic_rating_update: imdb
rating1_image: imdb # 3 as this is critic and mass_critic_rating_update: imdb
rating1_font: config/metadata/pmm: fonts/Impact.ttf # 3 local font accessible to PMM
rating1_font_size: 70 # 3 adjusted font size to fit rating
rating2: audience # 4 as this is audience and mass_audience_rating_update: tmdb
rating2_image: tmdb # 4 as this is audience and mass_audience_rating_update: tmdb
rating2_font: config/metadata/pmm: fonts/Avenir_95_Black.ttf # 4 local font accessible to PMM
rating2_font_size: 70 # 4 adjusted font size to fit rating
horizontal_position: right # the set of ratings is on the right of the poster
overlay_level: episode
- pmm: video_format # 5
template_variables:
overlay_level: episode
- pmm: episode_info # 6
template_variables:
overlay_level: episode
- pmm: runtimes # 7
template_variables:
overlay_level: episode
operations:
mass_episode_critic_rating_update: imdb # 3 This operation will update the episodes critic rating in plex with IMDb ratings information
mass_episode_audience_rating_update: tmdb # 4 This operation will update the episodes audience rating in plex with TMDb ratings information
```
</details>
## Collection Section Order
Almost every default metadata file has a `collection_section` attribute. These attributes determine the order of the various sections and can be set by [customizing your config](#customizing-configs).
For example: `collection_section:01` translates to `sort_title: "!<<collection_section>><<pre>><<order_<<key>>>><<sort>>"` and so for `genre.yml` if you have a `Fantasy` collection, plex is going to show `!06_Fantasy`
This is the default PMM collection ordering:
| Collection | Order |
|:---------------------------------|------------------------|
| `pmm: seasonal.yml` | collection_section: 00 |
| `pmm: anilist.yml` | collection_section: 01 |
| `pmm: basic.yml` | collection_section: 01 |
| `pmm: imdb.yml` | collection_section: 01 |
| `pmm: myanimelist.yml` | collection_section: 01 |
| `pmm: other.yml` | collection_section: 01 |
| `pmm: tautulli.yml` | collection_section: 01 |
| `pmm: tmdb.yml` | collection_section: 01 |
| `pmm: trakt.yml` | collection_section: 01 |
| `pmm: universe.yml` | collection_section: 02 |
| `pmm: streaming.yml` | collection_section: 03 |
| `pmm: show/network.yml` | collection_section: 04 |
| `pmm: genre.yml` | collection_section: 06 |
| `pmm: studio.yml` | collection_section: 07 |
| `pmm: country.yml` | collection_section: 09 |
| `pmm: show/country.yml` | collection_section: 09 |
| `pmm: audio_language.yml` | collection_section: 10 |
| `pmm: subtitle_language.yml` | collection_section: 11 |
| `pmm: decade.yml` | collection_section: 12 |
| `pmm: show/decade.yml` | collection_section: 12 |
| `pmm: year.yml` | collection_section: 13 |
| `pmm: content_rating_uk.yml` | collection_section: 14 |
| `pmm: content_rating_us.yml` | collection_section: 14 |
| `pmm: show/content_rating_us.yml` | collection_section: 14 |
| `pmm: resolution.yml` | collection_section: 15 |
| `pmm: resolution_standards.yml` | collection_section: 15 |
| `pmm: bafta.yml` | collection_section: 16 |
| `pmm: cannes.yml` | collection_section: 16 |
| `pmm: choice.yml` | collection_section: 16 |
| `pmm: emmy.yml` | collection_section: 16 |
| `pmm: golden.yml` | collection_section: 16 |
| `pmm: oscars.yml` | collection_section: 16 |
| `pmm: other.yml` | collection_section: 16 |
| `pmm: separator.yml` | collection_section: 16 |
| `pmm: spirit.yml` | collection_section: 16 |
| `pmm: sundance.yml` | collection_section: 16 |
| `pmm: actor.yml` | collection_section: 17 |
| `pmm: director.yml` | collection_section: 18 |
| `pmm: producer.yml` | collection_section: 19 |
| `pmm: writer.yml` | collection_section: 20 |
## Ratings Overlays
By default for Movies in Plex, the `Ratings Source` dropdown (`#3`) below, can come from Rotten Tomatoes (and includes Critic Ratings and Audience Ratings) or IMDb (Audience Ratings). This only changes the tiny icons displayed and where Plex will retrieve the ratings from upon initial scan and import of the media metadata.
**Plex Meta Manager can insert up to three ratings of your choice into the three spots regardless of what you choose in the `Advanced` tab of that Plex library**
![](images/ratings_source.png)
Plex has three available spots in the Plex DB to store ratings and thus Plex Meta Manager can be used to insert ratings sources of your choice into those spots. They are known as the User Rating (`#1`), Critic Rating (`#2`), and Audience Rating (`#3`).
**Note that the little icons cannot be changed and that the numbers next to the little icons are reflected in the poster ratings overlay**
![](images/ratings_spot.png)
To be able to insert the ratings you want, Plex Meta Manager operations need to be defined. In this example below, User ratings (`#1`) are being filled with Rotten Tomatoes Critics Ratings. Critic ratings (`#2`) are filled with IMDb, and Audience ratings (`#3`) are filled with TMDb.
**mass_*_rating_update** sources can be found here: [operations](../../config/operations)
![](images/ratings_operations.png)
Finally, to show the ratings on the poster, the following was added to the `overlay_path` section in the `config.yml` file to post Rotten Tomatoes Critics Ratings in (`#1`), IMDb ratings in (`#2`), and TMDb ratings in (`#3`)
![](images/ratings_overlay_path.png)
## Customizing Configs
Configs can be customized using the `template_variables` attribute when calling the file. These `template_variables` will be given to every template call in the file which allows them to affect how that file runs.
This example changes the ratings overlay to work on episodes.
```yaml
libraries:
TV Shows:
overlay_path:
- pmm: ratings
template_variables:
overlay_level: episode
```
Each of these when passed will change how the collection runs slightly.
* `use_separator` Turn the separator collection on/off
* `sort_by` Sets how the collection is sorted
* `collection_mode` Sets the collection mode of the collection
* `collection_section` Sets the value at the start of the sort title
**In addition to the defined `template_variables` each file in the PMM Folder has access to the `radarr_add_missing` and `sonarr_add_missing` template variables and for dynamic collections most attributes can be passed as template variables**
For example if you want yearly oscar collections that go back 10 years instead of 5 all of which gets sent to radarr use the `data` and `radarr_add_missing` template variables.
```yaml
libraries:
Movies:
metadata_path:
- pmm: oscars
template_variables:
radarr_add_missing: true
data:
starting: current_year-10
ending: current_year
```
Or maybe you want to change the number of actor collections made using pmm: actor.
```yaml
libraries:
Movies:
overlay_path:
- pmm: actor
template_variables:
collection_mode: hide
data:
depth: 5
limit: 50
```
Or maybe you want to change the collection sort order of the genre collections using pmm: genre.
```yaml
libraries:
Movies:
metadata_path:
- pmm: genre
template_variables:
collection_section: 11
```
Or maybe you want to disable separators globally per library.
```yaml
libraries:
LIBRARYNAME:
template_variables:
use_separator: false
metadata_path:
```
Alternatively it can be turned off individually per git file:
```yaml
libraries:
LIBRARYNAME:
metadata_path:
- pmm: <file1> # separator is disabled
template_variables:
use_separator: false
- pmm: <file2> # separator is enabled by default
- pmm: <file3> # separator is disabled
template_variables:
use_separator: false
```
## Errors
If there are collections being made that have configuration errors or missing posters please either bring it up in our Discord or raise an Issue on the [Configs Repo](https://github.com/meisnate12/Plex-Meta-Manager-Configs/issues/new/choose).
## Example Configuration File
<details>
<summary>Click to expand sample config.yml file:</summary>
```yaml
libraries:
Movies:
metadata_path:
- pmm: bafta
- pmm: cannes
- pmm: choice
- pmm: golden
- pmm: oscars
- pmm: other_award
- pmm: spirit
- pmm: sundance
- pmm: anilist
- pmm: basic
- pmm: imdb
- pmm: myanimelist
- pmm: other_chart
- pmm: tautulli
- pmm: tmdb
- pmm: trakt
- pmm: actor
- pmm: audio_language
- pmm: content_rating_us # Choose content_rating_uk or content_rating_us
- pmm: genre
- pmm: resolution_standards # Choose resolution_standards or resolution
- pmm: streaming
- pmm: studio
- pmm: subtitle_language
- pmm: year
- pmm: country
- pmm: decade
- pmm: director
- pmm: franchise
- pmm: universe
- pmm: producer
- pmm: seasonal
- pmm: writer
overlay_path:
- remove_overlays: false
- pmm: audio_codec
- pmm: audio_language
- pmm: commonsense
- pmm: direct_play
- pmm: mediastinger
- pmm: ribbon
- pmm: ratings
template_variables:
rating1: critic
rating1_image: rt_tomato
- pmm: resolution
- pmm: special_release
- pmm: streaming
- pmm: versions
- pmm: video_format
TV Shows:
metadata_path:
- pmm: choice
- pmm: golden
- pmm: emmy
- pmm: anilist
- pmm: basic
- pmm: imdb
- pmm: myanimelist
- pmm: other_chart
- pmm: tautulli
- pmm: tmdb
- pmm: trakt
- pmm: actor
- pmm: audio_language
- pmm: content_rating_us # Choose content_rating_uk or content_rating_us
- pmm: genre
- pmm: resolution_standards # Choose resolution_standards or resolution
- pmm: streaming
- pmm: studio
- pmm: subtitle_language
- pmm: year
- pmm: country
- pmm: decade
- pmm: network
overlay_path:
- remove_overlays: false
- pmm: audio_codec
- pmm: audio_codec
template_variables:
overlay_level: episode
- pmm: audio_codec
template_variables:
overlay_level: season
- pmm: audio_language
- pmm: audio_language
template_variables:
overlay_level: episode
- pmm: audio_language
template_variables:
overlay_level: season
- pmm: commonsense
- pmm: commonsense
template_variables:
overlay_level: episode
- pmm: commonsense
template_variables:
overlay_level: season
- pmm: direct_play
- pmm: direct_play
template_variables:
overlay_level: episode
- pmm: direct_play
template_variables:
overlay_level: season
- pmm: episode_info
template_variables:
overlay_level: episode
- pmm: mediastinger
- pmm: mediastinger
template_variables:
overlay_level: episode
- pmm: mediastinger
template_variables:
overlay_level: season
- pmm: ribbon
- pmm: ribbon
template_variables:
overlay_level: episode
- pmm: ribbon
template_variables:
overlay_level: season
- pmm: ratings
template_variables:
rating2: audience
rating2_image: imdb
- pmm: ratings
template_variables:
rating2: audience
rating2_image: imdb
overlay_level: episode
- pmm: resolution
- pmm: resolution
template_variables:
overlay_level: episode
- pmm: resolution
template_variables:
overlay_level: season
- pmm: runtimes
template_variables:
overlay_level: episode
- pmm: special_release
- pmm: special_release
template_variables:
overlay_level: episode
- pmm: special_release
template_variables:
overlay_level: season
- pmm: streaming
- pmm: versions
- pmm: versions
template_variables:
overlay_level: episode
- pmm: versions
template_variables:
overlay_level: season
- pmm: versions
template_variables:
overlay_level: show
- pmm: video_format
- pmm: video_format
template_variables:
overlay_level: episode
- pmm: video_format
template_variables:
overlay_level: season
playlist_files:
- pmm: playlist
```
</details>

@ -372,7 +372,7 @@ class CollectionBuilder:
self.builders = []
self.filters = []
self.has_tmdb_filters = False
self.added_items = []
self.found_items = []
self.filtered_items = []
self.filtered_keys = {}
self.run_again_movies = []
@ -801,12 +801,9 @@ class CollectionBuilder:
if self.obj:
self.exists = True
if not self.playlist:
self.beginning_count = self.obj.childCount
if self.sync or self.playlist:
self.remove_item_map = {i.ratingKey: i for i in self.library.get_collection_items(self.obj, self.smart_label_collection)}
if self.playlist:
self.beginning_count = len(self.remove_item_map)
self.beginning_count = len(self.remove_item_map) if self.playlist else self.obj.childCount
else:
self.obj = None
self.sync = False
@ -1766,14 +1763,14 @@ class CollectionBuilder:
if not isinstance(item, (Movie, Show, Season, Episode, Artist, Album, Track)):
logger.error(f"{self.Type} Error: Item: {item} is an invalid type")
continue
if item not in self.added_items:
if item not in self.found_items:
if item.ratingKey in self.filtered_keys:
if self.details["show_filtered"] is True:
logger.info(f"{name} {self.Type} | X | {self.filtered_keys[item.ratingKey]}")
else:
current_title = util.item_title(item)
if self.check_filters(item, f"{(' ' * (max_length - len(str(i))))}{i}/{total}"):
self.added_items.append(item)
self.found_items.append(item)
else:
filtered_items.append(item)
self.filtered_keys[item.ratingKey] = current_title
@ -2146,15 +2143,15 @@ class CollectionBuilder:
logger.separator(f"Adding to {self.name} {self.Type}", space=False, border=False)
logger.info("")
name, collection_items = self.library.get_collection_name_and_items(self.obj if self.obj else self.name, self.smart_label_collection)
total = self.limit if self.limit and len(self.added_items) > self.limit else len(self.added_items)
total = self.limit if self.limit and len(self.found_items) > self.limit else len(self.found_items)
spacing = len(str(total)) * 2 + 1
amount_added = 0
amount_unchanged = 0
items_added = []
for i, item in enumerate(self.added_items, 1):
for i, item in enumerate(self.found_items, 1):
if self.limit and amount_added + self.beginning_count - len([r for _, r in self.remove_item_map.items() if r is not None]) >= self.limit:
logger.info(f"{self.Type} Limit reached")
self.added_items = self.added_items[:i-1]
self.found_items = self.found_items[:i - 1]
break
current_operation = "=" if item in collection_items else "+"
number_text = f"{i}/{total}"
@ -2394,7 +2391,7 @@ class CollectionBuilder:
logger.info("")
logger.separator(f"Items Found for {self.name} {self.Type}", space=False, border=False)
logger.info("")
self.items = self.added_items
self.items = self.found_items
if not self.items:
raise Failed(f"Plex Error: No {self.Type} items found")
@ -2674,7 +2671,7 @@ class CollectionBuilder:
logger.separator(f"Sorting {self.name} {self.Type}", space=False, border=False)
logger.info("")
if self.custom_sort is True:
items = self.added_items
items = self.found_items
else:
plex_search = {"sort_by": self.custom_sort}
if self.builder_level in ["season", "episode"]:

@ -394,8 +394,8 @@ class Overlays:
raise Failed(e)
added_titles = []
if builder.added_items:
for item in builder.added_items:
if builder.found_items:
for item in builder.found_items:
key_to_item[item.ratingKey] = item
added_titles.append(item)
if item.ratingKey not in properties[builder.overlay.mapping_name].keys:

@ -620,12 +620,12 @@ def run_collection(config, library, metadata, requested_collections):
else:
raise Failed(e)
if not builder.added_items and builder.ignore_blank_results:
if not builder.found_items and builder.ignore_blank_results:
raise NonExisting(f"{builder.Type} Warning: No items found")
builder.display_filters()
if len(builder.added_items) > 0 and len(builder.added_items) + builder.beginning_count >= builder.minimum and builder.build_collection:
if len(builder.found_items) > 0 and len(builder.found_items) + builder.beginning_count >= builder.minimum and builder.build_collection:
items_added, items_unchanged = builder.add_to_collection()
library.stats["added"] += items_added
library.status[str(mapping_name)]["added"] = items_added
@ -646,8 +646,8 @@ def run_collection(config, library, metadata, requested_collections):
valid = True
if builder.build_collection and not builder.blank_collection and (
(builder.smart_url and len(library.get_filter_items(builder.smart_url)) < builder.minimum)
or (not builder.smart_url and len(builder.added_items) + builder.beginning_count < builder.minimum)
(not builder.smart_url and items_added + builder.beginning_count < builder.minimum)
or (builder.smart_url and len(library.get_filter_items(builder.smart_url)) < builder.minimum)
):
logger.info("")
logger.info(f"{builder.Type} Minimum: {builder.minimum} not met for {mapping_name} Collection")
@ -817,7 +817,7 @@ def run_playlists(config):
builder.display_filters()
builder.filter_and_save_items(ids)
if len(builder.added_items) > 0 and len(builder.added_items) + builder.beginning_count >= builder.minimum:
if len(builder.found_items) > 0 and len(builder.found_items) + builder.beginning_count >= builder.minimum:
items_added, items_unchanged = builder.add_to_collection()
stats["added"] += items_added
status[mapping_name]["added"] += items_added
@ -828,7 +828,7 @@ def run_playlists(config):
items_removed = builder.sync_collection()
stats["removed"] += items_removed
status[mapping_name]["removed"] += items_removed
elif len(builder.added_items) < builder.minimum:
elif len(builder.found_items) < builder.minimum:
logger.info("")
logger.info(f"Playlist Minimum: {builder.minimum} not met for {mapping_name} Playlist")
delete_status = f"Minimum {builder.minimum} Not Met"

Loading…
Cancel
Save