From 2726b2f20adb58e682b09d2c211e428962b9ff13 Mon Sep 17 00:00:00 2001 From: meisnate12 Date: Wed, 3 Jan 2024 08:24:48 -0500 Subject: [PATCH] [74] updated all awards to use imdb_awards --- VERSION | 2 +- defaults/award/bafta.yml | 17 +++---- defaults/award/cannes.yml | 17 +++---- defaults/award/choice.yml | 19 ++------ defaults/award/emmy.yml | 11 ++--- defaults/award/golden.yml | 41 ++++++++++++----- defaults/award/oscars.yml | 30 ++++++++----- defaults/award/other_award.yml | 24 ++++++++-- defaults/award/spirit.yml | 11 ++--- defaults/award/sundance.yml | 17 +++---- defaults/templates.yml | 2 +- modules/builder.py | 2 +- modules/meta.py | 81 +++++++++++++--------------------- 13 files changed, 140 insertions(+), 134 deletions(-) diff --git a/VERSION b/VERSION index f2f8ea69..c9672760 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.19.1-develop73 +1.19.1-develop74 diff --git a/defaults/award/bafta.yml b/defaults/award/bafta.yml index c5548e63..e2951ca6 100644 --- a/defaults/award/bafta.yml +++ b/defaults/award/bafta.yml @@ -23,15 +23,20 @@ collections: translation_key: bafta_best - name: arr - name: custom - trakt_list: https://trakt.tv/users/maxwelldeux/lists/bafta-award-best-film + imdb_award: + event_id: ev0000123 + event_year: all + category_filter: best film + winning: true dynamic_collections: BAFTA Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000123 + starting: latest-5 + ending: latest title_format: BAFTA <> template: - use_year_collections @@ -40,10 +45,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000123 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/cannes.yml b/defaults/award/cannes.yml index 43f87e1b..f51174a7 100644 --- a/defaults/award/cannes.yml +++ b/defaults/award/cannes.yml @@ -23,15 +23,20 @@ collections: translation_key: cannes_best - name: arr - name: custom - letterboxd_list: https://letterboxd.com/brsan/list/cannes-palme-dor-winners/ + imdb_award: + event_id: ev0000147 + event_year: all + award_filter: palme d'or + winning: true dynamic_collections: Cannes Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000147 + starting: latest-5 + ending: latest title_format: Cannes <> template: - use_year_collections @@ -40,10 +45,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000147 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/choice.yml b/defaults/award/choice.yml index 0fc36f32..02927d58 100644 --- a/defaults/award/choice.yml +++ b/defaults/award/choice.yml @@ -13,11 +13,12 @@ external_templates: dynamic_collections: Critics Choice Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000133 + starting: latest-5 + ending: latest title_format: Critics Choice Awards <> template: - use_year_collections @@ -26,10 +27,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000133 - event_year: - default: <> winning: default: true collection_order: @@ -38,13 +35,5 @@ dynamic_collections: default: award/choice/<> translation_key: default: choice_year - url: - default: critic-s - 2019: critics - 2018: critics - 2017: critics - 2016: critics - 2015: critics - 2014: critics dynamic: default: true \ No newline at end of file diff --git a/defaults/award/emmy.yml b/defaults/award/emmy.yml index f5f22d1c..adc7e8fb 100644 --- a/defaults/award/emmy.yml +++ b/defaults/award/emmy.yml @@ -12,11 +12,12 @@ external_templates: dynamic_collections: Emmy Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000223 + starting: latest-5 + ending: latest title_format: Emmys <> template: - use_year_collections @@ -25,10 +26,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000223 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/golden.yml b/defaults/award/golden.yml index 7330fc15..eae2eac9 100644 --- a/defaults/award/golden.yml +++ b/defaults/award/golden.yml @@ -23,13 +23,25 @@ collections: translation_key: golden_picture - name: arr - name: custom - collection_order: release.desc delete_collections_named: - Golden Globe Best Motion Pictures - tmdb_list: - - 8191011 # Drama - - 8191022 # Musical or Comedy - - 8235497 # Animation + imdb_award: + event_id: ev0000292 + event_year: all + category_filter: + - best motion picture - animated + - best motion picture - comedy + - best motion picture - comedy or musical + - best motion picture - drama + - best motion picture - foreign language + - best motion picture - musical + - best motion picture - musical or comedy + - best motion picture - non-english language + - best motion picture, animated + - best motion picture, drama + - best motion picture, musical or comedy + - best motion picture, non-english language + winning: true Golden Globes Best Director Winners: variables: @@ -43,14 +55,23 @@ collections: - name: arr - name: custom tmdb_list: 8235502 + imdb_award: + event_id: ev0000292 + event_year: all + category_filter: + - best director + - best director - motion picture + - best director, motion picture + winning: true dynamic_collections: Golden Globes Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000292 + starting: latest-5 + ending: latest title_format: Golden Globe <> template: - use_year_collections @@ -59,10 +80,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000292 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/oscars.yml b/defaults/award/oscars.yml index bc4e155a..20b4028e 100644 --- a/defaults/award/oscars.yml +++ b/defaults/award/oscars.yml @@ -22,8 +22,13 @@ collections: translation_key: oscars_picture - name: arr - name: custom - imdb_search: - event.winning: oscar_picture + imdb_award: + event_id: ev0000003 + event_year: all + category_filter: + - best picture + - best motion picture of the year + winning: true Oscars Best Director Winners: variables: @@ -36,16 +41,23 @@ collections: translation_key: oscars_director - name: arr - name: custom - imdb_search: - event.winning: oscar_director + imdb_award: + event_id: ev0000003 + event_year: all + category_filter: + - best director + - best director, comedy picture + - best director, dramatic picture + winning: true dynamic_collections: Oscars Winners Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-6 - ending: current_year-1 + event_id: ev0000003 + starting: latest-5 + ending: latest title_format: Oscars Winners <> template: - use_year_collections @@ -54,10 +66,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000003 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/other_award.yml b/defaults/award/other_award.yml index 623b8846..389acc7e 100644 --- a/defaults/award/other_award.yml +++ b/defaults/award/other_award.yml @@ -22,7 +22,11 @@ collections: translation_key: berlinale_best - name: arr - name: custom - trakt_list: https://trakt.tv/users/maxwelldeux/lists/berlin-international-film-festival-golden-bears + imdb_award: + event_id: ev0000091 + event_year: all + category_filter: best film + winning: true César Best Film Winners: variables: @@ -34,7 +38,11 @@ collections: translation_key: cesar_best - name: arr - name: custom - trakt_list: https://trakt.tv/users/maxwelldeux/lists/cesar-award-best-french-film + imdb_award: + event_id: ev0000157 + event_year: all + category_filter: best film (meilleur film) + winning: true Razzies Golden Raspberry Winners: variables: @@ -46,7 +54,11 @@ collections: translation_key: razzie_worst - name: arr - name: custom - trakt_list: https://trakt.tv/users/hdlists/lists/razzie-awards-worst-picture-winners + imdb_award: + event_id: ev0000558 + event_year: all + category_filter: worst picture + winning: true Venice Golden Lions: variables: @@ -58,4 +70,8 @@ collections: translation_key: venice_best - name: arr - name: custom - trakt_list: https://trakt.tv/users/maxwelldeux/lists/venice-film-festival-golden-lion + imdb_award: + event_id: ev0000681 + event_year: all + award_filter: golden lion + winning: true diff --git a/defaults/award/spirit.yml b/defaults/award/spirit.yml index e054be1f..e9cdf149 100644 --- a/defaults/award/spirit.yml +++ b/defaults/award/spirit.yml @@ -13,11 +13,12 @@ external_templates: dynamic_collections: Independent Spirit Awards Awards: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000349 + starting: latest-5 + ending: latest title_format: Independent Spirit Awards <> template: - use_year_collections @@ -26,10 +27,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000349 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/award/sundance.yml b/defaults/award/sundance.yml index 05d589a0..9c4fcdaa 100644 --- a/defaults/award/sundance.yml +++ b/defaults/award/sundance.yml @@ -23,15 +23,20 @@ collections: translation_key: sundance_best - name: arr - name: custom - trakt_list_details: https://trakt.tv/users/maxwelldeux/lists/sundance-film-festival-grand-jury-prize + imdb_award: + event_id: ev0000631 + event_year: all + award_filter: grand jury prize + winning: true dynamic_collections: Sundance Film Festival: - type: number + type: imdb_awards sync: true data: - starting: current_year-5 - ending: current_year + event_id: ev0000631 + starting: latest-5 + ending: latest title_format: Sundance Film Festival <> template: - use_year_collections @@ -40,10 +45,6 @@ dynamic_collections: - arr - custom template_variables: - event_id: - default: ev0000631 - event_year: - default: <> winning: default: true collection_order: diff --git a/defaults/templates.yml b/defaults/templates.yml index eda7bef1..9d21ad78 100644 --- a/defaults/templates.yml +++ b/defaults/templates.yml @@ -153,7 +153,7 @@ templates: - winning imdb_award: event_id: <> - event_year: <> + event_year: <> award_filter: <> category_filter: <> winning: <> diff --git a/modules/builder.py b/modules/builder.py index 2e2b8cf0..d7fdd5e8 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -143,7 +143,7 @@ smart_url_invalid = ["filters", "run_again", "sync_mode", "show_filtered", "show custom_sort_builders = [ "plex_search", "plex_watchlist", "plex_pilots", "tmdb_list", "tmdb_popular", "tmdb_now_playing", "tmdb_top_rated", "tmdb_trending_daily", "tmdb_trending_weekly", "tmdb_discover", "reciperr_list", "trakt_chart", "trakt_userlist", - "tvdb_list", "imdb_chart", "imdb_list", "imdb_search", "imdb_watchlist", "stevenlu_popular", "anidb_popular", + "tvdb_list", "imdb_chart", "imdb_list", "imdb_award", "imdb_search", "imdb_watchlist", "stevenlu_popular", "anidb_popular", "tmdb_upcoming", "tmdb_airing_today", "tmdb_on_the_air", "trakt_list", "trakt_watchlist", "trakt_collection", "trakt_trending", "trakt_popular", "trakt_boxoffice", "trakt_collected_daily", "trakt_collected_weekly", "trakt_collected_monthly", "trakt_collected_yearly", "trakt_collected_all", "trakt_recommendations", diff --git a/modules/meta.py b/modules/meta.py index 75ed435d..508173d8 100644 --- a/modules/meta.py +++ b/modules/meta.py @@ -999,59 +999,38 @@ class MetadataFile(DataFile): extra_template_vars["event_id"] = event_id if event_id not in self.config.IMDb.events_validation: raise Failed(f"Config Error: {map_name} data only specific Event IDs work with imdb_awards. Event Options: [{', '.join([k for k in self.config.IMDb.events_validation])}]") - current_year = datetime.now().year - _, year_options = self.config.IMDb.get_event_years(event_id) - min_year = None - max_year = None - for option in year_options: - year = int(option.split("-")[0] if "-" in option else option) - if min_year is None or year < min_year: - min_year = year - if max_year is None or year > max_year: - max_year = year - - if "starting" in award_methods: - starting_value = str(dynamic_data[award_methods["starting"]]) - if not starting_value: - raise Failed(f"Config Error: {map_name} data starting attribute is blank") - if starting_value.startswith("first"): - year_values = starting_value.split("+") - starting = None - - - - - #and str(dynamic_data[award_methods["starting"]]).startswith("current"): - year_values = str(dynamic_data[award_methods["starting"]]).split("-") - try: - starting = current_year - (0 if len(year_values) == 1 else int(year_values[1].strip())) - except ValueError: - raise Failed(f"Config Error: {map_name} data starting attribute modifier invalid '{year_values[1]}'") - else: - try: - starting = util.parse("Config", "starting", dynamic_data, parent=f"{map_name} data", methods=award_methods, datatype="int", minimum=min_year) - except Failed: - raise Failed(f"Config Error: {map_name} data starting attribute invalid '{year_values[1]}'") - if not starting: - starting = current_year - if "ending" in award_methods and str(dynamic_data[award_methods["ending"]]).startswith("current_year"): - year_values = str(dynamic_data[award_methods["ending"]]).split("-") - try: - ending = current_year - (0 if len(year_values) == 1 else int(year_values[1].strip())) - except ValueError: - raise Failed(f"Config Error: {map_name} data ending attribute modifier invalid '{year_values[1]}'") - else: - ending = util.parse("Config", "ending", dynamic_data, parent=f"{map_name} data", methods=award_methods, datatype="int", default=0, minimum=1) - if not ending: - ending = current_year - 5 - if starting > ending: - raise Failed(f"Config Error: {map_name} data ending must be greater than starting") - _, year_options = self.config.IMDb.get_event_years(event_id) - for option in year_options: + _, event_years = self.config.IMDb.get_event_years(event_id) + year_options = [event_years[len(event_years) - i] for i in range(1, len(event_years) + 1)] + + def get_position(attr, pos_add=0): + if attr not in award_methods: + return 0 if attr == "starting" else len(year_options) + position_value = str(dynamic_data[award_methods[attr]]) + if not position_value: + raise Failed(f"Config Error: {map_name} data {attr} attribute is blank") + if position_value.startswith(("first", "latest")): + int_values = position_value.split("+" if position_value.startswith("first") else "-") + try: + if len(int_values) == 1: + return 0 if position_value.startswith("first") else len(year_options) + else: + return int(int_values[1].strip()) * (-1 if position_value.startswith("latest") else 1) + except ValueError: + raise Failed(f"Config Error: {map_name} data {attr} attribute modifier invalid '{int_values[1]}'") + elif position_value in year_options: + return year_options.index(position_value) + pos_add + else: + raise Failed(f"Config Error: {map_name} data {attr} attribute invalid: {position_value}") + + found_options = year_options[get_position("starting"):get_position("ending")] + + if not found_options: + raise Failed(f"Config Error: {map_name} data starting/ending range found no valid events") + for option in event_years: all_keys[option] = option - if option not in exclude and starting <= int(option.split("-")[0] if "-" in option else option) <= ending: + if option not in exclude and option in found_options: auto_list[option] = option - default_template = {"imdb_award": {"event_id": ">", "event_year": "<>", "winning": True}} + default_template = {"imdb_award": {"event_id": "<>", "event_year": "<>", "winning": True}} elif auto_type == "number": if "data" not in methods: raise Failed(f"Config Error: {map_name} data attribute not found")