timeout error fixes

pull/211/head
meisnate12 4 years ago
parent d1698b4814
commit 536741b35a

@ -178,21 +178,30 @@ class PlexAPI:
self.missing = {} self.missing = {}
self.run_again = [] self.run_again = []
def get_all_collections(self):
return self.search(libtype="collection")
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def search(self, title, libtype=None, year=None): def search(self, title=None, libtype=None, sort=None, maxresults=None, **kwargs):
if libtype is not None and year is not None: return self.Plex.search(title=title, year=year, libtype=libtype) return self.Plex.search(title=title, sort=sort, maxresults=maxresults, libtype=libtype, **kwargs)
elif libtype is not None: return self.Plex.search(title=title, libtype=libtype)
elif year is not None: return self.Plex.search(title=title, year=year)
else: return self.Plex.search(title=title)
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def fetchItem(self, data): def fetchItem(self, data):
return self.PlexServer.fetchItem(data) return self.PlexServer.fetchItem(data)
@retry(stop_max_attempt_number=6, wait_fixed=10000)
def get_all(self):
return self.Plex.all()
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def server_search(self, data): def server_search(self, data):
return self.PlexServer.search(data) return self.PlexServer.search(data)
@retry(stop_max_attempt_number=6, wait_fixed=10000)
def add_collection(self, item, name):
item.addCollection(name)
@retry(stop_max_attempt_number=6, wait_fixed=10000, retry_on_exception=util.retry_if_not_failed)
def get_search_choices(self, search_name, key=False): def get_search_choices(self, search_name, key=False):
try: try:
if key: return {c.key.lower(): c.key for c in self.Plex.listFilterChoices(search_name)} if key: return {c.key.lower(): c.key for c in self.Plex.listFilterChoices(search_name)}
@ -211,9 +220,6 @@ class PlexAPI:
logger.error(f"Plex Error: {search_name}: {value} not found") logger.error(f"Plex Error: {search_name}: {value} not found")
return valid_list return valid_list
def get_all_collections(self):
return self.Plex.search(libtype="collection")
def get_collection(self, data): def get_collection(self, data):
collection = util.choose_from_list(self.search(str(data), libtype="collection"), "collection", str(data), exact=True) collection = util.choose_from_list(self.search(str(data), libtype="collection"), "collection", str(data), exact=True)
if collection: return collection if collection: return collection
@ -237,7 +243,7 @@ class PlexAPI:
if method == "plex_all": if method == "plex_all":
if status_message: if status_message:
logger.info(f"Processing {pretty} {media_type}s") logger.info(f"Processing {pretty} {media_type}s")
items = self.Plex.all() items = self.get_all()
elif method == "plex_collection": elif method == "plex_collection":
if status_message: if status_message:
logger.info(f"Processing {pretty} {data}") logger.info(f"Processing {pretty} {data}")
@ -294,7 +300,7 @@ class PlexAPI:
if search_limit: if search_limit:
logger.info(f"\t\t LIMIT {search_limit})") logger.info(f"\t\t LIMIT {search_limit})")
logger.debug(f"Search: {search_terms}") logger.debug(f"Search: {search_terms}")
return self.Plex.search(sort=sorts[search_sort], maxresults=search_limit, **search_terms) return self.search(sort=sorts[search_sort], maxresults=search_limit, **search_terms)
elif method == "plex_collectionless": elif method == "plex_collectionless":
good_collections = [] good_collections = []
for col in self.get_all_collections(): for col in self.get_all_collections():
@ -310,7 +316,7 @@ class PlexAPI:
break break
if keep_collection: if keep_collection:
good_collections.append(col.index) good_collections.append(col.index)
all_items = self.Plex.all() all_items = self.get_all()
length = 0 length = 0
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}")
@ -446,7 +452,7 @@ class PlexAPI:
if match: if match:
util.print_end(length, f"{name} Collection | {'=' if current in collection_items else '+'} | {current.title}") util.print_end(length, f"{name} Collection | {'=' if current in collection_items else '+'} | {current.title}")
if current in collection_items: rating_key_map[current.ratingKey] = None if current in collection_items: rating_key_map[current.ratingKey] = None
else: current.addCollection(name) else: self.add_collection(current, name)
elif show_filtered is True: elif show_filtered is True:
logger.info(f"{name} Collection | X | {current.title}") logger.info(f"{name} Collection | X | {current.title}")
media_type = f"{'Movie' if self.is_movie else 'Show'}{'s' if total > 1 else ''}" media_type = f"{'Movie' if self.is_movie else 'Show'}{'s' if total > 1 else ''}"

Loading…
Cancel
Save