[159] update how translations work

pull/1357/head
meisnate12 2 years ago
parent fcd2e94a9e
commit 7e25b6c5f7

@ -1 +1 @@
1.18.3-develop158
1.18.3-develop159

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
BAFTA Best Films:
variables:
@ -23,10 +20,9 @@ collections:
sort: BAFTA !
allowed_libraries: movie
image: award/bafta/winner
translation_key: bafta_best
- name: arr
- name: custom
- name: translation
translation_key: bafta_best
trakt_list: https://trakt.tv/users/maxwelldeux/lists/bafta-award-best-film
dynamic_collections:
@ -40,7 +36,6 @@ dynamic_collections:
template:
- use_year_collections
- trakt
- translation
- shared
- arr
- custom

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Cannes Golden Palm Winners:
variables:
@ -23,10 +20,9 @@ collections:
sort: Cannes !
allowed_libraries: movie
image: award/cannes/winner
translation_key: cannes_best
- name: arr
- name: custom
- name: translation
translation_key: cannes_best
trakt_list: https://trakt.tv/users/maxwelldeux/lists/cannes-film-festival-palme-d-or
dynamic_collections:
@ -40,7 +36,6 @@ dynamic_collections:
template:
- use_year_collections
- trakt
- translation
- shared
- arr
- custom

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
dynamic_collections:
Critics Choice Awards:
type: number
@ -25,7 +22,6 @@ dynamic_collections:
template:
- use_year_collections
- trakt
- translation
- shared
- arr
- custom

@ -10,9 +10,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
dynamic_collections:
Emmy Awards:
type: number

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Golden Globes Best Picture Winners:
variables:
@ -23,11 +20,10 @@ collections:
sort: Golden Globes !1
allowed_libraries: movie
image: award/golden/best_picture_winner
translation_key: golden_best
- name: arr
- name: custom
collection_order: release.desc
- name: translation
translation_key: golden_best
delete_collections_named:
- Golden Globe Best Motion Pictures
tmdb_list:
@ -43,10 +39,9 @@ collections:
sort: Golden Globes !2
allowed_libraries: movie
image: award/golden/best_director_winner
translation_key: golden_director
- name: arr
- name: custom
- name: translation
translation_key: golden_director
tmdb_list: 8235502
dynamic_collections:
@ -60,7 +55,6 @@ dynamic_collections:
template:
- use_year_collections
- imdb
- translation
- shared
- arr
- custom

@ -10,9 +10,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Oscars Best Picture Winners:
variables:
@ -22,10 +19,9 @@ collections:
sort: Oscars !1
allowed_libraries: movie
image: award/oscars/best_picture_winner
translation_key: oscars_picture
- name: arr
- name: custom
- name: translation
translation_key: oscars_picture
imdb_list: https://www.imdb.com/search/title/?groups=best_picture_winner
Oscars Best Director Winners:
@ -36,10 +32,9 @@ collections:
sort: Oscars !2
allowed_libraries: movie
image: award/oscars/best_director_winner
translation_key: oscars_director
- name: arr
- name: custom
- name: translation
translation_key: oscars_director
imdb_list: https://www.imdb.com/search/title/?groups=best_director_winner
dynamic_collections:
@ -53,7 +48,6 @@ dynamic_collections:
template:
- use_year_collections
- imdb
- translation
- shared
- arr
- custom

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Berlinale Golden Bears:
variables:
@ -22,10 +19,9 @@ collections:
- name: shared
allowed_libraries: movie
image: award/berlinale/winner
translation_key: berlinale_best
- name: arr
- name: custom
- name: translation
translation_key: berlinale_best
trakt_list: https://trakt.tv/users/maxwelldeux/lists/berlin-international-film-festival-golden-bears
César Best Film Winners:
@ -35,10 +31,9 @@ collections:
- name: shared
allowed_libraries: movie
image: award/cesar/winner
translation_key: cesar_best
- name: arr
- name: custom
- name: translation
translation_key: cesar_best
trakt_list: https://trakt.tv/users/maxwelldeux/lists/cesar-award-best-french-film
Razzies Golden Raspberry Winners:
@ -48,10 +43,9 @@ collections:
- name: shared
allowed_libraries: movie
image: award/razzies/winner
translation_key: razzie_worst
- name: arr
- name: custom
- name: translation
translation_key: razzie_worst
trakt_list: https://trakt.tv/users/hdlists/lists/razzie-awards-worst-picture-winners
Venice Golden Lions:
@ -61,8 +55,7 @@ collections:
- name: shared
allowed_libraries: movie
image: award/venice/winner
translation_key: venice_best
- name: arr
- name: custom
- name: translation
translation_key: venice_best
trakt_list: https://trakt.tv/users/maxwelldeux/lists/venice-film-festival-golden-lion

@ -10,14 +10,10 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Award Collections:
template:
- name: separator
separator: award
- name: translation
key_name: Award
translation_key: separator

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
dynamic_collections:
Independent Spirit Awards Awards:
type: number
@ -25,7 +22,6 @@ dynamic_collections:
template:
- use_year_collections
- trakt
- translation
- shared
- arr
- custom

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: 130
translations:
pmm: translations
collections:
Sundance Grand Jury Winners:
variables:
@ -23,10 +20,9 @@ collections:
sort: Sundance !1
allowed_libraries: movie
image: award/sundance/grand_jury_winner
translation_key: sundance_best
- name: arr
- name: custom
- name: translation
translation_key: sundance_best
trakt_list_details: https://trakt.tv/users/maxwelldeux/lists/sundance-film-festival-grand-jury-prize
dynamic_collections:
@ -40,7 +36,6 @@ dynamic_collections:
template:
- use_year_collections
- trakt
- translation
- shared
- arr
- custom

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "140"
translations:
pmm: translations
collections:
Actors Collections:
template:
- name: separator
separator: actor
- name: translation
key_name: Actors
translation_key: separator
@ -32,7 +28,6 @@ dynamic_collections:
template:
- tmdb_person
- smart_filter
- translation
- shared
template_variables:
tmdb_person:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "090"
translations:
pmm: translations
collections:
Audio Language Collections:
template:
- name: separator
separator: audio_language
- name: translation
key_name: Audio Language
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Other Audio
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "085"
translations:
pmm: translations
collections:
Based On... Collections:
template:
- name: separator
separator: based
- name: translation
key_name: Based On...
translation_key: separator
@ -33,7 +29,6 @@ dynamic_collections:
title_format: Based on a <<key_name>>
template:
- mdb_smart
- translation
- shared
- arr
template_variables:

@ -5,23 +5,43 @@
# https://metamanager.wiki/en/latest/defaults/both/collectionless.html #
##############################################################################
translations:
pmm: translations
templates:
collectionless:
default:
exclude_prefix:
- "!"
- "~"
summary_collectionless: <<collectionless_summary>>
name_collectionless: <<collectionless_name>>
sort_title: ~_Collectionless
collection_order: alpha
url_poster: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/collectionless.jpg
optional:
- collection_mode
- exclude
- summary_collectionless
- name_collectionless
- tmdb_movie
- tmdb_show
- tmdb_list
- tvdb_movie
- tvdb_show
- tvdb_list
- imdb_id
- imdb_list
- plex_search
- mdblist_list
- trakt_list
tmdb_movie: <<tmdb_movie>>
tmdb_show: <<tmdb_show>>
tmdb_list: <<tmdb_list>>
tvdb_movie: <<tvdb_movie>>
tvdb_show: <<tvdb_show>>
tvdb_list: <<tvmdb_list>>
imdb_id: <<imdb_id>>
imdb_list: <<imdb_list>>
plex_search: <<plex_search>>
mdblist_list: <<mdblist_list>>
trakt_list: <<trakt_list>>
translation_key: collectionless
url_poster: <<url_poster>>
collection_order: <<collection_order>>
sort_title: <<sort_title>>

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "110"
translations:
pmm: translations
collections:
Ratings Collections:
template:
- name: separator
separator: content_rating
- name: translation
key_name: Ratings
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Not Rated <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "110"
translations:
pmm: translations
collections:
Ratings Collections:
template:
- name: separator
separator: content_rating
- name: translation
key_name: Ratings
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Not Rated <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "110"
translations:
pmm: translations
collections:
Ratings Collections:
template:
- name: separator
separator: content_rating
- name: translation
key_name: Ratings
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Not Rated <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "060"
translations:
pmm: translations
collections:
Genre Collections:
template:
- name: separator
separator: genre
- name: translation
key_name: Genre
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: <<key_name>> <<library_typeU>>s
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -30,15 +30,11 @@ external_templates:
key: 4k
value: Ultra HD
translations:
pmm: translations
collections:
Resolution Collections:
template:
- name: separator
separator: resolution
- name: translation
key_name: Resolution
translation_key: separator
@ -49,12 +45,10 @@ dynamic_collections:
other_name: Other Resolutions <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,9 +10,6 @@ external_templates:
template_variables:
collection_section: "030"
translations:
pmm: translations
templates:
mdb_streaming:
optional:
@ -76,7 +73,6 @@ collections:
template:
- name: separator
separator: streaming
- name: translation
key_name: Streaming
translation_key: separator
@ -104,7 +100,6 @@ dynamic_collections:
title_format: <<key_name>> <<library_typeU>>s
template:
- mdb_streaming
- translation
- shared
- arr
template_variables:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "070"
translations:
pmm: translations
collections:
Studio Collections:
template:
- name: separator
separator: studio
- name: translation
key_name: Studio
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "070"
translations:
pmm: translations
collections:
Anime Collections:
template:
- name: separator
separator: studio
- name: translation
key_name: Studio
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "095"
translations:
pmm: translations
collections:
Subtitle Language Collections:
template:
- name: separator
separator: subtitle_language
- name: translation
key_name: Subtitle Language
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Other Subtitles
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,9 +10,6 @@ external_templates:
template_variables:
collection_section: "040"
translations:
pmm: translations
templates:
universe:
conditionals:
@ -41,7 +38,6 @@ collections:
template:
- name: separator
separator: universe
- name: translation
key_name: Universe
translation_key: separator
@ -68,7 +64,6 @@ dynamic_collections:
- universe
- arr
- custom
- translation
- shared
template_variables:
allowed_libraries:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "105"
translations:
pmm: translations
collections:
Year Collections:
template:
- name: separator
separator: year
- name: translation
key_name: Year
translation_key: separator
@ -32,7 +28,6 @@ dynamic_collections:
title_format: Best of <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
anilist:
default:
@ -39,10 +36,9 @@ collections:
template:
- name: anilist
- name: shared
translation_key: anilist_popular
- name: arr
- name: custom
- name: translation
translation_key: anilist_popular
AniList Top Rated:
variables:
@ -51,10 +47,9 @@ collections:
- name: anilist
chart: top_rated
- name: shared
translation_key: anilist_top_rated
- name: arr
- name: custom
- name: translation
translation_key: anilist_top_rated
AniList Trending:
variables:
@ -62,10 +57,9 @@ collections:
template:
- name: anilist
- name: shared
translation_key: anilist_trending
- name: arr
- name: custom
- name: translation
translation_key: anilist_trending
AniList Season:
variables:
@ -73,7 +67,6 @@ collections:
template:
- name: season
- name: shared
translation_key: anilist_season
- name: arr
- name: custom
- name: translation
translation_key: anilist_season

@ -11,11 +11,7 @@ external_templates:
collection_section: "010"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
collections:
Newly Released:
variables:
key: released
@ -25,7 +21,6 @@ collections:
search_value: <<in_the_last_released>>
in_the_last_released: 90
- name: shared
- name: translation
translation_key: basic_released
New Episodes:
@ -39,5 +34,4 @@ collections:
type: episodes
- name: shared
allowed_libraries: show
- name: translation
translation_key: basic_episodes

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
pre: "_#"
translations:
pmm: translations
templates:
flixpatrol:
default:
@ -28,7 +25,8 @@ templates:
default: <<location_<<key>>>>
conditions:
- key: apple
value: world
value: world
limit: <<limit>>
flixpatrol_top:
platform: <<platform>>
location: <<actual_location>>
@ -49,7 +47,6 @@ dynamic_collections:
title_format: <<key_name>> Top <<limit>>
template:
- flixpatrol
- translation
- shared
- arr
- custom

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
imdb_chart:
imdb_chart: <<chart>>_<<library_type>>s
@ -26,10 +23,9 @@ collections:
- name: imdb_chart
chart: popular
- name: shared
translation_key: imdb_popular
- name: arr
- name: custom
- name: translation
translation_key: imdb_popular
IMDb Top 250:
variables:
@ -38,10 +34,9 @@ collections:
- name: imdb_chart
chart: top
- name: shared
translation_key: imdb_top
- name: arr
- name: custom
- name: translation
translation_key: imdb_top
IMDb Lowest Rated:
variables:
@ -50,7 +45,6 @@ collections:
template:
- name: shared
allowed_libraries: movie
translation_key: imdb_lowest
- name: arr
- name: custom
- name: translation
translation_key: imdb_lowest

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
mal:
default:
@ -38,10 +35,9 @@ collections:
template:
- name: mal
- name: shared
translation_key: mal_popular
- name: arr
- name: custom
- name: translation
translation_key: mal_popular
MyAnimeList Favorited:
variables:
@ -50,10 +46,9 @@ collections:
- name: mal
chart: favorite
- name: shared
translation_key: mal_favorited
- name: arr
- name: custom
- name: translation
translation_key: mal_favorited
MyAnimeList Top Rated:
variables:
@ -62,10 +57,9 @@ collections:
- name: mal
chart: all
- name: shared
translation_key: mal_top
- name: arr
- name: custom
- name: translation
translation_key: mal_top
MyAnimeList Top Airing:
variables:
@ -73,10 +67,9 @@ collections:
template:
- name: mal
- name: shared
translation_key: mal_airing
- name: arr
- name: custom
- name: translation
translation_key: mal_airing
MyAnimeList Season:
variables:
@ -84,7 +77,6 @@ collections:
template:
- name: season
- name: shared
translation_key: mal_season
- name: arr
- name: custom
- name: translation
translation_key: mal_season

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
anidb:
default:
@ -30,10 +27,9 @@ collections:
template:
- name: anidb
- name: shared
translation_key: anidb_popular
- name: arr
- name: custom
- name: translation
translation_key: anidb_popular
Common Sense Selection:
variables:
@ -41,10 +37,9 @@ collections:
template:
- name: commonsense
- name: shared
translation_key: commonsense_selection
- name: arr
- name: custom
- name: translation
translation_key: commonsense_selection
StevenLu's Popular Movies:
variables:
@ -53,10 +48,9 @@ collections:
template:
- name: shared
allowed_libraries: movie
translation_key: stevenlu_popular
- name: arr
- name: custom
- name: translation
translation_key: stevenlu_popular
Top 10 Pirated Movies of the Week:
variables:
@ -65,7 +59,6 @@ collections:
template:
- name: shared
allowed_libraries: movie
translation_key: pirated_popular
- name: arr
- name: custom
- name: translation
translation_key: pirated_popular

@ -10,14 +10,10 @@ external_templates:
template_variables:
collection_section: "020"
translations:
pmm: translations
collections:
Chart Collections:
template:
- name: separator
separator: chart
- name: translation
key_name: Chart
translation_key: separator

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
tautulli:
default:
@ -34,10 +31,9 @@ collections:
- name: tautulli
type: popular
- name: shared
translation_key: tautulli_popular
- name: custom
cache_builders: 0
- name: translation
translation_key: tautulli_popular
Plex Watched:
variables:
@ -46,7 +42,6 @@ collections:
- name: tautulli
type: watched
- name: shared
translation_key: tautulli_watched
- name: custom
cache_builders: 0
- name: translation
translation_key: tautulli_watched

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
tmdb:
default:
@ -29,10 +26,9 @@ collections:
template:
- name: tmdb
- name: shared
translation_key: tmdb_popular
- name: arr
- name: custom
- name: translation
translation_key: tmdb_popular
TMDb Top Rated:
variables:
@ -41,10 +37,9 @@ collections:
- name: tmdb
chart: top_rated
- name: shared
translation_key: tmdb_top
- name: arr
- name: custom
- name: translation
translation_key: tmdb_top
TMDb Trending:
variables:
@ -53,10 +48,9 @@ collections:
- name: tmdb
chart: trending_weekly
- name: shared
translation_key: tmdb_trending
- name: arr
- name: custom
- name: translation
translation_key: tmdb_trending
TMDb Airing Today:
variables:
@ -66,10 +60,9 @@ collections:
chart: airing_today
- name: shared
allowed_libraries: show
translation_key: tmdb_airing
- name: arr
- name: custom
- name: translation
translation_key: tmdb_airing
TMDb On The Air:
variables:
@ -79,7 +72,6 @@ collections:
chart: on_the_air
- name: shared
allowed_libraries: show
translation_key: tmdb_air
- name: arr
- name: custom
- name: translation
translation_key: tmdb_air

@ -11,9 +11,6 @@ external_templates:
collection_section: "020"
image: chart/<<collection_name_encoded>>
translations:
pmm: translations
templates:
trakt:
default:
@ -30,10 +27,9 @@ collections:
template:
- name: trakt
- name: shared
translation_key: trakt_collected
- name: arr
- name: custom
- name: translation
translation_key: trakt_collected
Trakt Popular:
variables:
@ -41,10 +37,9 @@ collections:
template:
- name: trakt
- name: shared
translation_key: trakt_popular
- name: arr
- name: custom
- name: translation
translation_key: trakt_popular
Trakt Recommended:
variables:
@ -52,10 +47,9 @@ collections:
template:
- name: trakt
- name: shared
translation_key: trakt_recommended
- name: arr
- name: custom
- name: translation
translation_key: trakt_recommended
Trakt Trending:
variables:
@ -63,10 +57,9 @@ collections:
template:
- name: trakt
- name: shared
translation_key: trakt_trending
- name: arr
- name: custom
- name: translation
translation_key: trakt_trending
Trakt Watched:
variables:
@ -74,7 +67,6 @@ collections:
template:
- name: trakt
- name: shared
translation_key: trakt_watched
- name: arr
- name: custom
- name: translation
translation_key: trakt_watched
- name: custom

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "110"
translations:
pmm: translations
collections:
Ratings Collections:
template:
- name: separator
separator: content_rating
- name: translation
key_name: Ratings
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Not Rated <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -11,9 +11,6 @@ external_templates:
template_variables:
collection_section: "080"
translations:
pmm: translations
collections:
Country Collections:
template:
@ -30,12 +27,10 @@ dynamic_collections:
other_name: Other Countries
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "100"
translations:
pmm: translations
collections:
Decade Collections:
template:
- name: separator
separator: decade
- name: translation
key_name: Decade
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: Best of <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "150"
translations:
pmm: translations
collections:
Directors Collections:
template:
- name: separator
separator: director
- name: translation
key_name: Directors
translation_key: separator
@ -32,7 +28,6 @@ dynamic_collections:
template:
- tmdb_person
- smart_filter
- translation
- shared
template_variables:
tmdb_person:

@ -26,6 +26,7 @@ templates:
radarr_monitor_<<key>>: <<radarr_monitor>>
collection_order_<<key>>: <<collection_order>>
optional:
- name_<<key>>
- summary_<<key>>
- movie
- name_mapping
@ -38,6 +39,7 @@ templates:
- item_radarr_tag
- radarr_monitor
- url_poster_<<key>>
name: <<name_<<key>>>>
summary: <<summary_<<key>>>>
cache_builders: 1
minimum_items: <<minimum_items>>

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "160"
translations:
pmm: translations
collections:
Producers Collections:
template:
- name: separator
separator: producer
- name: translation
key_name: Producers
translation_key: separator
@ -32,7 +28,6 @@ dynamic_collections:
template:
- tmdb_person
- smart_filter
- translation
- shared
template_variables:
tmdb_person:

@ -8,9 +8,6 @@
external_templates:
pmm: templates
translations:
pmm: translations
templates:
holiday:
default:
@ -27,6 +24,7 @@ templates:
mdblist_list_<<key>>: <<mdblist_list>>
summary_<<key>>: <<seasonal_summary>>
name_<<key>>: <<seasonal_name>>
emoji: ""
emoji_<<key>>: <<emoji>>
optional:
- schedule
@ -36,6 +34,11 @@ templates:
- imdb_list
- trakt_list
- mdblist_list
- summary_<<key>>
- name_<<key>>
- key_name
- translation_key
- limit
smart_label:
sort_by: <<sort_by_<<key>>>>
limit: <<limit_<<key>>>>
@ -50,8 +53,12 @@ templates:
trakt_list: <<trakt_list_<<key>>>>
mdblist_list: <<mdblist_list_<<key>>>>
cache_builders: 1
translation_key: <<translation_key>>
key_name: <<key_name>>
summary: <<summary_<<key>>>>
name: <<emoji_<<key>>>><<name_<<key>>>>
name: <<name_<<key>>>>
limit: <<limit_<<key>>>>
translation_prefix: <<emoji_<<key>>>>
collections:
Seasonal Collections:
@ -59,7 +66,6 @@ collections:
- name: separator
separator: seasonal
use_separator: false
- name: translation
key_name: Seasonal
translation_key: separator

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "170"
translations:
pmm: translations
collections:
Writers Collections:
template:
- name: separator
separator: writer
- name: translation
key_name: Writers
translation_key: separator
@ -32,7 +28,6 @@ dynamic_collections:
template:
- tmdb_person
- smart_filter
- translation
- shared
template_variables:
tmdb_person:

@ -8,9 +8,6 @@
external_templates:
pmm: templates
translations:
pmm: translations
templates:
playlist:
default:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "110"
translations:
pmm: translations
collections:
Ratings Collections:
template:
- name: separator
separator: content_rating
- name: translation
key_name: Ratings
translation_key: separator
@ -29,12 +25,10 @@ dynamic_collections:
other_name: Not Rated <<library_typeU>>s
template:
- smart_filter
- translation
- shared
other_template:
- other_collection
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -11,15 +11,11 @@ external_templates:
template_variables:
collection_section: "080"
translations:
pmm: translations
collections:
Country Collections:
template:
- name: separator
separator: country
- name: translation
key_name: Country
translation_key: separator
@ -30,12 +26,10 @@ dynamic_collections:
other_name: Other Countries
template:
- filter
- translation
- shared
other_template:
- other_collection
- filter
- translation
- shared
template_variables:
filter_term:

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "100"
translations:
pmm: translations
collections:
Decade Collections:
template:
- name: separator
separator: decade
- name: translation
key_name: Decade
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: Best of <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -27,6 +27,7 @@ templates:
collection_order_<<key>>: <<collection_order>>
url_poster_<<key>>: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/franchise/<<key_name_encoded>>.jpg
optional:
- name_<<key>>
- summary_<<key>>
- name_mapping
- sort_title
@ -39,6 +40,7 @@ templates:
- sonarr_tag
- item_sonarr_tag
- sonarr_monitor
name: <<name_<<key>>>>
summary: <<summary_<<key>>>>
minimum_items: <<minimum_items>>
tmdb_show: <<value>>

@ -10,15 +10,11 @@ external_templates:
template_variables:
collection_section: "050"
translations:
pmm: translations
collections:
Network Collections:
template:
- name: separator
separator: network
- name: translation
key_name: Network
translation_key: separator
@ -28,7 +24,6 @@ dynamic_collections:
title_format: <<key_name>>
template:
- smart_filter
- translation
- shared
template_variables:
search_term:

@ -5,12 +5,18 @@ templates:
sep_style: orig
collection_section: "00"
url_poster_<<key>>: https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Images/master/separators/<<sep_style>>/<<separator>>.jpg
summary_<<key>>: <<summary_format>>
name_<<key>>: <<name_format>>
optional:
- use_separator
- collection_mode
- placeholder_tmdb_movie
- placeholder_tvdb_show
- placeholder_imdb_id
- summary_format
- name_format
- key_name
- translation_key
conditionals:
use_blank:
default: true
@ -29,6 +35,10 @@ templates:
imdb_id: <<placeholder_imdb_id>>
blank_collection: <<use_blank>>
url_poster: <<url_poster_<<key>>>>
translation_key: <<translation_key>>
key_name: <<key_name>>
summary: <<summary_<<key>>>>
name: <<name_<<key>>>>
shared:
default:
@ -46,6 +56,8 @@ templates:
visible_home_<<key>>: <<visible_home>>
visible_shared_<<key>>: <<visible_shared>>
minimum_items_<<key>>: <<minimum_items>>
summary_<<key>>: <<summary_format>>
name_<<key>>: <<name_format>>
optional:
- use_<<key>>
- allowed_libraries
@ -60,9 +72,19 @@ templates:
- ignore_ids
- ignore_imdb_ids
- minimum_items
- summary_format
- name_format
- key_name
- translation_key
- limit
run_definition:
- <<use_<<key>>>>
- <<allowed_libraries>>
translation_key: <<translation_key>>
key_name: <<key_name>>
summary: <<summary_<<key>>>>
name: <<name_<<key>>>>
limit: <<limit>>
ignore_ids: <<ignore_ids>>
ignore_imdb_ids: <<ignore_imdb_ids>>
trakt_list: <<trakt_list>>
@ -214,13 +236,3 @@ templates:
optional:
- use_year_collections
run_definition: <<use_year_collections>>
translation:
default:
summary_<<key>>: <<<<translation_key>>_summary>>
name_<<key>>: <<<<translation_key>>_name>>
optional:
- <<translation_key>>_summary
- <<translation_key>>_name
summary: <<summary_<<key>>>>
name: <<name_<<key>>>>

@ -44,7 +44,7 @@ ignored_details = [
"delete_not_scheduled", "tmdb_person", "build_collection", "collection_order", "builder_level", "overlay",
"validate_builders", "libraries", "sync_to_users", "exclude_users", "collection_name", "playlist_name", "name",
"blank_collection", "allowed_library_types", "run_definition", "delete_playlist", "ignore_blank_results", "only_run_on_create",
"delete_collections_named", "tmdb_person_offset", "append_label"
"delete_collections_named", "tmdb_person_offset", "append_label", "key_name", "translation_key", "translation_prefix"
]
details = [
"ignore_ids", "ignore_imdb_ids", "server_preroll", "changes_webhooks", "collection_filtering", "collection_mode", "limit", "url_theme",
@ -182,6 +182,7 @@ class CollectionBuilder:
self.data = data
self.library = library
self.libraries = []
self.summaries = {}
self.playlist = library is None
self.overlay = overlay
methods = {m.lower(): m for m in self.data}
@ -235,6 +236,101 @@ class CollectionBuilder:
logger.separator(f"Validating {self.mapping_name} Attributes", space=False, border=False)
self.builder_language = self.metadata.language
if "language" in methods:
logger.debug("")
logger.debug("Validating Method: language")
if not self.data[methods["language"]]:
raise Failed(f"{self.Type} Error: language attribute is blank")
logger.debug(f"Value: {self.data[methods['language']]}")
if str(self.data[methods["language"]]).lower() not in self.config.GitHub.translation_keys:
logger.warning(f"Config Error: Language: {str(self.data[methods['language']]).lower()} Not Found using {self.builder_language}. Options: {', '.join(self.config.GitHub.translation_keys)}")
else:
self.builder_language = str(self.data[methods["language"]]).lower()
self.name = None
if "translation_key" in methods:
english = self.config.GitHub.translation_yaml("en")
translations = self.config.GitHub.translation_yaml(self.builder_language)
logger.debug("")
logger.debug("Validating Method: translation_key")
if not self.data[methods["translation_key"]]:
raise Failed(f"{self.Type} Error: translation_key attribute is blank")
logger.debug(f"Value: {self.data[methods['translation_key']]}")
translation_key = str(self.data[methods["translation_key"]])
if translation_key not in english["collections"]:
raise Failed(f"{self.Type} Error: translation_key: {translation_key} is invalid")
key_name = ""
if "key_name" in methods:
logger.debug("")
logger.debug("Validating Method: key_name")
if not self.data[methods["key_name"]]:
raise Failed(f"{self.Type} Error: key_name attribute is blank")
logger.debug(f"Value: {self.data[methods['key_name']]}")
key_name = str(self.data[methods["key_name"]])
if self.builder_language != "en":
key_name_key = None
for k, v in english["key_names"]:
if key_name == v:
key_name_key = k
break
if key_name_key and key_name_key in translations["key_names"]:
key_name = translations["key_names"][key_name_key]
t_limit = self.data[methods["limit"]] if "limit" in methods and self.data[methods["limit"]] else 0
lib_type = self.library.type.lower() if self.library else "item"
en_vars = {k: v[lib_type] for k, v in english["variables"].items() if lib_type in v and v[lib_type]}
t_vars = {k: v[lib_type] for k, v in translations["variables"].items() if lib_type in v and v[lib_type]}
for k, v in en_vars.items():
if k not in t_vars:
t_vars[k] = v
def apply_vars(input_str, var_set):
input_str = str(input_str)
for ik, iv in var_set.items():
if f"<<{ik}>>" in input_str:
input_str = input_str.replace(f"<<{ik}>>", iv)
if f"<<{ik}U>>" in input_str:
input_str = input_str.replace(f"<<{ik}U>>", str(iv).capitalize())
if "<<key_name>>" in input_str:
input_str = input_str.replace("<<key_name>>", key_name)
if "<<limit>>" in input_str:
input_str = input_str.replace("<<limit>>", t_limit)
return input_str
self.name = None
summary = None
english_name = apply_vars(english["collections"][translation_key]["name"], en_vars)
self.name = english_name
if translation_key in translations["collections"]:
logger.info(translations["collections"][translation_key])
if "name" in translations["collections"][translation_key]:
self.name = apply_vars(translations["collections"][translation_key]["name"], t_vars)
if "summary" in translations["collections"][translation_key]:
summary = apply_vars(translations["collections"][translation_key]["summary"], t_vars)
if not summary:
summary = apply_vars(english["collections"][translation_key]["summary"], en_vars)
if summary:
self.summaries["translation"] = summary
if "translation_prefix" in methods:
logger.debug("")
logger.debug("Validating Method: translation_prefix")
if not self.data[methods["translation_prefix"]]:
raise Failed(f"{self.Type} Error: translation_prefix attribute is blank")
logger.debug(f"Value: {self.data[methods['translation_prefix']]}")
self.name = f"{self.data[methods['translation_prefix']]}{self.name}"
english_name = f"{self.data[methods['translation_prefix']]}{english_name}"
if self.name != english_name:
if "delete_collections_named" not in methods:
self.data["delete_collections_named"] = english_name
methods["delete_collections_named"] = "delete_collections_named"
if not isinstance(self.data[methods["delete_collections_named"]], list):
self.data[methods["delete_collections_named"]] = [self.data[methods["delete_collections_named"]]]
if english_name not in self.data[methods["delete_collections_named"]]:
self.data[methods["delete_collections_named"]].append(english_name)
if "name" in methods:
logger.debug("")
logger.debug("Validating Method: name")
@ -242,7 +338,8 @@ class CollectionBuilder:
raise Failed(f"{self.Type} Error: name attribute is blank")
logger.debug(f"Value: {self.data[methods['name']]}")
self.name = str(self.data[methods["name"]])
else:
if not self.name:
self.name = self.mapping_name
if self.playlist:
@ -435,7 +532,6 @@ class CollectionBuilder:
self.remove_item_map = {}
self.posters = {}
self.backgrounds = {}
self.summaries = {}
self.schedule = ""
self.limit = 0
self.beginning_count = 0
@ -2708,6 +2804,7 @@ class CollectionBuilder:
logger.separator(f"Updating Details of {self.name} {self.Type}", space=False, border=False)
logger.info("")
if "summary" in self.summaries: summary = ("summary", self.summaries["summary"])
elif "translation" in self.summaries: summary = ("translation", self.summaries["translation"])
elif "tmdb_description" in self.summaries: summary = ("tmdb_description", self.summaries["tmdb_description"])
elif "tvdb_description" in self.summaries: summary = ("tvdb_description", self.summaries["tvdb_description"])
elif "letterboxd_description" in self.summaries: summary = ("letterboxd_description", self.summaries["letterboxd_description"])
@ -2881,7 +2978,7 @@ class CollectionBuilder:
plex_search = {"sort_by": self.custom_sort}
if self.builder_level in ["season", "episode"]:
plex_search["type"] = f"{self.builder_level}s"
plex_search["any"] = {f"{self.builder_level}_collection": self.name}
plex_search["any"] = {f"{self.builder_level}_collection": self.name} # noqa
else:
plex_search["any"] = {"collection": self.name}
try:

@ -4,16 +4,20 @@ from modules.util import Failed
logger = util.logger
raw_url = "https://raw.githubusercontent.com"
base_url = "https://api.github.com"
pmm_base = f"{base_url}/repos/meisnate12/Plex-Meta-Manager"
configs_raw_url = "https://raw.githubusercontent.com/meisnate12/Plex-Meta-Manager-Configs"
configs_raw_url = f"{raw_url}/meisnate12/Plex-Meta-Manager-Configs"
class GitHub:
def __init__(self, config):
self.config = config
self.images_raw_url = "https://raw.githubusercontent.com/meisnate12/PMM-Image-Sets/master/"
self.images_raw_url = f"{raw_url}/meisnate12/PMM-Image-Sets/master/"
self.translation_url = f"{raw_url}/meisnate12/PMM-Translations/master/defaults/"
self._configs_url = None
self._config_tags = []
self._translation_keys = []
self._translations = {}
def get_top_tree(self, repo):
if not str(repo).startswith("/"):
@ -68,3 +72,21 @@ class GitHub:
):
self._configs_url = f"{configs_raw_url}/v{self.config.version[1]}/"
return self._configs_url
@property
def translation_keys(self):
if not self._translation_keys:
tree, repo = self.get_top_tree("meisnate12/PMM-Translations")
self._translation_keys = [tk[:-4] for tk in self.get_tree(tree["defaults"]["url"])]
return self._translation_keys
def translation_yaml(self, translation_key):
if translation_key not in self._translations:
url = f"{self.translation_url}{translation_key}.yml"
yaml = util.YAML(input_data=self.config.get(url).content).data
output = {"collections": {}, "key_name": {}, "variables": {}}
for k in output:
if k in yaml:
output[k] = yaml[k]
self._translations[translation_key] = output
return self._translations[translation_key]

@ -18,6 +18,7 @@ class Library(ABC):
self.Overlays = None
self.Notifiarr = None
self.collections = []
self.collection_names = []
self.metadatas = []
self.queues = {}
self.image_styles = {}

@ -70,6 +70,12 @@ class DataFile:
self.type = file_type
self.path = path
self.temp_vars = temp_vars
self.language = "en"
if "language" in self.temp_vars and self.temp_vars["language"]:
if self.temp_vars["language"].lower() not in self.config.GitHub.translation_keys:
logger.warning(f"Config Error: Language: {self.temp_vars['language'].lower()} Not Found using en. Options: {', '.join(self.config.GitHub.translation_keys)}")
else:
self.language = self.temp_vars["language"].lower()
self.asset_directory = asset_directory
self.data_type = ""
self.templates = {}

@ -665,7 +665,7 @@ class Operations:
else:
if "PMM" not in labels:
unmanaged_collections.append(col)
if col.title not in self.library.collections:
if col.title not in self.library.collection_names:
unconfigured_collections.append(col)
if self.library.show_unmanaged and len(unmanaged_collections) > 0:

@ -668,9 +668,11 @@ def run_collection(config, library, metadata, requested_collections):
try:
builder = CollectionBuilder(config, metadata, mapping_name, collection_attrs, library=library, extra=output_str)
library.stats["names"].append(builder.name)
if builder.build_collection:
library.collection_names.append(builder.name)
logger.info("")
logger.separator(f"Running {mapping_name} Collection", space=False, border=False)
logger.separator(f"Running {builder.name} Collection", space=False, border=False)
if len(builder.schedule) > 0:
logger.info(builder.schedule)

Loading…
Cancel
Save