diff --git a/VERSION b/VERSION index 960279e5..0e6595b9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.17.0-develop16 +1.17.0-develop17 diff --git a/docs/metadata/builders/plex.md b/docs/metadata/builders/plex.md index f0a27c5f..f14835a9 100644 --- a/docs/metadata/builders/plex.md +++ b/docs/metadata/builders/plex.md @@ -262,26 +262,28 @@ No number search can take multiple values. ### Number Attributes -| Number Search | Description | Movie
Libraries | Show
Libraries | Music
Libraries | -|:----------------------|:--------------------------------------------------------------------------------------------|:------------------:|:-----------------:|:------------------:| -| `duration` | Uses the duration attribute to match using minutes
**Minimum:** `0` | ✅ | ❌ | ❌ | -| `plays` | Uses the plays attribute to match
**Minimum:** `0` | ✅ | ✅ | ❌ | -| `episode_plays` | Uses the Episode's plays attribute to match
**Minimum:** `0` | ❌ | ✅ | ❌ | -| `critic_rating` | Uses the critic rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | -| `audience_rating` | Uses the audience rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | -| `user_rating` | Uses the user rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | -| `episode_user_rating` | Uses the user rating attribute of the show's episodes to match
**Range:** `0.0` - `10.0` | ❌ | ✅ | ❌ | -| `year` | Uses the year attribute to match
**Minimum:** `0` | ✅ | ✅ | ❌ | -| `episode_year` | Uses the Episode's year attribute to match
**Minimum:** `0` | ❌ | ✅ | ❌ | -| `album_year` | Uses the Album's year attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | -| `album_decade` | Uses the Album's decade attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | -| `album_plays` | Uses the Album's plays attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | -| `track_plays` | Uses the Track's plays attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | -| `track_skips` | Uses the Track's skips attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | -| `artist_user_rating` | Uses the Artist's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | -| `album_user_rating` | Uses the Album's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | -| `album_critic_rating` | Uses the Album's critic rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | -| `track_user_rating` | Uses the Track's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | +| Number Search | Description | Movie
Libraries | Show
Libraries | Music
Libraries | +|:--------------------------|:------------------------------------------------------------------------------------------------|:------------------:|:-----------------:|:------------------:| +| `duration` | Uses the duration attribute to match using minutes
**Minimum:** `0` | ✅ | ❌ | ❌ | +| `plays` | Uses the plays attribute to match
**Minimum:** `0` | ✅ | ✅ | ❌ | +| `episode_plays` | Uses the Episode's plays attribute to match
**Minimum:** `0` | ❌ | ✅ | ❌ | +| `critic_rating` | Uses the critic rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | +| `audience_rating` | Uses the audience rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | +| `user_rating` | Uses the user rating attribute to match
**Range:** `0.0` - `10.0` | ✅ | ✅ | ❌ | +| `episode_user_rating` | Uses the user rating attribute of the show's episodes to match
**Range:** `0.0` - `10.0` | ❌ | ✅ | ❌ | +| `episode_critic_rating` | Uses the critic rating attribute of the show's episodes to match
**Range:** `0.0` - `10.0` | ❌ | ✅ | ❌ | +| `episode_audience_rating` | Uses the audience rating attribute of the show's episodes to match
**Range:** `0.0` - `10.0` | ❌ | ✅ | ❌ | +| `year` | Uses the year attribute to match
**Minimum:** `0` | ✅ | ✅ | ❌ | +| `episode_year` | Uses the Episode's year attribute to match
**Minimum:** `0` | ❌ | ✅ | ❌ | +| `album_year` | Uses the Album's year attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | +| `album_decade` | Uses the Album's decade attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | +| `album_plays` | Uses the Album's plays attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | +| `track_plays` | Uses the Track's plays attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | +| `track_skips` | Uses the Track's skips attribute to match
**Minimum:** `0` | ❌ | ❌ | ✅ | +| `artist_user_rating` | Uses the Artist's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | +| `album_user_rating` | Uses the Album's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | +| `album_critic_rating` | Uses the Album's critic rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | +| `track_user_rating` | Uses the Track's user rating attribute to match
**Range:** `0.0` - `10.0` | ❌ | ❌ | ✅ | ## Boolean Searches diff --git a/modules/config.py b/modules/config.py index 9d77eb57..32a0c074 100644 --- a/modules/config.py +++ b/modules/config.py @@ -731,7 +731,7 @@ class ConfigFile: error_check("mass_trakt_rating_update", "Trakt") lib_vars = {} - if "template_variables" in lib and lib["template_variables"] and isinstance(lib["template_variables"], dict): + if lib and "template_variables" in lib and lib["template_variables"] and isinstance(lib["template_variables"], dict): lib_vars = lib["template_variables"] try: diff --git a/modules/plex.py b/modules/plex.py index 718d9fe7..805a8ea0 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -25,6 +25,8 @@ search_translation = { "network": "show.network", "critic_rating": "rating", "audience_rating": "audienceRating", + "episode_critic_rating": "episode.rating", + "episode_audience_rating": "episode.audienceRating", "user_rating": "userRating", "episode_user_rating": "episode.userRating", "content_rating": "contentRating", @@ -239,6 +241,8 @@ show_only_searches = [ "episode_last_played", "episode_last_played.not", "episode_last_played.before", "episode_last_played.after", "episode_plays.gt", "episode_plays.gte", "episode_plays.lt", "episode_plays.lte", "episode_user_rating.gt", "episode_user_rating.gte", "episode_user_rating.lt", "episode_user_rating.lte", + "episode_critic_rating.gt", "episode_critic_rating.gte", "episode_critic_rating.lt", "episode_critic_rating.lte", + "episode_audience_rating.gt", "episode_audience_rating.gte", "episode_audience_rating.lt", "episode_audience_rating.lte", "episode_year", "episode_year.not", "episode_year.gt", "episode_year.gte", "episode_year.lt", "episode_year.lte", "unplayed_episodes", "episode_unplayed", "episode_duplicate", "episode_progress", "episode_unmatched", "show_unmatched", ] @@ -258,8 +262,8 @@ date_modifiers = ["", ".not", ".before", ".after"] year_attributes = ["decade", "year", "episode_year", "album_year", "album_decade"] number_attributes = ["plays", "episode_plays", "album_plays", "track_plays", "track_skips"] + year_attributes float_attributes = [ - "user_rating", "episode_user_rating", "critic_rating", "audience_rating", "duration", - "artist_user_rating", "album_user_rating", "album_critic_rating", "track_user_rating" + "user_rating", "episode_user_rating", "critic_rating", "episode_critic_rating", "audience_rating", "episode_audience_rating", + "duration", "artist_user_rating", "album_user_rating", "album_critic_rating", "track_user_rating" ] number_modifiers = [".gt", ".gte", ".lt", ".lte"] search_display = {"added": "Date Added", "release": "Release Date", "hdr": "HDR", "progress": "In Progress", "episode_progress": "Episode In Progress"} @@ -779,6 +783,8 @@ class Plex(Library): logger.warning(f"Plex Warning: {item.title} has no Season 1 Episode 1 ") elif method == "plex_search": logger.info(f"Processing {data[1]}") + if self.config.trace_mode: + logger.debug(data[2]) items = self.get_filter_items(data[2]) elif method == "plex_collectionless": good_collections = []