another timeout update

pull/211/head
meisnate12 4 years ago
parent 2033f815dc
commit 2a5bee4c76

@ -453,24 +453,15 @@ class CollectionBuilder:
elif method_name == "label": elif method_name == "label":
self.details[method_name] = util.get_list(method_data) self.details[method_name] = util.get_list(method_data)
elif method_name in boolean_details: elif method_name in boolean_details:
if isinstance(method_data, bool): self.details[method_name] = method_data self.details[method_name] = util.get_bool(method_name, method_data)
elif str(method_data).lower() in ["t", "true"]: self.details[method_name] = True
elif str(method_data).lower() in ["f", "false"]: self.details[method_name] = False
else: raise Failed(f"Collection Error: {method_name} attribute must be either true or false")
elif method_name in all_details: elif method_name in all_details:
self.details[method_name] = method_data self.details[method_name] = method_data
elif method_name == "radarr_add": elif method_name == "radarr_add":
if isinstance(method_data, bool): self.add_to_radarr = method_data self.add_to_radarr = util.get_bool(method_name, method_data)
elif str(method_data).lower() in ["t", "true"]: self.add_to_radarr = True
elif str(method_data).lower() in ["f", "false"]: self.add_to_radarr = False
else: raise Failed(f"Collection Error: {method_name} attribute must be either true or false")
elif method_name == "radarr_folder": elif method_name == "radarr_folder":
self.radarr_options["folder"] = method_data self.radarr_options["folder"] = method_data
elif method_name in ["radarr_monitor", "radarr_search"]: elif method_name in ["radarr_monitor", "radarr_search"]:
if isinstance(method_data, bool): self.radarr_options[method_name[7:]] = method_data self.radarr_options[method_name[7:]] = util.get_bool(method_name, method_data)
elif str(method_data).lower() in ["t", "true"]: self.radarr_options[method_name[7:]] = True
elif str(method_data).lower() in ["f", "false"]: self.radarr_options[method_name[7:]] = False
else: raise Failed(f"Collection Error: {method_name} attribute must be either true or false")
elif method_name == "radarr_availability": elif method_name == "radarr_availability":
if str(method_data).lower() in radarr.availability_translation: if str(method_data).lower() in radarr.availability_translation:
self.radarr_options["availability"] = str(method_data).lower() self.radarr_options["availability"] = str(method_data).lower()
@ -482,10 +473,7 @@ class CollectionBuilder:
elif method_name == "radarr_tag": elif method_name == "radarr_tag":
self.radarr_options["tag"] = util.get_list(method_data) self.radarr_options["tag"] = util.get_list(method_data)
elif method_name == "sonarr_add": elif method_name == "sonarr_add":
if isinstance(method_data, bool): self.add_to_sonarr = method_data self.add_to_sonarr = util.get_bool(method_name, method_data)
elif str(method_data).lower() in ["t", "true"]: self.add_to_sonarr = True
elif str(method_data).lower() in ["f", "false"]: self.add_to_sonarr = False
else: raise Failed(f"Collection Error: {method_name} attribute must be either true or false")
elif method_name == "sonarr_folder": elif method_name == "sonarr_folder":
self.sonarr_options["folder"] = method_data self.sonarr_options["folder"] = method_data
elif method_name == "sonarr_monitor": elif method_name == "sonarr_monitor":
@ -505,10 +493,7 @@ class CollectionBuilder:
else: else:
raise Failed(f"Collection Error: {method_name} attribute must be either standard, daily, or anime") raise Failed(f"Collection Error: {method_name} attribute must be either standard, daily, or anime")
elif method_name in ["sonarr_season", "sonarr_search", "sonarr_cutoff_search"]: elif method_name in ["sonarr_season", "sonarr_search", "sonarr_cutoff_search"]:
if isinstance(method_data, bool): self.sonarr_options[method_name[7:]] = method_data self.sonarr_options[method_name[7:]] = util.get_bool(method_name, method_data)
elif str(method_data).lower() in ["t", "true"]: self.sonarr_options[method_name[7:]] = True
elif str(method_data).lower() in ["f", "false"]: self.sonarr_options[method_name[7:]] = False
else: raise Failed(f"Collection Error: {method_name} attribute must be either true or false")
elif method_name == "sonarr_tag": elif method_name == "sonarr_tag":
self.sonarr_options["tag"] = util.get_list(method_data) self.sonarr_options["tag"] = util.get_list(method_data)
elif method_name in ["title", "title.and", "title.not", "title.begins", "title.ends"]: elif method_name in ["title", "title.and", "title.not", "title.begins", "title.ends"]:

@ -18,6 +18,7 @@ from modules.trakttv import TraktAPI
from modules.tvdb import TVDbAPI from modules.tvdb import TVDbAPI
from modules.util import Failed from modules.util import Failed
from plexapi.exceptions import BadRequest from plexapi.exceptions import BadRequest
from retrying import retry
from ruamel import yaml from ruamel import yaml
logger = logging.getLogger("Plex Meta Manager") logger = logging.getLogger("Plex Meta Manager")
@ -727,6 +728,10 @@ class Config:
util.print_end(length, f"Processed {len(items)} {'Movies' if library.is_movie else 'Shows'}") util.print_end(length, f"Processed {len(items)} {'Movies' if library.is_movie else 'Shows'}")
return movie_map, show_map return movie_map, show_map
@retry(stop_max_attempt_number=6, wait_fixed=10000)
def get_guids(self, item):
return item.guids
def get_id(self, item, library, length): def get_id(self, item, library, length):
expired = None expired = None
tmdb_id = None tmdb_id = None
@ -747,16 +752,26 @@ class Config:
check_id = guid.netloc check_id = guid.netloc
if item_type == "plex" and check_id == "movie": if item_type == "plex" and check_id == "movie":
for guid_tag in item.guids: try:
for guid_tag in self.get_guids(item):
url_parsed = requests.utils.urlparse(guid_tag.id) url_parsed = requests.utils.urlparse(guid_tag.id)
if url_parsed.scheme == "tmdb": tmdb_id = int(url_parsed.netloc) if url_parsed.scheme == "tmdb": tmdb_id = int(url_parsed.netloc)
elif url_parsed.scheme == "imdb": imdb_id = url_parsed.netloc elif url_parsed.scheme == "imdb": imdb_id = url_parsed.netloc
except requests.exceptions.ConnectionError:
util.print_stacktrace()
logger.error(f"{'Cache | ! |' if self.Cache else 'Mapping Error:'} {item.guid:<46} | No External GUIDs found for {item.title}")
return None, None
elif item_type == "plex" and check_id == "show": elif item_type == "plex" and check_id == "show":
for guid_tag in item.guids: try:
for guid_tag in self.get_guids(item):
url_parsed = requests.utils.urlparse(guid_tag.id) url_parsed = requests.utils.urlparse(guid_tag.id)
if url_parsed.scheme == "tvdb": tvdb_id = int(url_parsed.netloc) if url_parsed.scheme == "tvdb": tvdb_id = int(url_parsed.netloc)
elif url_parsed.scheme == "imdb": imdb_id = url_parsed.netloc elif url_parsed.scheme == "imdb": imdb_id = url_parsed.netloc
elif url_parsed.scheme == "tmdb": tmdb_id = int(url_parsed.netloc) elif url_parsed.scheme == "tmdb": tmdb_id = int(url_parsed.netloc)
except requests.exceptions.ConnectionError:
util.print_stacktrace()
logger.error(f"{'Cache | ! |' if self.Cache else 'Mapping Error:'} {item.guid:<46} | No External GUIDs found for {item.title}")
return None, None
elif item_type == "imdb": imdb_id = check_id elif item_type == "imdb": imdb_id = check_id
elif item_type == "thetvdb": tvdb_id = int(check_id) elif item_type == "thetvdb": tvdb_id = int(check_id)
elif item_type == "themoviedb": tmdb_id = int(check_id) elif item_type == "themoviedb": tmdb_id = int(check_id)

@ -197,6 +197,16 @@ def choose_from_list(datalist, description, data=None, list_type="title", exact=
else: else:
return None return None
def get_bool(method_name, method_data):
if isinstance(method_data, bool):
return method_data
elif str(method_data).lower() in ["t", "true"]:
return True
elif str(method_data).lower() in ["f", "false"]:
return False
else:
raise Failed(f"Collection Error: {method_name} attribute: {method_data} invalid must be either true or false")
def get_list(data, lower=False, split=True): def get_list(data, lower=False, split=True):
if isinstance(data, list): return data if isinstance(data, list): return data
elif isinstance(data, dict): return [data] elif isinstance(data, dict): return [data]
@ -327,9 +337,6 @@ def regex_first_int(data, id_type, default=None):
else: else:
raise Failed(f"Regex Error: Failed to parse {id_type} from {data}") raise Failed(f"Regex Error: Failed to parse {id_type} from {data}")
def remove_not(method):
return method[:-4] if method.endswith(".not") else method
def centered(text, do_print=True): def centered(text, do_print=True):
if len(text) > screen_width - 2: if len(text) > screen_width - 2:
raise Failed("text must be shorter then screen_width") raise Failed("text must be shorter then screen_width")

@ -89,7 +89,7 @@ util.centered("| |_) | |/ _ \\ \\/ / | |\\/| |/ _ \\ __/ _` | | |\\/| |/ _` | '_
util.centered("| __/| | __/> < | | | | __/ || (_| | | | | | (_| | | | | (_| | (_| | __/ | ") util.centered("| __/| | __/> < | | | | __/ || (_| | | | | | (_| | | | | (_| | (_| | __/ | ")
util.centered("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| ") util.centered("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| ")
util.centered(" |___/ ") util.centered(" |___/ ")
util.centered(" Version: 1.7.2 ") util.centered(" Version: 1.7.2-Beta1 ")
util.separator() util.separator()
if my_tests: if my_tests:

Loading…
Cancel
Save