diff --git a/core/auto_process/common.py b/core/auto_process/common.py new file mode 100644 index 00000000..4d4e6ae8 --- /dev/null +++ b/core/auto_process/common.py @@ -0,0 +1,38 @@ +import requests + +from core import logger + + +def command_complete(url, params, headers, section): + try: + r = requests.get(url, params=params, headers=headers, stream=True, verify=False, timeout=(30, 60)) + except requests.ConnectionError: + logger.error("Unable to open URL: {0}".format(url), section) + return None + if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: + logger.error("Server returned status {0}".format(r.status_code), section) + return None + else: + try: + return r.json()['state'] + except (ValueError, KeyError): + # ValueError catches simplejson's JSONDecodeError and json's ValueError + logger.error("{0} did not return expected json data.".format(section), section) + return None + + +def completed_download_handling(url2, headers, section="MAIN"): + try: + r = requests.get(url2, params={}, headers=headers, stream=True, verify=False, timeout=(30, 60)) + except requests.ConnectionError: + logger.error("Unable to open URL: {0}".format(url2), section) + return False + if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: + logger.error("Server returned status {0}".format(r.status_code), section) + return False + else: + try: + return r.json().get("enableCompletedDownloadHandling", False) + except ValueError: + # ValueError catches simplejson's JSONDecodeError and json's ValueError + return False diff --git a/core/auto_process/movies.py b/core/auto_process/movies.py index a82529fd..6a5cf304 100644 --- a/core/auto_process/movies.py +++ b/core/auto_process/movies.py @@ -8,6 +8,7 @@ import requests import core from core import logger, transcoder +from core.auto_process.common import command_complete, completed_download_handling from core.scene_exceptions import process_all_exceptions from core.utils import convert_to_ascii, find_download, find_imdbid, import_subs, list_media_files, remote_dir, remove_dir, report_nzb, server_responding @@ -336,41 +337,6 @@ def process(section, dir_name, input_name=None, status=0, client_agent="manual", return [1, "{0}: Failed to post-process - No change in status".format(section)] -def command_complete(url, params, headers, section): - try: - r = requests.get(url, params=params, headers=headers, stream=True, verify=False, timeout=(30, 60)) - except requests.ConnectionError: - logger.error("Unable to open URL: {0}".format(url), section) - return None - if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: - logger.error("Server returned status {0}".format(r.status_code), section) - return None - else: - try: - return r.json()['state'] - except (ValueError, KeyError): - # ValueError catches simplejson's JSONDecodeError and json's ValueError - logger.error("{0} did not return expected json data.".format(section), section) - return None - - -def completed_download_handling(url2, headers, section="MAIN"): - try: - r = requests.get(url2, params={}, headers=headers, stream=True, verify=False, timeout=(30, 60)) - except requests.ConnectionError: - logger.error("Unable to open URL: {0}".format(url2), section) - return False - if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: - logger.error("Server returned status {0}".format(r.status_code), section) - return False - else: - try: - return r.json().get("enableCompletedDownloadHandling", False) - except ValueError: - # ValueError catches simplejson's JSONDecodeError and json's ValueError - return False - - def get_release(base_url, imdb_id=None, download_id=None, release_id=None): results = {} params = {} diff --git a/core/auto_process/music.py b/core/auto_process/music.py index 88521774..01300fb9 100644 --- a/core/auto_process/music.py +++ b/core/auto_process/music.py @@ -8,6 +8,7 @@ import requests import core from core import logger +from core.auto_process.common import command_complete from core.scene_exceptions import process_all_exceptions from core.utils import convert_to_ascii, list_media_files, remote_dir, remove_dir, server_responding @@ -157,24 +158,6 @@ def process(section, dir_name, input_name=None, status=0, client_agent="manual", return [1, "{0}: Failed to post-process. {1} does not support failed downloads".format(section, section)] # Return as failed to flag this in the downloader. -def command_complete(url, params, headers, section): - try: - r = requests.get(url, params=params, headers=headers, stream=True, verify=False, timeout=(30, 60)) - except requests.ConnectionError: - logger.error("Unable to open URL: {0}".format(url), section) - return None - if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: - logger.error("Server returned status {0}".format(r.status_code), section) - return None - else: - try: - return r.json()['state'] - except (ValueError, KeyError): - # ValueError catches simplejson's JSONDecodeError and json's ValueError - logger.error("{0} did not return expected json data.".format(section), section) - return None - - def get_status(url, apikey, dir_name): logger.debug("Attempting to get current status for release:{0}".format(os.path.basename(dir_name))) diff --git a/core/auto_process/tv.py b/core/auto_process/tv.py index a7b17edb..6e266639 100644 --- a/core/auto_process/tv.py +++ b/core/auto_process/tv.py @@ -10,6 +10,7 @@ import requests import core from core import logger, transcoder +from core.auto_process.common import command_complete, completed_download_handling from core.forks import auto_fork from core.scene_exceptions import process_all_exceptions from core.utils import convert_to_ascii, flatten, import_subs, list_media_files, remote_dir, remove_dir, report_nzb, server_responding @@ -338,38 +339,3 @@ def process(section, dir_name, input_name=None, failed=False, client_agent="manu return [1, "{0}: Failed to post-process {1}".format(section, input_name)] else: return [1, "{0}: Failed to post-process - Returned log from {1} was not as expected.".format(section, section)] # We did not receive Success confirmation. - - -def command_complete(url, params, headers, section): - try: - r = requests.get(url, params=params, headers=headers, stream=True, verify=False, timeout=(30, 60)) - except requests.ConnectionError: - logger.error("Unable to open URL: {0}".format(url), section) - return None - if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: - logger.error("Server returned status {0}".format(r.status_code), section) - return None - else: - try: - return r.json()['state'] - except (ValueError, KeyError): - # ValueError catches simplejson's JSONDecodeError and json's ValueError - logger.error("{0} did not return expected json data.".format(section), section) - return None - - -def completed_download_handling(url2, headers, section="MAIN"): - try: - r = requests.get(url2, params={}, headers=headers, stream=True, verify=False, timeout=(30, 60)) - except requests.ConnectionError: - logger.error("Unable to open URL: {0}".format(url2), section) - return False - if r.status_code not in [requests.codes.ok, requests.codes.created, requests.codes.accepted]: - logger.error("Server returned status {0}".format(r.status_code), section) - return False - else: - try: - return r.json().get("enableCompletedDownloadHandling", False) - except ValueError: - # ValueError catches simplejson's JSONDecodeError and json's ValueError - return False