mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-09-20 06:22:07 +00:00
#174 added mass_audience_rating_update
This commit is contained in:
parent
48c211887c
commit
60a2e34a6f
3 changed files with 54 additions and 16 deletions
|
@ -1284,7 +1284,7 @@ class CollectionBuilder:
|
||||||
|
|
||||||
if len(edits) > 0:
|
if len(edits) > 0:
|
||||||
logger.debug(edits)
|
logger.debug(edits)
|
||||||
self.library.collection_edit_query(collection, edits)
|
self.library.edit_query(collection, edits)
|
||||||
logger.info("Details: have been updated")
|
logger.info("Details: have been updated")
|
||||||
|
|
||||||
if self.library.asset_directory:
|
if self.library.asset_directory:
|
||||||
|
|
|
@ -47,7 +47,7 @@ sonarr_series_types = {
|
||||||
"daily": "Episodes released daily or less frequently that use year-month-day (2017-05-25)",
|
"daily": "Episodes released daily or less frequently that use year-month-day (2017-05-25)",
|
||||||
"anime": "Episodes released using an absolute episode number"
|
"anime": "Episodes released using an absolute episode number"
|
||||||
}
|
}
|
||||||
mass_genre_update_options = {"tmdb": "Use TMDb Metadata", "omdb": "Use IMDb Metadata through OMDb"}
|
mass_update_options = {"tmdb": "Use TMDb Metadata", "omdb": "Use IMDb Metadata through OMDb"}
|
||||||
library_types = {"movie": "For Movie Libraries", "show": "For Show Libraries"}
|
library_types = {"movie": "For Movie Libraries", "show": "For Show Libraries"}
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
|
@ -367,13 +367,20 @@ class Config:
|
||||||
params["save_missing"] = check_for_attribute(lib, "save_missing", var_type="bool", default=self.general["save_missing"], do_print=False, save=False)
|
params["save_missing"] = check_for_attribute(lib, "save_missing", var_type="bool", default=self.general["save_missing"], do_print=False, save=False)
|
||||||
|
|
||||||
if lib and "mass_genre_update" in lib and lib["mass_genre_update"]:
|
if lib and "mass_genre_update" in lib and lib["mass_genre_update"]:
|
||||||
params["mass_genre_update"] = check_for_attribute(lib, "mass_genre_update", test_list=mass_genre_update_options, default_is_none=True, save=False)
|
params["mass_genre_update"] = check_for_attribute(lib, "mass_genre_update", test_list=mass_update_options, default_is_none=True, save=False)
|
||||||
|
if self.OMDb is None and params["mass_genre_update"] == "omdb":
|
||||||
|
params["mass_genre_update"] = None
|
||||||
|
logger.error("Config Error: mass_genre_update cannot be omdb without a successful OMDb Connection")
|
||||||
else:
|
else:
|
||||||
params["mass_genre_update"] = None
|
params["mass_genre_update"] = None
|
||||||
|
|
||||||
if params["mass_genre_update"] == "omdb" and self.OMDb is None:
|
if lib and "mass_audience_rating_update" in lib and lib["mass_audience_rating_update"]:
|
||||||
params["mass_genre_update"] = None
|
params["mass_audience_rating_update"] = check_for_attribute(lib, "mass_audience_rating_update", test_list=mass_update_options, default_is_none=True, save=False)
|
||||||
logger.error("Config Error: mass_genre_update cannot be omdb without a successful OMDb Connection")
|
if self.OMDb is None and params["mass_audience_rating_update"] == "omdb":
|
||||||
|
params["mass_audience_rating_update"] = None
|
||||||
|
logger.error("Config Error: mass_audience_rating_update cannot be omdb without a successful OMDb Connection")
|
||||||
|
else:
|
||||||
|
params["mass_audience_rating_update"] = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
params["metadata_path"] = check_for_attribute(lib, "metadata_path", var_type="path", default=os.path.join(default_dir, f"{library_name}.yml"), throw=True)
|
params["metadata_path"] = check_for_attribute(lib, "metadata_path", var_type="path", default=os.path.join(default_dir, f"{library_name}.yml"), throw=True)
|
||||||
|
@ -468,7 +475,7 @@ class Config:
|
||||||
logger.info("")
|
logger.info("")
|
||||||
movie_map, show_map = self.map_guids(library)
|
movie_map, show_map = self.map_guids(library)
|
||||||
if not test and not resume_from:
|
if not test and not resume_from:
|
||||||
if library.mass_genre_update:
|
if library.mass_update:
|
||||||
self.mass_metadata(library, movie_map, show_map)
|
self.mass_metadata(library, movie_map, show_map)
|
||||||
try: library.update_metadata(self.TMDb, test)
|
try: library.update_metadata(self.TMDb, test)
|
||||||
except Failed as e: logger.error(e)
|
except Failed as e: logger.error(e)
|
||||||
|
@ -688,6 +695,36 @@ class Config:
|
||||||
display_str += f"{', ' if len(display_str) > 0 else ''}+{genre}"
|
display_str += f"{', ' if len(display_str) > 0 else ''}+{genre}"
|
||||||
if len(display_str) > 0:
|
if len(display_str) > 0:
|
||||||
util.print_end(length, f"{item.title[:25]:<25} | Genres | {display_str}")
|
util.print_end(length, f"{item.title[:25]:<25} | Genres | {display_str}")
|
||||||
|
if library.mass_audience_rating_update:
|
||||||
|
if library.mass_audience_rating_update == "tmdb":
|
||||||
|
if "tmdb" not in ids:
|
||||||
|
util.print_end(length, f"{item.title[:25]:<25} | No TMDb for Guid: {item.guid}")
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
tmdb_item = self.TMDb.get_movie(ids["tmdb"]) if library.is_movie else self.TMDb.get_show(ids["tmdb"])
|
||||||
|
except Failed as e:
|
||||||
|
util.print_end(length, str(e))
|
||||||
|
continue
|
||||||
|
new_rating = tmdb_item.vote_average
|
||||||
|
elif library.mass_audience_rating_update in ["omdb", "imdb"]:
|
||||||
|
if self.OMDb.limit is True:
|
||||||
|
break
|
||||||
|
if "imdb" not in ids:
|
||||||
|
util.print_end(length, f"{item.title[:25]:<25} | No IMDb for Guid: {item.guid}")
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
omdb_item = self.OMDb.get_omdb(ids["imdb"])
|
||||||
|
except Failed as e:
|
||||||
|
util.print_end(length, str(e))
|
||||||
|
continue
|
||||||
|
new_rating = omdb_item.imdb_rating
|
||||||
|
else:
|
||||||
|
raise Failed
|
||||||
|
if new_rating is None:
|
||||||
|
util.print_end(length, f"{item.title[:25]:<25} | No Rating Found")
|
||||||
|
elif str(item.audienceRating) != str(new_rating):
|
||||||
|
library.edit_query(item, {"audienceRating.value": new_rating, "audienceRating.locked": 1})
|
||||||
|
util.print_end(length, f"{item.title[:25]:<25} | Audience Rating | {new_rating}")
|
||||||
|
|
||||||
def map_guids(self, library):
|
def map_guids(self, library):
|
||||||
movie_map = {}
|
movie_map = {}
|
||||||
|
|
|
@ -214,6 +214,8 @@ class PlexAPI:
|
||||||
self.show_missing = params["show_missing"]
|
self.show_missing = params["show_missing"]
|
||||||
self.save_missing = params["save_missing"]
|
self.save_missing = params["save_missing"]
|
||||||
self.mass_genre_update = params["mass_genre_update"]
|
self.mass_genre_update = params["mass_genre_update"]
|
||||||
|
self.mass_audience_rating_update = params["mass_audience_rating_update"]
|
||||||
|
self.mass_update = self.mass_genre_update or self.mass_audience_rating_update
|
||||||
self.plex = params["plex"]
|
self.plex = params["plex"]
|
||||||
self.url = params["plex"]["url"]
|
self.url = params["plex"]["url"]
|
||||||
self.token = params["plex"]["token"]
|
self.token = params["plex"]["token"]
|
||||||
|
@ -261,9 +263,12 @@ class PlexAPI:
|
||||||
collection.sortUpdate(sort=data)
|
collection.sortUpdate(sort=data)
|
||||||
|
|
||||||
@retry(stop_max_attempt_number=6, wait_fixed=10000)
|
@retry(stop_max_attempt_number=6, wait_fixed=10000)
|
||||||
def collection_edit_query(self, collection, data):
|
def edit_query(self, item, edits, advance=False):
|
||||||
collection.edit(**data)
|
if advance:
|
||||||
collection.reload()
|
item.editAdvanced(**edits)
|
||||||
|
else:
|
||||||
|
item.edit(**edits)
|
||||||
|
item.reload()
|
||||||
|
|
||||||
@retry(stop_max_attempt_number=6, wait_fixed=10000)
|
@retry(stop_max_attempt_number=6, wait_fixed=10000)
|
||||||
def upload_image(self, item, location, poster=True, url=True):
|
def upload_image(self, item, location, poster=True, url=True):
|
||||||
|
@ -451,7 +456,7 @@ class PlexAPI:
|
||||||
for i, item in enumerate(all_items, 1):
|
for i, item in enumerate(all_items, 1):
|
||||||
length = util.print_return(length, f"Processing: {i}/{len(all_items)} {item.title}")
|
length = util.print_return(length, f"Processing: {i}/{len(all_items)} {item.title}")
|
||||||
add_item = True
|
add_item = True
|
||||||
item.reload()
|
self.query(item.reload)
|
||||||
for collection in item.collections:
|
for collection in item.collections:
|
||||||
if collection.id in good_collections:
|
if collection.id in good_collections:
|
||||||
add_item = False
|
add_item = False
|
||||||
|
@ -622,11 +627,7 @@ class PlexAPI:
|
||||||
if len(edits) > 0:
|
if len(edits) > 0:
|
||||||
logger.debug(f"Details Update: {edits}")
|
logger.debug(f"Details Update: {edits}")
|
||||||
try:
|
try:
|
||||||
if advanced:
|
self.edit_query(item, edits, advanced=advanced)
|
||||||
item.editAdvanced(**edits)
|
|
||||||
else:
|
|
||||||
item.edit(**edits)
|
|
||||||
item.reload()
|
|
||||||
if advanced and "languageOverride" in edits:
|
if advanced and "languageOverride" in edits:
|
||||||
self.query(item.refresh)
|
self.query(item.refresh)
|
||||||
logger.info(f"{item_type}: {name}{' Advanced' if advanced else ''} Details Update Successful")
|
logger.info(f"{item_type}: {name}{' Advanced' if advanced else ''} Details Update Successful")
|
||||||
|
|
Loading…
Reference in a new issue