diff --git a/CDDB.py b/CDDB.py index 17e7786..33f2b50 100644 --- a/CDDB.py +++ b/CDDB.py @@ -69,7 +69,11 @@ def my_disc_metadata(**kwargs): def query(data_str, server_url=default_server, user=default_user, host=hostname, client_name=ROOT_LOGGER_NAME, client_version=version): url = f"{server_url}?cmd=cddb+query+{data_str}&hello={user}+{host}+{client_name}+{client_version}&proto={proto}" - response = urllib.request.urlopen(url) + try: + response = urllib.request.urlopen(url) + except urllib.error.URLError as e: + logger.warning("Error while getting data from CDDB database: %s", repr(e)) + return None header = response.readline().decode("utf-8").rstrip().split(" ", 3) header[0] = int(header[0]) @@ -94,13 +98,17 @@ def cddb(disc_id, server_url=default_server, user=default_user, host=hostname, c } # url = f"{server_url}?cmd=cddb+read+data+{disc_id}&hello={default_server}+{hostname}+{client_name}+{client_version}&proto={proto}" - response = urllib.request.urlopen(url) + try: + response = urllib.request.urlopen(url) + except urllib.error.URLError as e: + logger.warning("Error while getting data from CDDB database: %s", repr(e)) + return None header = response.readline().decode("utf-8").rstrip().split(" ", 3) header[0] = int(header[0]) if header[0] not in (210, ): - logger.error("Error while reading cddb entry: \"%d - %s\"", header[1], header[3]) + logger.error("Error while reading cddb entry: \"%s - %s\"", repr(header[1]), repr(header[3])) return None data = {} for line in response.readlines(): diff --git a/metadata.py b/metadata.py index 2e6aabe..0c7cf91 100644 --- a/metadata.py +++ b/metadata.py @@ -97,7 +97,10 @@ def get_disc_data(full_path, user_callback): for i in range(0, int(did.split('+')[1])): data["track_%02d" % (i + 1)] = None data = user_callback(common.CALLBACK_MAN_INPUT, data) - return media.CDDB.my_disc_metadata(**data) + try: + return media.CDDB.my_disc_metadata(**data) + except TypeError: + return None if len(q) == 1: logger.debug("Single database entry identified")