Merge pull request #326 from meisnate12/develop

v1.11.2
pull/330/head v1.11.2
meisnate12 3 years ago committed by GitHub
commit f2e4d7a5fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -117,7 +117,7 @@ numbered_builders = [
"trakt_watched", "trakt_watched",
"trakt_collected" "trakt_collected"
] ]
smart_collection_invalid = ["collection_mode", "collection_order"] smart_collection_invalid = ["collection_order"]
smart_url_collection_invalid = [ smart_url_collection_invalid = [
"run_again", "sync_mode", "show_filtered", "show_missing", "save_missing", "smart_label", "run_again", "sync_mode", "show_filtered", "show_missing", "save_missing", "smart_label",
"radarr_add", "radarr_folder", "radarr_monitor", "radarr_availability", "radarr_add", "radarr_folder", "radarr_monitor", "radarr_availability",
@ -1098,35 +1098,57 @@ class CollectionBuilder:
logger.info("Validation Successful") logger.info("Validation Successful")
def collect_rating_keys(self): def collect_rating_keys(self):
filtered_keys = {}
name = self.obj.title if self.obj else self.name
def add_rating_keys(keys): def add_rating_keys(keys):
if not isinstance(keys, list): if not isinstance(keys, list):
keys = [keys] keys = [keys]
self.rating_keys.extend([key for key in keys if key not in self.rating_keys]) total = len(keys)
max_length = len(str(total))
if self.filters and self.details["show_filtered"] is True:
logger.info("")
logger.info("Filtering Builder:")
for i, key in enumerate(keys, 1):
if key not in self.rating_keys:
if key in filtered_keys:
if self.details["show_filtered"] is True:
logger.info(f"{name} Collection | X | {filtered_keys[key]}")
else:
try:
current = self.fetch_item(key)
except Failed as e:
logger.error(e)
continue
current_title = f"{current.title} ({current.year})" if current.year else current.title
if self.check_filters(current, f"{(' ' * (max_length - len(str(i))))}{i}/{total}"):
self.rating_keys.append(key)
else:
if key not in filtered_keys:
filtered_keys[key] = current_title
if self.details["show_filtered"] is True:
logger.info(f"{name} Collection | X | {current_title}")
def check_map(input_ids):
movie_ids, show_ids = input_ids
items_found_inside = 0
if len(movie_ids) > 0:
items_found_inside += len(movie_ids)
for movie_id in movie_ids:
if movie_id in self.library.movie_map:
add_rating_keys(self.library.movie_map[movie_id])
elif movie_id not in self.missing_movies:
self.missing_movies.append(movie_id)
if len(show_ids) > 0:
items_found_inside += len(show_ids)
for show_id in show_ids:
if show_id in self.library.show_map:
add_rating_keys(self.library.show_map[show_id])
elif show_id not in self.missing_shows:
self.missing_shows.append(show_id)
return items_found_inside
for method, values in self.methods: for method, values in self.methods:
logger.debug("")
logger.debug(f"Method: {method}")
logger.debug(f"Values: {values}")
for value in values: for value in values:
def check_map(input_ids):
movie_ids, show_ids = input_ids
items_found_inside = 0
if len(movie_ids) > 0:
items_found_inside += len(movie_ids)
for movie_id in movie_ids:
if movie_id in self.library.movie_map:
add_rating_keys(self.library.movie_map[movie_id])
elif movie_id not in self.missing_movies:
self.missing_movies.append(movie_id)
if len(show_ids) > 0:
items_found_inside += len(show_ids)
for show_id in show_ids:
if show_id in self.library.show_map:
add_rating_keys(self.library.show_map[show_id])
elif show_id not in self.missing_shows:
self.missing_shows.append(show_id)
return items_found_inside
logger.debug("") logger.debug("")
logger.debug(f"Value: {value}") logger.debug(f"Builder: {method}: {value}")
logger.info("") logger.info("")
if "plex" in method: add_rating_keys(self.library.get_items(method, value)) if "plex" in method: add_rating_keys(self.library.get_items(method, value))
elif "tautulli" in method: add_rating_keys(self.library.Tautulli.get_items(self.library, value)) elif "tautulli" in method: add_rating_keys(self.library.Tautulli.get_items(self.library, value))
@ -1409,16 +1431,14 @@ class CollectionBuilder:
logger.error(e) logger.error(e)
continue continue
current_title = f"{current.title} ({current.year})" if current.year else current.title current_title = f"{current.title} ({current.year})" if current.year else current.title
if self.check_filters(current, f"{(' ' * (max_length - len(str(i))))}{i}/{total}"): current_operation = "=" if current in collection_items else "+"
logger.info(util.adjust_space(f"{name} Collection | {'=' if current in collection_items else '+'} | {current_title}")) logger.info(util.adjust_space(f"{name} Collection | {current_operation} | {current_title}"))
if current in collection_items: if current in collection_items:
self.plex_map[current.ratingKey] = None self.plex_map[current.ratingKey] = None
elif self.smart_label_collection: elif self.smart_label_collection:
self.library.query_data(current.addLabel, name) self.library.query_data(current.addLabel, name)
else: else:
self.library.query_data(current.addCollection, name) self.library.query_data(current.addCollection, name)
elif self.details["show_filtered"] is True:
logger.info(f"{name} Collection | X | {current_title}")
media_type = f"{'Movie' if self.library.is_movie else 'Show'}{'s' if total > 1 else ''}" media_type = f"{'Movie' if self.library.is_movie else 'Show'}{'s' if total > 1 else ''}"
util.print_end() util.print_end()
logger.info("") logger.info("")

@ -362,7 +362,6 @@ class Plex:
def get_all(self): def get_all(self):
logger.info(f"Loading All {'Movie' if self.is_movie else 'Show'}s from Library: {self.name}") logger.info(f"Loading All {'Movie' if self.is_movie else 'Show'}s from Library: {self.name}")
logger.info("")
key = f"/library/sections/{self.Plex.key}/all?type={utils.searchType(self.Plex.TYPE)}" key = f"/library/sections/{self.Plex.key}/all?type={utils.searchType(self.Plex.TYPE)}"
container_start = 0 container_start = 0
container_size = plexapi.X_PLEX_CONTAINER_SIZE container_size = plexapi.X_PLEX_CONTAINER_SIZE
@ -372,7 +371,6 @@ class Plex:
util.print_return(f"Loaded: {container_start}/{self.Plex._totalViewSize}") util.print_return(f"Loaded: {container_start}/{self.Plex._totalViewSize}")
container_start += container_size container_start += container_size
logger.info(util.adjust_space(f"Loaded {self.Plex._totalViewSize} {'Movies' if self.is_movie else 'Shows'}")) logger.info(util.adjust_space(f"Loaded {self.Plex._totalViewSize} {'Movies' if self.is_movie else 'Shows'}"))
logger.info("")
return results return results
@retry(stop_max_attempt_number=6, wait_fixed=10000, retry_on_exception=util.retry_if_not_plex) @retry(stop_max_attempt_number=6, wait_fixed=10000, retry_on_exception=util.retry_if_not_plex)
@ -523,7 +521,6 @@ class Plex:
if post: method = self.Plex._server._session.post if post: method = self.Plex._server._session.post
elif put: method = self.Plex._server._session.put elif put: method = self.Plex._server._session.put
else: method = None else: method = None
self.Plex._server.query(key, method=method)
return self.Plex._server.query(key, method=method) return self.Plex._server.query(key, method=method)
def smart_label_url(self, title, sort): def smart_label_url(self, title, sort):

@ -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("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| "))
logger.info(util.centered(" |___/ ")) logger.info(util.centered(" |___/ "))
logger.info(util.centered(" Version: 1.11.0 ")) logger.info(util.centered(" Version: 1.11.2 "))
if time_scheduled: start_type = f"{time_scheduled} " if time_scheduled: start_type = f"{time_scheduled} "
elif is_test: start_type = "Test " elif is_test: start_type = "Test "
elif requested_collections: start_type = "Collections " elif requested_collections: start_type = "Collections "
@ -449,9 +449,10 @@ def run_collection(config, library, metadata, requested_collections):
logger.info("") logger.info("")
builder.add_to_collection() builder.add_to_collection()
if len(builder.missing_movies) > 0 or len(builder.missing_shows) > 0: if len(builder.missing_movies) > 0 or len(builder.missing_shows) > 0:
logger.info("") if builder.details["show_missing"] is True:
util.separator(f"Missing from Library", space=False, border=False) logger.info("")
logger.info("") util.separator(f"Missing from Library", space=False, border=False)
logger.info("")
builder.run_missing() builder.run_missing()
if builder.sync and len(builder.rating_keys) > 0 and builder.build_collection: if builder.sync and len(builder.rating_keys) > 0 and builder.build_collection:
builder.sync_collection() builder.sync_collection()

Loading…
Cancel
Save