sonarr language profile validation

pull/165/head
meisnate12 4 years ago
parent 42e81a4f39
commit 1e9c901466

@ -258,7 +258,7 @@ class Config:
self.general["sonarr"]["version"] = check_for_attribute(self.data, "version", parent="sonarr", test_list=["v2", "v3"], options=" v2 (For Sonarr 0.2)\n v3 (For Sonarr 3.0)", default="v2") self.general["sonarr"]["version"] = check_for_attribute(self.data, "version", parent="sonarr", test_list=["v2", "v3"], options=" v2 (For Sonarr 0.2)\n v3 (For Sonarr 3.0)", default="v2")
self.general["sonarr"]["quality_profile"] = check_for_attribute(self.data, "quality_profile", parent="sonarr", default_is_none=True) self.general["sonarr"]["quality_profile"] = check_for_attribute(self.data, "quality_profile", parent="sonarr", default_is_none=True)
self.general["sonarr"]["root_folder_path"] = check_for_attribute(self.data, "root_folder_path", parent="sonarr", default_is_none=True) self.general["sonarr"]["root_folder_path"] = check_for_attribute(self.data, "root_folder_path", parent="sonarr", default_is_none=True)
self.general["sonarr"]["language_profile_id"] = check_for_attribute(self.data, "language_profile_id", parent="sonarr", default=1) self.general["sonarr"]["language_profile"] = check_for_attribute(self.data, "language_profile", parent="sonarr", default_is_none=True)
self.general["sonarr"]["add"] = check_for_attribute(self.data, "add", parent="sonarr", var_type="bool", default=False) self.general["sonarr"]["add"] = check_for_attribute(self.data, "add", parent="sonarr", var_type="bool", default=False)
self.general["sonarr"]["search"] = check_for_attribute(self.data, "search", parent="sonarr", var_type="bool", default=False) self.general["sonarr"]["search"] = check_for_attribute(self.data, "search", parent="sonarr", var_type="bool", default=False)
self.general["sonarr"]["season_folder"] = check_for_attribute(self.data, "season_folder", parent="sonarr", var_type="bool", default=True) self.general["sonarr"]["season_folder"] = check_for_attribute(self.data, "season_folder", parent="sonarr", var_type="bool", default=True)
@ -359,7 +359,10 @@ class Config:
sonarr_params["version"] = check_for_attribute(lib, "version", parent="sonarr", test_list=["v2", "v3"], options=" v2 (For Sonarr 0.2)\n v3 (For Sonarr 3.0)", default=self.general["sonarr"]["version"], save=False) sonarr_params["version"] = check_for_attribute(lib, "version", parent="sonarr", test_list=["v2", "v3"], options=" v2 (For Sonarr 0.2)\n v3 (For Sonarr 3.0)", default=self.general["sonarr"]["version"], save=False)
sonarr_params["quality_profile"] = check_for_attribute(lib, "quality_profile", parent="sonarr", default=self.general["sonarr"]["quality_profile"], req_default=True, save=False) sonarr_params["quality_profile"] = check_for_attribute(lib, "quality_profile", parent="sonarr", default=self.general["sonarr"]["quality_profile"], req_default=True, save=False)
sonarr_params["root_folder_path"] = check_for_attribute(lib, "root_folder_path", parent="sonarr", default=self.general["sonarr"]["root_folder_path"], req_default=True, save=False) sonarr_params["root_folder_path"] = check_for_attribute(lib, "root_folder_path", parent="sonarr", default=self.general["sonarr"]["root_folder_path"], req_default=True, save=False)
sonarr_params["language_profile_id"] = check_for_attribute(lib, "language_profile_id", parent="sonarr", default=self.general["sonarr"]["language_profile_id"], save=False) if self.general["sonarr"]["language_profile"]:
sonarr_params["language_profile"] = check_for_attribute(lib, "language_profile", parent="sonarr", default=self.general["sonarr"]["language_profile"], save=False)
else:
sonarr_params["language_profile"] = check_for_attribute(lib, "language_profile", parent="sonarr", default_is_none=True, save=False)
sonarr_params["add"] = check_for_attribute(lib, "add", parent="sonarr", var_type="bool", default=self.general["sonarr"]["add"], save=False) sonarr_params["add"] = check_for_attribute(lib, "add", parent="sonarr", var_type="bool", default=self.general["sonarr"]["add"], save=False)
sonarr_params["search"] = check_for_attribute(lib, "search", parent="sonarr", var_type="bool", default=self.general["sonarr"]["search"], save=False) sonarr_params["search"] = check_for_attribute(lib, "search", parent="sonarr", var_type="bool", default=self.general["sonarr"]["search"], save=False)
sonarr_params["season_folder"] = check_for_attribute(lib, "season_folder", parent="sonarr", var_type="bool", default=self.general["sonarr"]["season_folder"], save=False) sonarr_params["season_folder"] = check_for_attribute(lib, "season_folder", parent="sonarr", var_type="bool", default=self.general["sonarr"]["season_folder"], save=False)

@ -20,7 +20,7 @@ class RadarrAPI:
raise Failed("Radarr Error: Unexpected Response Check URL") raise Failed("Radarr Error: Unexpected Response Check URL")
self.quality_profile_id = None self.quality_profile_id = None
profiles = "" profiles = ""
for profile in self.send_get(f"{self.base_url}{'qualityProfile' if params['version'] == 'v3' else 'profile'}"): for profile in self.send_get("qualityProfile" if params["version"] == "v3" else "profile"):
if len(profiles) > 0: if len(profiles) > 0:
profiles += ", " profiles += ", "
profiles += profile["name"] profiles += profile["name"]
@ -47,8 +47,8 @@ class RadarrAPI:
if tag: if tag:
tag_cache = {} tag_cache = {}
for label in tag: for label in tag:
self.send_post(f"{self.base_url}tag", {"label": str(label)}) self.send_post("tag", {"label": str(label)})
for t in self.send_get(f"{self.base_url}tag"): for t in self.send_get("tag"):
tag_cache[t["label"]] = t["id"] tag_cache[t["label"]] = t["id"]
for label in tag: for label in tag:
if label in tag_cache: if label in tag_cache:
@ -87,7 +87,7 @@ class RadarrAPI:
} }
if tag_nums: if tag_nums:
url_json["tags"] = tag_nums url_json["tags"] = tag_nums
response = self.send_post(f"{self.base_url}movie", url_json) response = self.send_post("movie", url_json)
if response.status_code < 400: if response.status_code < 400:
logger.info(f"Added to Radarr | {tmdb_id:<6} | {movie.title}") logger.info(f"Added to Radarr | {tmdb_id:<6} | {movie.title}")
add_count += 1 add_count += 1
@ -101,8 +101,8 @@ class RadarrAPI:
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def send_get(self, url): def send_get(self, url):
return requests.get(url, params=self.url_params).json() return requests.get(f"{self.base_url}{url}", params=self.url_params).json()
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def send_post(self, url, url_json): def send_post(self, url, url_json):
return requests.post(url, json=url_json, params=self.url_params) return requests.post(f"{self.base_url}{url}", json=url_json, params=self.url_params)

@ -20,7 +20,7 @@ class SonarrAPI:
raise Failed("Sonarr Error: Unexpected Response Check URL") raise Failed("Sonarr Error: Unexpected Response Check URL")
self.quality_profile_id = None self.quality_profile_id = None
profiles = "" profiles = ""
for profile in self.send_get(f"{self.base_url}{'qualityProfile' if params['version'] == 'v3' else 'profile'}"): for profile in self.send_get("qualityProfile" if params["version"] == "v3" else "profile"):
if len(profiles) > 0: if len(profiles) > 0:
profiles += ", " profiles += ", "
profiles += profile["name"] profiles += profile["name"]
@ -28,13 +28,28 @@ class SonarrAPI:
self.quality_profile_id = profile["id"] self.quality_profile_id = profile["id"]
if not self.quality_profile_id: if not self.quality_profile_id:
raise Failed(f"Sonarr Error: quality_profile: {params['quality_profile']} does not exist in sonarr. Profiles available: {profiles}") raise Failed(f"Sonarr Error: quality_profile: {params['quality_profile']} does not exist in sonarr. Profiles available: {profiles}")
self.language_profile_id = None
if params["version"] == "v3" and params["language_profile"] is not None:
profiles = ""
for profile in self.send_get("languageProfile"):
if len(profiles) > 0:
profiles += ", "
profiles += profile["name"]
if profile["name"] == params["language_profile"]:
self.language_profile_id = profile["id"]
if not self.quality_profile_id:
raise Failed(f"Sonarr Error: language_profile: {params['language_profile']} does not exist in sonarr. Profiles available: {profiles}")
if self.language_profile_id is None:
self.language_profile_id = 1
self.tvdb = tvdb self.tvdb = tvdb
self.language = language self.language = language
self.url = params["url"] self.url = params["url"]
self.version = params["version"] self.version = params["version"]
self.token = params["token"] self.token = params["token"]
self.root_folder_path = params["root_folder_path"] self.root_folder_path = params["root_folder_path"]
self.language_profile_id = params["language_profile_id"]
self.add = params["add"] self.add = params["add"]
self.search = params["search"] self.search = params["search"]
self.season_folder = params["season_folder"] self.season_folder = params["season_folder"]
@ -50,8 +65,8 @@ class SonarrAPI:
if tag: if tag:
tag_cache = {} tag_cache = {}
for label in tag: for label in tag:
self.send_post(f"{self.base_url}tag", {"label": str(label)}) self.send_post("tag", {"label": str(label)})
for t in self.send_get(f"{self.base_url}tag"): for t in self.send_get("tag"):
tag_cache[t["label"]] = t["id"] tag_cache[t["label"]] = t["id"]
for label in tag: for label in tag:
if label in tag_cache: if label in tag_cache:
@ -81,7 +96,7 @@ class SonarrAPI:
} }
if tag_nums: if tag_nums:
url_json["tags"] = tag_nums url_json["tags"] = tag_nums
response = self.send_post(f"{self.base_url}series", url_json) response = self.send_post("series", url_json)
if response.status_code < 400: if response.status_code < 400:
logger.info(f"Added to Sonarr | {tvdb_id:<6} | {show.title}") logger.info(f"Added to Sonarr | {tvdb_id:<6} | {show.title}")
add_count += 1 add_count += 1
@ -95,8 +110,8 @@ class SonarrAPI:
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def send_get(self, url): def send_get(self, url):
return requests.get(url, params=self.url_params).json() return requests.get(f"{self.base_url}{url}", params=self.url_params).json()
@retry(stop_max_attempt_number=6, wait_fixed=10000) @retry(stop_max_attempt_number=6, wait_fixed=10000)
def send_post(self, url, url_json): def send_post(self, url, url_json):
return requests.post(url, json=url_json, params=self.url_params) return requests.post(f"{self.base_url}{url}", json=url_json, params=self.url_params)

Loading…
Cancel
Save