diff --git a/modules/config.py b/modules/config.py index 8c4b5b91..7ceae221 100644 --- a/modules/config.py +++ b/modules/config.py @@ -99,7 +99,7 @@ class Config: elif attribute not in loaded_config[parent]: loaded_config[parent][attribute] = default else: endline = "" yaml.round_trip_dump(loaded_config, open(self.config_path, "w"), indent=ind_in, block_seq_indent=bsi_in) - elif not data[attribute] and data[attribute] is not False: + elif data[attribute] is None: if default_is_none is True: return None else: message = f"{text} is blank" elif var_type == "bool": @@ -325,7 +325,7 @@ class Config: library = PlexAPI(params, self.TMDb, self.TVDb) logger.info(f"{params['name']} Library Connection Successful") except Failed as e: - logger.error(e) + util.print_multiline(e, error=True) logger.info(f"{params['name']} Library Connection Failed") continue @@ -343,7 +343,7 @@ class Config: radarr_params["tag"] = check_for_attribute(lib, "search", parent="radarr", var_type="lower_list", default=self.general["radarr"]["tag"], default_is_none=True, save=False) library.Radarr = RadarrAPI(self.TMDb, radarr_params) except Failed as e: - util.print_multiline(e) + util.print_multiline(e, error=True) logger.info(f"{params['name']} library's Radarr Connection {'Failed' if library.Radarr is None else 'Successful'}") if self.general["sonarr"]["url"] or "sonarr" in lib: @@ -361,7 +361,7 @@ class Config: sonarr_params["tag"] = check_for_attribute(lib, "search", parent="sonarr", var_type="lower_list", default=self.general["sonarr"]["tag"], default_is_none=True, save=False) library.Sonarr = SonarrAPI(self.TVDb, sonarr_params, library.Plex.language) except Failed as e: - util.print_multiline(e) + util.print_multiline(e, error=True) logger.info(f"{params['name']} library's Sonarr Connection {'Failed' if library.Sonarr is None else 'Successful'}") if self.general["tautulli"]["url"] or "tautulli" in lib: @@ -372,7 +372,7 @@ class Config: tautulli_params["apikey"] = check_for_attribute(lib, "apikey", parent="tautulli", default=self.general["tautulli"]["apikey"], req_default=True, save=False) library.Tautulli = TautulliAPI(tautulli_params) except Failed as e: - util.print_multiline(e) + util.print_multiline(e, error=True) logger.info(f"{params['name']} library's Tautulli Connection {'Failed' if library.Tautulli is None else 'Successful'}") self.libraries.append(library) diff --git a/modules/plex.py b/modules/plex.py index c18944a7..bc482813 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -306,6 +306,13 @@ class PlexAPI: tagline = tmdb_item.tagline if tmdb_item and len(tmdb_item.tagline) > 0 else None summary = tmdb_item.overview if tmdb_item else None + details_updated = False + advance_details_updated = False + genre_updated = False + label_updated = False + season_updated = False + episode_updated = False + edits = {} def add_edit(name, current, group, alias, key=None, value=None): if value or name in alias: @@ -329,6 +336,7 @@ class PlexAPI: add_edit("summary", item.summary, meta, methods, value=summary) if len(edits) > 0: logger.debug(f"Details Update: {edits}") + details_updated = True try: item.edit(**edits) item.reload() @@ -336,8 +344,6 @@ class PlexAPI: except BadRequest: util.print_stacktrace() logger.error(f"{item_type}: {mapping_name} Details Update Failed") - else: - logger.info(f"{item_type}: {mapping_name} Details Update Not Needed") advance_edits = {} if self.is_show: @@ -476,6 +482,7 @@ class PlexAPI: if len(advance_edits) > 0: logger.debug(f"Details Update: {advance_edits}") + advance_details_updated = True try: check_dict = {pref.id: list(pref.enumValues.keys()) for pref in item.preferences()} logger.info(check_dict) @@ -484,9 +491,7 @@ class PlexAPI: logger.info(f"{item_type}: {mapping_name} Advanced Details Update Successful") except BadRequest: util.print_stacktrace() - logger.error(f"{item_type}: {mapping_name} Details Update Failed") - else: - logger.info(f"{item_type}: {mapping_name} Details Update Not Needed") + logger.error(f"{item_type}: {mapping_name} Advanced Details Update Failed") genres = [] if tmdb_item: @@ -505,9 +510,11 @@ class PlexAPI: logger.error("Metadata Error: genre_sync_mode attribute must be either 'append' or 'sync' defaulting to append") elif str(meta["genre_sync_mode"]).lower() == "sync": for genre in (g for g in item_genres if g not in genres): + genre_updated = True item.removeGenre(genre) logger.info(f"Detail: Genre {genre} removed") for genre in (g for g in genres if g not in item_genres): + genre_updated = True item.addGenre(genre) logger.info(f"Detail: Genre {genre} added") @@ -522,9 +529,11 @@ class PlexAPI: logger.error("Metadata Error: label_sync_mode attribute must be either 'append' or 'sync' defaulting to append") elif str(meta[methods["label_sync_mode"]]).lower() == "sync": for label in (la for la in item_labels if la not in labels): + label_updated = True item.removeLabel(label) logger.info(f"Detail: Label {label} removed") for label in (la for la in labels if la not in item_labels): + label_updated = True item.addLabel(label) logger.info(f"Detail: Label {label} added") else: @@ -561,6 +570,7 @@ class PlexAPI: add_edit("summary", season.summary, season_methods, season_dict) if len(edits) > 0: logger.debug(f"Season: {season_id} Details Update: {edits}") + season_updated = True try: season.edit(**edits) season.reload() @@ -568,8 +578,6 @@ class PlexAPI: except BadRequest: util.print_stacktrace() logger.error(f"Season: {season_id} Details Update Failed") - else: - logger.info(f"Season: {season_id} Details Update Not Needed") else: logger.error(f"Metadata Error: Season: {season_id} invalid, it must be an integer") else: @@ -612,6 +620,7 @@ class PlexAPI: add_edit("summary", episode.summary, episode_dict, episode_methods) if len(edits) > 0: logger.debug(f"Season: {season_id} Episode: {episode_id} Details Update: {edits}") + episode_updated = True try: episode.edit(**edits) episode.reload() @@ -620,9 +629,10 @@ class PlexAPI: except BadRequest: util.print_stacktrace() logger.error(f"Season: {season_id} Episode: {episode_id} Details Update Failed") - else: - logger.info(f"Season: {season_id} Episode: {episode_id} Details Update Not Needed") else: logger.error(f"Metadata Error: episode {episode_str} invalid must have S##E## format") else: logger.error("Metadata Error: episodes attribute is blank") + + if not details_updated and not advance_details_updated and not genre_updated and not label_updated and not season_updated and not episode_updated: + logger.info(f"{item_type}: {mapping_name} Details Update Not Needed") \ No newline at end of file