Skip to content

Commit

Permalink
[1] Update imdb_search (#2259)
Browse files Browse the repository at this point in the history
  • Loading branch information
meisnate12 authored and actions-user committed Oct 8, 2024
1 parent 726b0d7 commit 5fb7cf3
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 47 deletions.
44 changes: 2 additions & 42 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,45 +1,5 @@
# Requirements Update (requirements will need to be reinstalled)
Added tenacity requirement at 9.0.0
Update lxml requirement to 5.3.0
Update pathvalidate requirement to 3.2.1
Update pillow requirement to 10.4.0
Update PlexAPI requirement to 4.15.16
Update psutil requirement to 6.0.0
Update setuptools requirement to 74.0.0
Update tmdbapis requirement to 1.2.21

# Removed Features

# New Features
Introducing the [Kometa Blog](https://blog.kometa.wiki) - a new home for all kometa-related news stories, ranging from showcasing our community creations to providing you with important updates.
Added [`letterboxd_user_lists`](https://kometa.wiki/en/latest/files/dynamic_types/#letterboxd-user-lists) Dynamic Collection Type
Added `item_analyze` item detail to analyze each item in a collection

# 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
Fixed #2150; change xmen list to a new one
Added `A Quiet Place: Day One` to the `A Quiet Place` collection in the `franchise` Defaults file
Add `minimum_items_<<key>>` to universe Default file
Added workaround to `Streaming` for TMDb issue with TMDb Discover
Added the `character` search option to the `imdb_search` builder

# Bug Fixes
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`
Fixes #2135 AniDB Builder type conversion error
Fixed #2169 Add handling for blank secrets
Fixed #2176 `clean_bundles`, `optimize`, and `empty_trash` not working as global attributes
Fixed #2186 `total_runtime` will now trigger an overlay update
Fixed #2195 an image on the docs was a dead link
Fixes sort order of resolution collections
Fixes #2228 ".any" not accepted for a variety of imdb_search parameters
Fixes `streaming` defaults adding and removing items randomly
Fixes missing TMDb Discover parameters
Fixes `imdb_chart` error when using `trending_india`
Adds error information to help with #2201
Added warning to TMDb Discover builder regarding ongoing bug with using `popularity.desc` as sort order
Various other Minor Fixes
Fixed the `cast` search option for the `imdb_search` builder
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.1.0
2.1.0-build1
1 change: 1 addition & 0 deletions docs/files/builders/imdb.md
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ The `sync_mode: sync` and `collection_order: custom` Setting are recommended sin
| `cast` | Item must have all the given cast members. Can be a comma-separated list.<br>**Options:** Any IMDb Person ID (ex. `nm0000138`) |
| `cast.any` | Item must have any of the given cast members. Can be a comma-separated list.<br>**Options:** Any IMDb Person ID (ex. `nm0000138`) |
| `cast.not` | Item must not have any of the given cast members. Can be a comma-separated list.<br>**Options:** Any IMDb Person ID (ex. `nm0000138`) |
| `character` | Item must have any of the given character listed in its credits. Can be a comma-separated list.<br>**Options:** Any String |
| `runtime.gte` | Item must have a Runtime greater than or equal to the given number.<br>**Options:** Any Integer greater than `0`<br>**Example:** `1000` |
| `runtime.lte` | Item must have a Runtime less than or equal to the given number.<br>**Options:** Any Integer greater than `0`<br>**Example:** `1000` |
| `adult` | Include adult titles in the search results.<br>**Options:** `true`/`false` |
Expand Down
2 changes: 1 addition & 1 deletion modules/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -1629,7 +1629,7 @@ def _imdb(self, method_name, method_data):
countries.append(str(country))
if countries:
new_dictionary[lower_method] = countries
elif search_attr in ["keyword", "language", "alternate_version", "crazy_credit", "location", "goof", "plot", "quote", "soundtrack", "trivia"]:
elif search_attr in ["keyword", "language", "alternate_version", "crazy_credit", "location", "goof", "plot", "quote", "soundtrack", "trivia", "character"]:
new_dictionary[lower_method] = util.parse(self.Type, search_method, search_data, datatype="lowerlist", parent=method_name)
elif search_attr == "cast":
casts = []
Expand Down
10 changes: 7 additions & 3 deletions modules/imdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@
"series", "series.not",
"list", "list.any", "list.not",
"language", "language.any", "language.not", "language.primary",
"popularity.gte", "popularity.lte",
"popularity.gte", "popularity.lte",
"character",
"cast", "cast.any", "cast.not",
"runtime.gte", "runtime.lte",
"adult",
Expand Down Expand Up @@ -303,7 +304,7 @@ def _graphql_json(self, data, list_type):
"first": data["limit"] if "limit" in data and 0 < data["limit"] < page_limit else page_limit,
}

def check_constraint(bases, mods, constraint, lower="", translation=None, range_name=None):
def check_constraint(bases, mods, constraint, lower="", translation=None, range_name=None, obj_name=None):
if not isinstance(bases, list):
bases = [bases]
if range_name and not isinstance(range_name, list):
Expand All @@ -318,6 +319,8 @@ def check_constraint(bases, mods, constraint, lower="", translation=None, range_
if full_attr in data:
if range_name is not None:
range_data[imdb_mod] = data[full_attr]
elif obj_name is not None:
out[constraint][f"{imdb_mod}{lower}"] = [{obj_name: d} for d in data[full_attr]]
elif translation is None:
out[constraint][f"{imdb_mod}{lower}"] = data[full_attr]
elif isinstance(translation, tuple):
Expand Down Expand Up @@ -392,7 +395,8 @@ def check_constraint(bases, mods, constraint, lower="", translation=None, range_
check_constraint("country", [("", "all"), ("any", "any"), ("not", "exclude"), ("origin", "anyPrimary")], "originCountryConstraint", lower="Countries")
check_constraint("keyword", [("", "all"), ("any", "any"), ("not", "exclude")], "keywordConstraint", lower="Keywords", translation=(" ", "-"))
check_constraint("language", [("", "all"), ("any", "any"), ("not", "exclude"), ("primary", "anyPrimary")], "languageConstraint", lower="Languages")
check_constraint("cast", [("", "all"), ("any", "any"), ("not", "exclude")], "creditedNameConstraint", lower="NameIds")
check_constraint("cast", [("", "all"), ("any", "any"), ("not", "exclude")], "titleCreditsConstraint", lower="Credits", obj_name="nameId")
check_constraint("character", [("", "any")], "characterConstraint", lower="CharacterNames")
check_constraint("runtime", [("gte", "min"), ("lte", "max")], "runtimeConstraint", range_name="runtimeRangeMinutes")

if "adult" in data and data["adult"]:
Expand Down

0 comments on commit 5fb7cf3

Please sign in to comment.