mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-10 06:54:21 +00:00
#316 added mass_trakt_rating_update
to settings
This commit is contained in:
parent
2663cbe487
commit
07546d75c7
4 changed files with 74 additions and 44 deletions
|
@ -352,44 +352,29 @@ class Config:
|
|||
params["released_missing_only"] = check_for_attribute(lib, "released_missing_only", parent="settings", var_type="bool", default=self.general["released_missing_only"], do_print=False, save=False)
|
||||
params["create_asset_folders"] = check_for_attribute(lib, "create_asset_folders", parent="settings", var_type="bool", default=self.general["create_asset_folders"], do_print=False, save=False)
|
||||
|
||||
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_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:
|
||||
params["mass_genre_update"] = check_for_attribute(lib, "mass_genre_update", test_list=mass_update_options, default_is_none=True, save=False, do_print=lib and "mass_genre_update" in lib)
|
||||
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")
|
||||
|
||||
if lib and "mass_audience_rating_update" in lib and lib["mass_audience_rating_update"]:
|
||||
params["mass_audience_rating_update"] = check_for_attribute(lib, "mass_audience_rating_update", test_list=mass_update_options, default_is_none=True, save=False)
|
||||
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"] = check_for_attribute(lib, "mass_audience_rating_update", test_list=mass_update_options, default_is_none=True, save=False, do_print=lib and "mass_audience_rating_update" in lib)
|
||||
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")
|
||||
|
||||
if lib and "mass_critic_rating_update" in lib and lib["mass_critic_rating_update"]:
|
||||
params["mass_critic_rating_update"] = check_for_attribute(lib, "mass_critic_rating_update", test_list=mass_update_options, default_is_none=True, save=False)
|
||||
if self.OMDb is None and params["mass_critic_rating_update"] == "omdb":
|
||||
params["mass_critic_rating_update"] = None
|
||||
logger.error("Config Error: mass_critic_rating_update cannot be omdb without a successful OMDb Connection")
|
||||
else:
|
||||
params["mass_critic_rating_update"] = check_for_attribute(lib, "mass_critic_rating_update", test_list=mass_update_options, default_is_none=True, save=False, do_print=lib and "mass_audience_rating_update" in lib)
|
||||
if self.OMDb is None and params["mass_critic_rating_update"] == "omdb":
|
||||
params["mass_critic_rating_update"] = None
|
||||
logger.error("Config Error: mass_critic_rating_update cannot be omdb without a successful OMDb Connection")
|
||||
|
||||
if lib and "split_duplicates" in lib and lib["split_duplicates"]:
|
||||
params["split_duplicates"] = check_for_attribute(lib, "split_duplicates", var_type="bool", default=False, save=False)
|
||||
else:
|
||||
params["split_duplicates"] = None
|
||||
params["mass_trakt_rating_update"] = check_for_attribute(lib, "mass_trakt_rating_update", var_type="bool", default=False, save=False, do_print=lib and "mass_trakt_rating_update" in lib)
|
||||
if self.Trakt is None and params["mass_trakt_rating_update"]:
|
||||
params["mass_trakt_rating_update"] = None
|
||||
logger.error("Config Error: mass_trakt_rating_update cannot run without a successful Trakt Connection")
|
||||
|
||||
if lib and "radarr_add_all" in lib and lib["radarr_add_all"]:
|
||||
params["radarr_add_all"] = check_for_attribute(lib, "radarr_add_all", var_type="bool", default=False, save=False)
|
||||
else:
|
||||
params["radarr_add_all"] = None
|
||||
|
||||
if lib and "sonarr_add_all" in lib and lib["sonarr_add_all"]:
|
||||
params["sonarr_add_all"] = check_for_attribute(lib, "sonarr_add_all", var_type="bool", default=False, save=False)
|
||||
else:
|
||||
params["sonarr_add_all"] = None
|
||||
params["split_duplicates"] = check_for_attribute(lib, "split_duplicates", var_type="bool", default=False, save=False, do_print=lib and "split_duplicates" in lib)
|
||||
params["radarr_add_all"] = check_for_attribute(lib, "radarr_add_all", var_type="bool", default=False, save=False, do_print=lib and "radarr_add_all" in lib)
|
||||
params["sonarr_add_all"] = check_for_attribute(lib, "sonarr_add_all", var_type="bool", default=False, save=False, do_print=lib and "sonarr_add_all" in lib)
|
||||
|
||||
try:
|
||||
if lib and "metadata_path" in lib:
|
||||
|
|
|
@ -284,6 +284,7 @@ class Plex:
|
|||
self.mass_genre_update = params["mass_genre_update"]
|
||||
self.mass_audience_rating_update = params["mass_audience_rating_update"]
|
||||
self.mass_critic_rating_update = params["mass_critic_rating_update"]
|
||||
self.mass_trakt_rating_update = params["mass_trakt_rating_update"]
|
||||
self.split_duplicates = params["split_duplicates"]
|
||||
self.radarr_add_all = params["radarr_add_all"]
|
||||
self.sonarr_add_all = params["sonarr_add_all"]
|
||||
|
|
|
@ -101,31 +101,47 @@ class Trakt:
|
|||
"trakt-api-version": "2",
|
||||
"trakt-api-key": self.client_id
|
||||
}
|
||||
response = self.config.get(url, headers=headers)
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
else:
|
||||
raise Failed(f"({response.status_code}) {response.reason}")
|
||||
output_json = []
|
||||
pages = 1
|
||||
current = 1
|
||||
while current <= pages:
|
||||
if pages == 1:
|
||||
response = self.config.get(f"{base_url}{url}", headers=headers)
|
||||
if "X-Pagination-Page-Count" in response.headers:
|
||||
pages = int(response.headers["X-Pagination-Page-Count"])
|
||||
else:
|
||||
response = self.config.get(f"{base_url}{url}?page={current}", headers=headers)
|
||||
if response.status_code == 200:
|
||||
output_json.extend(response.json())
|
||||
else:
|
||||
raise Failed(f"({response.status_code}) {response.reason}")
|
||||
current += 1
|
||||
return output_json
|
||||
|
||||
def user_ratings(self, is_movie):
|
||||
media = "movie" if is_movie else "show"
|
||||
id_type = "tmdb" if is_movie else "tvdb"
|
||||
return {int(i[media]["ids"][id_type]): i["rating"] for i in self._request(f"/users/me/ratings/{media}s")}
|
||||
|
||||
def convert(self, external_id, from_source, to_source, media_type):
|
||||
path = f"/search/{from_source}/{external_id}"
|
||||
if from_source in ["tmdb", "tvdb"]:
|
||||
path = f"{path}?type={media_type}"
|
||||
lookup = self._request(f"{base_url}{path}")
|
||||
lookup = self._request(path)
|
||||
if lookup and media_type in lookup[0] and to_source in lookup[0][media_type]["ids"]:
|
||||
return lookup[0][media_type]["ids"][to_source]
|
||||
raise Failed(f"Trakt Error: No {to_source.upper().replace('B', 'b')} ID found for {from_source.upper().replace('B', 'b')} ID: {external_id}")
|
||||
|
||||
def list_description(self, data):
|
||||
try:
|
||||
return self._request(f"{base_url}{requests.utils.urlparse(data).path}")["description"]
|
||||
return self._request(requests.utils.urlparse(data).path)["description"]
|
||||
except Failed:
|
||||
raise Failed(f"Trakt Error: List {data} not found")
|
||||
|
||||
def _user_list(self, list_type, data, is_movie):
|
||||
path = f"{requests.utils.urlparse(data).path}/items" if list_type == "list" else f"/users/{data}/{list_type}"
|
||||
try:
|
||||
items = self._request(f"{base_url}{path}/{'movies' if is_movie else 'shows'}")
|
||||
items = self._request(f"{path}/{'movies' if is_movie else 'shows'}")
|
||||
except Failed:
|
||||
raise Failed(f"Trakt Error: {'List' if list_type == 'list' else 'User'} {data} not found")
|
||||
if len(items) == 0:
|
||||
|
@ -137,7 +153,7 @@ class Trakt:
|
|||
else: return [], [item["show"]["ids"]["tvdb"] for item in items]
|
||||
|
||||
def _pagenation(self, pagenation, amount, is_movie):
|
||||
items = self._request(f"{base_url}/{'movies' if is_movie else 'shows'}/{pagenation}?limit={amount}")
|
||||
items = self._request(f"/{'movies' if is_movie else 'shows'}/{pagenation}?limit={amount}")
|
||||
if pagenation == "popular" and is_movie: return [item["ids"]["tmdb"] for item in items], []
|
||||
elif pagenation == "popular": return [], [item["ids"]["tvdb"] for item in items]
|
||||
elif is_movie: return [item["movie"]["ids"]["tmdb"] for item in items], []
|
||||
|
|
|
@ -105,7 +105,7 @@ def start(config_path, is_test=False, time_scheduled=None, requested_collections
|
|||
logger.info(util.centered("| __/| | __/> < | | | | __/ || (_| | | | | | (_| | | | | (_| | (_| | __/ | "))
|
||||
logger.info(util.centered("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| "))
|
||||
logger.info(util.centered(" |___/ "))
|
||||
logger.info(util.centered(" Version: 1.11.3-beta3 "))
|
||||
logger.info(util.centered(" Version: 1.11.3-beta4 "))
|
||||
if time_scheduled: start_type = f"{time_scheduled} "
|
||||
elif is_test: start_type = "Test "
|
||||
elif requested_collections: start_type = "Collections "
|
||||
|
@ -256,6 +256,8 @@ def mass_metadata(config, library):
|
|||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | Splitting"))
|
||||
radarr_adds = []
|
||||
sonarr_adds = []
|
||||
trakt_ratings = config.Trakt.user_ratings(library.is_movie) if library.mass_trakt_rating_update else []
|
||||
|
||||
items = library.get_all()
|
||||
for i, item in enumerate(items, 1):
|
||||
library.reload(item)
|
||||
|
@ -339,11 +341,11 @@ def mass_metadata(config, library):
|
|||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | Genres | {display_str}"))
|
||||
except Failed:
|
||||
pass
|
||||
if library.mass_audience_rating_update or library.mass_critic_rating_update:
|
||||
if library.mass_audience_rating_update:
|
||||
try:
|
||||
if tmdb_item and library.mass_genre_update == "tmdb":
|
||||
if tmdb_item and library.mass_audience_rating_update == "tmdb":
|
||||
new_rating = tmdb_item.vote_average
|
||||
elif omdb_item and library.mass_genre_update in ["omdb", "imdb"]:
|
||||
elif omdb_item and library.mass_audience_rating_update in ["omdb", "imdb"]:
|
||||
new_rating = omdb_item.imdb_rating
|
||||
else:
|
||||
raise Failed
|
||||
|
@ -353,11 +355,37 @@ def mass_metadata(config, library):
|
|||
if library.mass_audience_rating_update and str(item.audienceRating) != str(new_rating):
|
||||
library.edit_query(item, {"audienceRating.value": new_rating, "audienceRating.locked": 1})
|
||||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | Audience Rating | {new_rating}"))
|
||||
except Failed:
|
||||
pass
|
||||
if library.mass_critic_rating_update:
|
||||
try:
|
||||
if tmdb_item and library.mass_critic_rating_update == "tmdb":
|
||||
new_rating = tmdb_item.vote_average
|
||||
elif omdb_item and library.mass_critic_rating_update in ["omdb", "imdb"]:
|
||||
new_rating = omdb_item.imdb_rating
|
||||
else:
|
||||
raise Failed
|
||||
if new_rating is None:
|
||||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | No Rating Found"))
|
||||
else:
|
||||
if library.mass_critic_rating_update and str(item.rating) != str(new_rating):
|
||||
library.edit_query(item, {"rating.value": new_rating, "rating.locked": 1})
|
||||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | Critic Rating | {new_rating}"))
|
||||
except Failed:
|
||||
pass
|
||||
if library.mass_trakt_rating_update:
|
||||
try:
|
||||
if library.is_movie and tmdb_id in trakt_ratings:
|
||||
new_rating = trakt_ratings[tmdb_id]
|
||||
elif library.is_show and tvdb_id in trakt_ratings:
|
||||
new_rating = trakt_ratings[tvdb_id]
|
||||
else:
|
||||
raise Failed
|
||||
if str(item.userRating) != str(new_rating):
|
||||
library.edit_query(item, {"userRating.value": new_rating, "userRating.locked": 1})
|
||||
logger.info(util.adjust_space(f"{item.title[:25]:<25} | User Rating | {new_rating}"))
|
||||
except Failed:
|
||||
pass
|
||||
|
||||
if library.Radarr and library.radarr_add_all:
|
||||
try:
|
||||
|
|
Loading…
Reference in a new issue