mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-10 06:54:21 +00:00
added critic_rating and audience_rating to plex_search and filters
This commit is contained in:
parent
0839d2bb44
commit
1f9e976eb3
2 changed files with 32 additions and 16 deletions
|
@ -16,6 +16,7 @@ method_alias = {
|
|||
"directors": "director",
|
||||
"genres": "genre",
|
||||
"labels": "label",
|
||||
"rating": "critic_rating",
|
||||
"studios": "studio",
|
||||
"networks": "network",
|
||||
"producers": "producer",
|
||||
|
@ -124,7 +125,8 @@ all_filters = [
|
|||
"tmdb_vote_count.gte", "tmdb_vote_count.lte",
|
||||
"duration.gte", "duration.lte",
|
||||
"original_language", "original_language.not",
|
||||
"rating.gte", "rating.lte",
|
||||
"audience_rating.gte", "audience_rating.lte",
|
||||
"critic_rating.gte", "critic_rating.lte",
|
||||
"studio", "studio.not",
|
||||
"subtitle_language", "subtitle_language.not",
|
||||
"video_resolution", "video_resolution.not",
|
||||
|
@ -542,11 +544,13 @@ class CollectionBuilder:
|
|||
return default_in
|
||||
if method_name == "filters":
|
||||
for filter_name, filter_data in method_data.items():
|
||||
if filter_name.lower() in method_alias or (filter_name.lower().endswith(".not") and filter_name.lower()[:-4] in method_alias):
|
||||
filter_method = (method_alias[filter_name.lower()[:-4]] + filter_name.lower()[-4:]) if filter_name.lower().endswith(".not") else method_alias[filter_name.lower()]
|
||||
modifier = filter_name[-4:].lower()
|
||||
method = filter_name[:-4].lower() if modifier in [".not", ".lte", ".gte"] else filter_name.lower()
|
||||
if method in method_alias:
|
||||
filter_method = f"{method_alias[method]}{modifier}"
|
||||
logger.warning(f"Collection Warning: {filter_name} filter will run as {filter_method}")
|
||||
else:
|
||||
filter_method = filter_name.lower()
|
||||
filter_method = f"{method}{modifier}"
|
||||
if filter_method in movie_only_filters and self.library.is_show:
|
||||
raise Failed(f"Collection Error: {filter_method} filter only works for movie libraries")
|
||||
elif filter_data is None:
|
||||
|
@ -557,7 +561,7 @@ class CollectionBuilder:
|
|||
valid_data = util.check_number(filter_data, f"{filter_method} filter", minimum=1)
|
||||
elif filter_method in ["year.gte", "year.lte"]:
|
||||
valid_data = util.check_year(filter_data, current_year, f"{filter_method} filter")
|
||||
elif filter_method in ["rating.gte", "rating.lte"]:
|
||||
elif filter_method in ["audience_rating.gte", "audience_rating.lte", "critic_rating.gte", "critic_rating.lte"]:
|
||||
valid_data = util.check_number(filter_data, f"{filter_method} filter", number_type="float", minimum=0.1, maximum=10)
|
||||
elif filter_method in ["originally_available.gte", "originally_available.lte"]:
|
||||
valid_data = util.check_date(filter_data, f"{filter_method} filter")
|
||||
|
@ -639,7 +643,7 @@ class CollectionBuilder:
|
|||
elif (search == "decade" and modifier in [""]) \
|
||||
or (search == "year" and modifier in [".greater", ".less"]):
|
||||
searches[search_final] = [util.check_year(search_data, current_year, search_final)]
|
||||
elif search in ["added", "originally_available"] and modifier in [".before", ".after"]:
|
||||
elif search in ["added", "originally_available"] and modifier in ["", ".not", ".before", ".after"]:
|
||||
searches[search_final] = [util.check_date(search_data, search_final, return_string=True, plex_date=True)]
|
||||
elif search in ["duration", "rating"] and modifier in [".greater", ".less"]:
|
||||
searches[search_final] = [util.check_number(search_data, search_final, minimum=0)]
|
||||
|
@ -648,7 +652,7 @@ class CollectionBuilder:
|
|||
elif (search in ["title", "studio"] and modifier not in ["", ".and", ".not", ".begins", ".ends"]) \
|
||||
or (search in ["actor", "audio_language", "collection", "content_rating", "country", "director", "genre", "label", "network", "producer", "subtitle_language", "writer"] and modifier not in ["", ".and", ".not"]) \
|
||||
or (search in ["resolution", "decade"] and modifier not in [""]) \
|
||||
or (search in ["added", "originally_available"] and modifier not in [".before", ".after"]) \
|
||||
or (search in ["added", "originally_available"] and modifier not in ["", ".not", ".before", ".after"]) \
|
||||
or (search in ["duration", "rating"] and modifier not in [".greater", ".less"]) \
|
||||
or (search in ["year"] and modifier not in ["", ".not", ".greater", ".less"]):
|
||||
raise Failed(f"Collection Error: modifier: {modifier} not supported with the {search} plex search attribute")
|
||||
|
|
|
@ -19,7 +19,8 @@ search_translation = {
|
|||
"subtitle_language": "subtitleLanguage",
|
||||
"added": "addedAt",
|
||||
"originally_available": "originallyAvailableAt",
|
||||
"rating": "userRating"
|
||||
"audience_rating": "audienceRating",
|
||||
"critic_rating": "rating"
|
||||
}
|
||||
episode_sorting_options = {"default": "-1", "oldest": "0", "newest": "1"}
|
||||
keep_episodes_options = {"all": 0, "5_latest": 5, "3_latest": 3, "latest": 1, "past_3": -3, "past_7": -7, "past_30": -30}
|
||||
|
@ -62,7 +63,8 @@ searches = [
|
|||
"added.before", "added.after",
|
||||
"originally_available.before", "originally_available.after",
|
||||
"duration.greater", "duration.less",
|
||||
"rating.greater", "rating.less",
|
||||
"audience_rating.greater", "audience_rating.less",
|
||||
"critic_rating.greater", "critic_rating.less",
|
||||
"year", "year.not", "year.greater", "year.less"
|
||||
]
|
||||
movie_only_searches = [
|
||||
|
@ -406,21 +408,31 @@ class PlexAPI:
|
|||
updated = False
|
||||
|
||||
edits = {}
|
||||
def add_edit(name, current, group, alias, key=None, value=None):
|
||||
def add_edit(name, current, group, alias, key=None, value=None, var_type="str"):
|
||||
if value or name in alias:
|
||||
if value or group[alias[name]]:
|
||||
if key is None: key = name
|
||||
if value is None: value = group[alias[name]]
|
||||
if str(current) != str(value):
|
||||
edits[f"{key}.value"] = value
|
||||
edits[f"{key}.locked"] = 1
|
||||
logger.info(f"Detail: {name} updated to {value}")
|
||||
try:
|
||||
if var_type == "date":
|
||||
final_value = util.check_date(value, name, return_string=True, plex_date=True)
|
||||
elif var_type == "float":
|
||||
final_value = util.check_number(value, name, number_type="float", minimum=0, maximum=10)
|
||||
else:
|
||||
final_value = value
|
||||
if str(current) != str(final_value):
|
||||
edits[f"{key}.value"] = final_value
|
||||
edits[f"{key}.locked"] = 1
|
||||
logger.info(f"Detail: {name} updated to {final_value}")
|
||||
except Failed as ee:
|
||||
logger.error(ee)
|
||||
else:
|
||||
logger.error(f"Metadata Error: {name} attribute is blank")
|
||||
add_edit("title", item.title, meta, methods, value=title)
|
||||
add_edit("sort_title", item.titleSort, meta, methods, key="titleSort")
|
||||
add_edit("originally_available", str(item.originallyAvailableAt)[:-9], meta, methods, key="originallyAvailableAt", value=originally_available)
|
||||
add_edit("rating", item.rating, meta, methods, value=rating)
|
||||
add_edit("originally_available", str(item.originallyAvailableAt)[:-9], meta, methods, key="originallyAvailableAt", value=originally_available, var_type="date")
|
||||
add_edit("critic_rating", item.rating, meta, methods, value=rating, key="rating", var_type="float")
|
||||
add_edit("audience_rating", item.audienceRating, meta, methods, key="audienceRating", var_type="float")
|
||||
add_edit("content_rating", item.contentRating, meta, methods, key="contentRating")
|
||||
add_edit("original_title", item.originalTitle, meta, methods, key="originalTitle", value=original_title)
|
||||
add_edit("studio", item.studio, meta, methods, value=studio)
|
||||
|
|
Loading…
Reference in a new issue