diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index 7e758495..25aabcb2 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -67,6 +67,7 @@ diiivoycolor DIR dir DiskStation +DisneyToon dockerfile dockerfiles DockerHub diff --git a/.github/workflows/validate-pull.yml b/.github/workflows/validate-pull.yml index de0a854b..a806e1b6 100644 --- a/.github/workflows/validate-pull.yml +++ b/.github/workflows/validate-pull.yml @@ -56,7 +56,7 @@ jobs: done - name: Run Spellcheck - uses: rojopolis/spellcheck-github-actions@0.38.0 + uses: rojopolis/spellcheck-github-actions@0.40.0 docker-build-pull: runs-on: ubuntu-latest diff --git a/CHANGELOG b/CHANGELOG index 4c01dded..c7ba319c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,10 @@ # Requirements Update (requirements will need to be reinstalled) -Added tenacity requirement at 8.4.2 +Added tenacity requirement at 9.0.0 +Update lxml requirement to 5.3.0 Update pillow requirement to 10.4.0 -Update PlexAPI requirement to 4.15.14 +Update PlexAPI requirement to 4.15.15 Update psutil requirement to 6.0.0 -Update setuptools requirement to 70.2.0 +Update setuptools requirement to 72.1.0 # Removed Features @@ -12,6 +13,7 @@ Added [`letterboxd_user_lists`](https://kometa.wiki/en/latest/files/dynamic_type # Updates F1 session naming improvements +Added new studios : Disney Television Animation, DisneyToon Studios, Dynamic Planning, Film4 Productions, Golden Harvest, Hungry Man, Screen Gems, Shaw Brothers, Studio Live, The Stone Quarry # Defaults @@ -20,6 +22,9 @@ Fixed multiple anime `int()` Errors Fixed #2100 `verify_ssl` wasn't working when downloading images Fixed an issue with `delete_collections` where items were being deleted if they only matched one criteria vs all criteria Fixed `imdb_watchlist` -Fix #2150; change xmen list to a new one +Fixes #2135 AniDB Builder type conversion error +Fixed #2150; change xmen list to a new one +Fixed #2169 Add handling for blank secrets +Fixed #2176 `clean_bundles`, `optimize`, and `empty_trash` not working as global attributes Various other Minor Fixes diff --git a/VERSION b/VERSION index 040aef51..786f3619 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.2-build27 +2.0.2-build28 diff --git a/defaults/both/studio.yml b/defaults/both/studio.yml index 648f28af..e6ff7bb9 100644 --- a/defaults/both/studio.yml +++ b/defaults/both/studio.yml @@ -301,11 +301,14 @@ dynamic_collections: - DC Comics - Dimension Films - Dino De Laurentiis Company + - Disney Television Animation + - DisneyToon Studios - Don Simpson Jerry Bruckheimer Films - Doozer - Dreams Salon Entertainment Culture - DreamWorks Studios - DreamWorks Pictures + - Dynamic Planning - Eleventh Hour Films - EMJAG Productions - Endeavor Content @@ -317,6 +320,7 @@ dynamic_collections: - Exposure Labs - Fandango - Fields Entertainment + - Film4 Productions - FilmDistrict - FilmNation Entertainment - Flynn Picture Company @@ -332,6 +336,7 @@ dynamic_collections: - Gary Sanchez Productions - Gaumont - Generator Entertainment + - Golden Harvest - Gracie Films - Green Hat Films - Grindstone Entertainment Group @@ -344,6 +349,7 @@ dynamic_collections: - HBO - Heyday Films - Hughes Entertainment + - Hungry Man - Hurwitz & Schlossberg Productions - Hyperobject Industries - Icon Entertainment International @@ -435,11 +441,13 @@ dynamic_collections: - Scion Films - Scott Free Productions - Sculptor Media + - Screen Gems - Sean Daniel Company - Searchlight Pictures - Secret Hideout - See-Saw Films - Serendipity Pictures + - Shaw Brothers - Show East - Showtime Networks - Sil-Metropole Organisation @@ -461,6 +469,7 @@ dynamic_collections: - Studio 8 - Studio Babelsberg - Studio Dragon + - Studio Live - STX Entertainment - Summit Entertainment - Syfy @@ -477,6 +486,7 @@ dynamic_collections: - The Littlefield Company - The Mark Gordon Company - The Sea Change Project + - The Stone Quarry - The Weinstein Company - Tim Burton Productions - TOHO diff --git a/defaults/overlays/images/studio/bigger/Disney Television Animation.png b/defaults/overlays/images/studio/bigger/Disney Television Animation.png new file mode 100644 index 00000000..4913b3ef Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Disney Television Animation.png differ diff --git a/defaults/overlays/images/studio/bigger/DisneyToon Studios.png b/defaults/overlays/images/studio/bigger/DisneyToon Studios.png new file mode 100644 index 00000000..7a8047b1 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/DisneyToon Studios.png differ diff --git a/defaults/overlays/images/studio/bigger/Dynamic Planning.png b/defaults/overlays/images/studio/bigger/Dynamic Planning.png new file mode 100644 index 00000000..2e0a30ac Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Dynamic Planning.png differ diff --git a/defaults/overlays/images/studio/bigger/Film4 Productions.png b/defaults/overlays/images/studio/bigger/Film4 Productions.png new file mode 100644 index 00000000..6dbc539f Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Film4 Productions.png differ diff --git a/defaults/overlays/images/studio/bigger/Golden Harvest.png b/defaults/overlays/images/studio/bigger/Golden Harvest.png new file mode 100644 index 00000000..d41493c5 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Golden Harvest.png differ diff --git a/defaults/overlays/images/studio/bigger/Hungry Man.png b/defaults/overlays/images/studio/bigger/Hungry Man.png new file mode 100644 index 00000000..f902c501 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Hungry Man.png differ diff --git a/defaults/overlays/images/studio/bigger/Screen Gems.png b/defaults/overlays/images/studio/bigger/Screen Gems.png new file mode 100644 index 00000000..7881e365 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Screen Gems.png differ diff --git a/defaults/overlays/images/studio/bigger/Shaw Brothers.png b/defaults/overlays/images/studio/bigger/Shaw Brothers.png new file mode 100644 index 00000000..1b5a20f3 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Shaw Brothers.png differ diff --git a/defaults/overlays/images/studio/bigger/Studio Live.png b/defaults/overlays/images/studio/bigger/Studio Live.png new file mode 100644 index 00000000..fa87b5ec Binary files /dev/null and b/defaults/overlays/images/studio/bigger/Studio Live.png differ diff --git a/defaults/overlays/images/studio/bigger/The Stone Quarry.png b/defaults/overlays/images/studio/bigger/The Stone Quarry.png new file mode 100644 index 00000000..e4fd34c2 Binary files /dev/null and b/defaults/overlays/images/studio/bigger/The Stone Quarry.png differ diff --git a/defaults/overlays/images/studio/standard/Disney Television Animation.png b/defaults/overlays/images/studio/standard/Disney Television Animation.png new file mode 100644 index 00000000..25c9dc5d Binary files /dev/null and b/defaults/overlays/images/studio/standard/Disney Television Animation.png differ diff --git a/defaults/overlays/images/studio/standard/DisneyToon Studios.png b/defaults/overlays/images/studio/standard/DisneyToon Studios.png new file mode 100644 index 00000000..0a8bf801 Binary files /dev/null and b/defaults/overlays/images/studio/standard/DisneyToon Studios.png differ diff --git a/defaults/overlays/images/studio/standard/Dynamic Planning.png b/defaults/overlays/images/studio/standard/Dynamic Planning.png new file mode 100644 index 00000000..1900801d Binary files /dev/null and b/defaults/overlays/images/studio/standard/Dynamic Planning.png differ diff --git a/defaults/overlays/images/studio/standard/Film4 Productions.png b/defaults/overlays/images/studio/standard/Film4 Productions.png new file mode 100644 index 00000000..be388cd2 Binary files /dev/null and b/defaults/overlays/images/studio/standard/Film4 Productions.png differ diff --git a/defaults/overlays/images/studio/standard/Golden Harvest.png b/defaults/overlays/images/studio/standard/Golden Harvest.png new file mode 100644 index 00000000..6ff7792c Binary files /dev/null and b/defaults/overlays/images/studio/standard/Golden Harvest.png differ diff --git a/defaults/overlays/images/studio/standard/Hungry Man.png b/defaults/overlays/images/studio/standard/Hungry Man.png new file mode 100644 index 00000000..8227e897 Binary files /dev/null and b/defaults/overlays/images/studio/standard/Hungry Man.png differ diff --git a/defaults/overlays/images/studio/standard/Screen Gems.png b/defaults/overlays/images/studio/standard/Screen Gems.png new file mode 100644 index 00000000..96caeb09 Binary files /dev/null and b/defaults/overlays/images/studio/standard/Screen Gems.png differ diff --git a/defaults/overlays/images/studio/standard/Shaw Brothers.png b/defaults/overlays/images/studio/standard/Shaw Brothers.png new file mode 100644 index 00000000..60539f64 Binary files /dev/null and b/defaults/overlays/images/studio/standard/Shaw Brothers.png differ diff --git a/defaults/overlays/images/studio/standard/Studio Live.png b/defaults/overlays/images/studio/standard/Studio Live.png new file mode 100644 index 00000000..d6a95abc Binary files /dev/null and b/defaults/overlays/images/studio/standard/Studio Live.png differ diff --git a/defaults/overlays/images/studio/standard/The Stone Quarry.png b/defaults/overlays/images/studio/standard/The Stone Quarry.png new file mode 100644 index 00000000..8ee61e99 Binary files /dev/null and b/defaults/overlays/images/studio/standard/The Stone Quarry.png differ diff --git a/defaults/overlays/studio.yml b/defaults/overlays/studio.yml index c72cb781..4f662fee 100644 --- a/defaults/overlays/studio.yml +++ b/defaults/overlays/studio.yml @@ -847,6 +847,12 @@ overlays: Dino De Laurentiis Company: template: [name: standard, name: studios] + Disney Television Animation: + template: [name: standard, name: studios] + + DisneyToon Studios: + template: [name: standard, name: studios] + Don Simpson Jerry Bruckheimer Films: template: [name: standard, name: studios] @@ -862,6 +868,9 @@ overlays: DreamWorks Pictures: template: [name: standard, name: studios] + Dynamic Planning: + template: [name: standard, name: studios] + Eleventh Hour Films: template: [name: standard, name: studios] @@ -895,6 +904,9 @@ overlays: Fields Entertainment: template: [name: standard, name: studios] + Film4 Productions: + template: [name: standard, name: studios] + FilmDistrict: template: [name: standard, name: studios] @@ -940,6 +952,9 @@ overlays: Generator Entertainment: template: [name: standard, name: studios] + Golden Harvest: + template: [name: standard, name: studios] + Gracie Films: template: [name: standard, name: studios] @@ -976,6 +991,9 @@ overlays: Hughes Entertainment: template: [name: standard, name: studios] + Hungry Man: + template: [name: standard, name: studios] + Hurwitz & Schlossberg Productions: template: [name: standard, name: studios] @@ -1249,6 +1267,9 @@ overlays: Sculptor Media: template: [name: standard, name: studios] + Screen Gems: + template: [name: standard, name: studios] + Sean Daniel Company: template: [name: standard, name: studios] @@ -1264,6 +1285,9 @@ overlays: Serendipity Pictures: template: [name: standard, name: studios] + Shaw Brothers: + template: [name: standard, name: studios] + Show East: template: [name: standard, name: studios] @@ -1327,6 +1351,9 @@ overlays: Studio Dragon: template: [name: standard, name: studios] + Studio Live: + template: [name: standard, name: studios] + STX Entertainment: template: [name: standard, {name: studios, search: [STX Entertainment, STX Films]}] @@ -1375,6 +1402,9 @@ overlays: The Sea Change Project: template: [name: standard, name: studios] + The Stone Quarry: + template: [name: standard, name: studios] + The Weinstein Company: template: [name: standard, name: studios] diff --git a/modules/builder.py b/modules/builder.py index ddb51c82..7b5291fa 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -2290,16 +2290,19 @@ class CollectionBuilder: logger.warning(e) continue elif id_type == "tmdb" and not self.parts_collection: - input_id = int(input_id) - if input_id not in self.ignore_ids: - found = False - for pl_library in self.libraries: - if input_id in pl_library.movie_map: - found = True - rating_keys = pl_library.movie_map[input_id] - break - if not found and input_id not in self.missing_movies: - self.missing_movies.append(input_id) + if not isinstance(input_id, list): + input_id = [input_id] + for in_id in input_id: + in_id = int(in_id) + if in_id not in self.ignore_ids: + found = False + for pl_library in self.libraries: + if in_id in pl_library.movie_map: + found = True + rating_keys = pl_library.movie_map[in_id] + break + if not found and in_id not in self.missing_movies: + self.missing_movies.append(in_id) elif id_type == "tvdb_season" and (self.builder_level == "season" or self.playlist): tvdb_id, season_num = input_id.split("_") tvdb_id = int(tvdb_id) diff --git a/modules/config.py b/modules/config.py index a556eaaa..9eb638d0 100644 --- a/modules/config.py +++ b/modules/config.py @@ -327,21 +327,18 @@ class ConfigFile: def check_next(next_data): if isinstance(next_data, dict): - for d in next_data: - out = check_next(next_data[d]) - if out: - next_data[d] = out + return {k: check_next(v) for k, v in next_data.items()} elif isinstance(next_data, list): - for d in next_data: - check_next(d) + return [check_next(d) for d in next_data] else: - for secret, secret_value in self.secrets.items(): + for secret, secret_value in secrets.items(): for test in [secret, secret.upper().replace("-", "_")]: if f"<<{test}>>" in str(next_data): return str(next_data).replace(f"<<{test}>>", secret_value) + if str(next_data).startswith("<<") and str(next_data).endswith(">>"): + return None return next_data - if self.secrets: - check_next(self.data) + check_next(self.data) def check_for_attribute(data, attribute, parent=None, test_list=None, translations=None, default=None, do_print=True, default_is_none=False, req_default=False, var_type="str", throw=False, save=True, int_min=0, int_max=None): endline = "" @@ -1165,13 +1162,15 @@ class ConfigFile: params["plex"][attr] = check_for_attribute(lib, attr, parent="plex", var_type="bool", save=False, throw=True) except Failed: test_attr = lib["plex"][attr] if "plex" in lib and attr in lib["plex"] and lib["plex"][attr] else self.general["plex"][attr] - params["plex"][attr] = False if test_attr is not True and test_attr is not False: + params["plex"][attr] = False try: util.schedule_check(attr, test_attr, current_time, self.run_hour) params["plex"][attr] = True except NotScheduled: logger.info(f"Skipping Operation Not Scheduled for {test_attr}") + else: + params["plex"][attr] = test_attr if params["plex"]["url"].lower() == "env": params["plex"]["url"] = self.env_plex_url diff --git a/requirements.txt b/requirements.txt index 685d9413..2bcbefa4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,16 +1,16 @@ arrapi==1.4.13 GitPython==3.1.43 -lxml==5.2.2 +lxml==5.3.0 num2words==0.5.13 pathvalidate==3.2.0 pillow==10.4.0 -PlexAPI==4.15.14 +PlexAPI==4.15.15 psutil==6.0.0 python-dotenv==1.0.1 python-dateutil==2.9.0.post0 requests==2.32.3 -tenacity==8.4.2 +tenacity==9.0.0 ruamel.yaml==0.18.6 schedule==1.2.2 -setuptools==70.2.0 +setuptools==72.1.0 tmdbapis==1.2.16 \ No newline at end of file