From 8a597ef1b04ab00947af9aec3373b75aaa3466a6 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Wed, 21 Jun 2023 14:36:01 -0400 Subject: [PATCH] Reorganize tadb lookup to actually work --- vrobbler/apps/music/theaudiodb.py | 37 ++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/vrobbler/apps/music/theaudiodb.py b/vrobbler/apps/music/theaudiodb.py index 3163ca3..77e0b34 100644 --- a/vrobbler/apps/music/theaudiodb.py +++ b/vrobbler/apps/music/theaudiodb.py @@ -15,25 +15,28 @@ logger = logging.getLogger(__name__) def lookup_artist_from_tadb(name_or_id: str) -> dict: artist_info = {} - name = urllib.parse.quote(name_or_id) - response = requests.get(ARTIST_SEARCH_URL + name) + response = None - found_by_name = True - if response.status_code != 200: - logger.warn(f"Bad response from TADB: {response.status_code}") - found_by_name = False + # Look for an ID as an integer + try: + tadb_id = int(name_or_id) + except ValueError: + tadb_id = None - if not response.content: - logger.warn(f"Bad content from TADB: {response.content}") - found_by_name = False + if tadb_id: + response = requests.get(ARTIST_FETCH_URL + str(tadb_id)) - if "null" in str(response.content): - logger.warn(f"Bad content from TADB: {response.content}") - found_by_name = False + if response.status_code != 200: + logger.warn(f"Bad response from TADB: {response.status_code}") + return artist_info - if not found_by_name: - # Try using an TABD ID - response = requests.get(ARTIST_FETCH_URL + name_or_id) + if not response.content: + logger.warn(f"Bad content from TADB: {response.content}") + return artist_info + + if not response: + name = urllib.parse.quote(name_or_id) + response = requests.get(ARTIST_SEARCH_URL + name) if response.status_code != 200: logger.warn(f"Bad response from TADB: {response.status_code}") @@ -43,6 +46,10 @@ def lookup_artist_from_tadb(name_or_id: str) -> dict: logger.warn(f"Bad content from TADB: {response.content}") return artist_info + if '{"artists": null}' in str(response.content): + logger.warn(f"Bad content from TADB: {response.content}") + return artist_info + results = json.loads(response.content) if results["artists"]: artist = results["artists"][0]