From 833b0d37b6f2c7c836661e049438f78c0e172930 Mon Sep 17 00:00:00 2001 From: Johan Hjorth Date: Mon, 23 Jun 2025 14:28:34 +0200 Subject: [PATCH] updated with less debugging --- lidarr_helpers.py | 121 +++++++++++++++++++++++++++++----------------- 1 file changed, 76 insertions(+), 45 deletions(-) diff --git a/lidarr_helpers.py b/lidarr_helpers.py index 089c716..7033014 100644 --- a/lidarr_helpers.py +++ b/lidarr_helpers.py @@ -1,80 +1,111 @@ from config import * import requests import json +# import requests +# import json +# from config import * # def lidarr_api_add_artist(mbid): # lookup_url = f"{LIDARR_URL}/api/v1/artist/lookup?term=mbid:{mbid}" # headers = {"X-Api-Key": LIDARR_API_KEY, "Content-Type": "application/json"} -# res = requests.get(lookup_url, headers=headers) -# if not res.ok or not res.json(): +# try: +# res = requests.get(lookup_url, headers=headers) +# res.raise_for_status() +# artists = res.json() + +# if not artists: +# print(f"[LIDARR DEBUG] Ingen artist hittades för MBID {mbid}") +# return False + +# artist = artists[0] +# print(f"[LIDARR DEBUG] Artist hittad: {artist['artistName']} (MBID: {mbid})") + +# # Bygg payload från lookup-objektet +# payload = artist.copy() +# payload.update({ +# "monitored": True, +# "qualityProfileId": QUALITY_PROFILE_ID, +# "metadataProfileId": 1, +# "rootFolderPath": ROOT_FOLDER_PATH, +# "addOptions": { +# "monitor": "all", # Bevakning av alla album +# "searchForMissingAlbums": True +# } +# }) + +# add_url = f"{LIDARR_URL}/api/v1/artist" +# print(f"[LIDARR DEBUG] Payload: {json.dumps(payload, indent=2)}") +# post_res = requests.post(add_url, headers=headers, json=payload) +# post_res.raise_for_status() + +# print(f"[LIDARR DEBUG] Lyckades lägga till: {artist['artistName']}") +# return True + +# except requests.exceptions.HTTPError as http_err: +# print(f"[LIDARR ERROR] HTTP-fel vid tillägg av MBID {mbid}: {http_err}") +# if http_err.response is not None: +# print(f"[LIDARR ERROR] Svar från servern: {http_err.response.text}") +# return False +# except Exception as e: +# print(f"[LIDARR ERROR] Annat fel vid tillägg av MBID {mbid}: {e}") # return False -# artist = res.json()[0] -# payload = { -# "foreignArtistId": artist['foreignArtistId'], -# "artistName": artist['artistName'], -# "monitored": True, -# "qualityProfileId": QUALITY_PROFILE_ID, -# "metadataProfileId": 1, -# "rootFolderPath": ROOT_FOLDER, -# "addOptions": { -# "monitor": "all", -# "searchForMissingAlbums": True -# } -# } - -# add_url = f"{LIDARR_URL}/api/v1/artist" -# post_res = requests.post(add_url, headers=headers, json=payload) -# return post_res.ok - +from config import * import requests import json -from config import * -def lidarr_api_add_artist(mbid): +def lidarr_api_add_artist(mbid, verbose=False): lookup_url = f"{LIDARR_URL}/api/v1/artist/lookup?term=mbid:{mbid}" - headers = {"X-Api-Key": LIDARR_API_KEY, "Content-Type": "application/json"} + headers = {"X-Api-Key": LIDARR_API_KEY} try: res = requests.get(lookup_url, headers=headers) res.raise_for_status() - artists = res.json() + data = res.json() - if not artists: - print(f"[LIDARR DEBUG] Ingen artist hittades för MBID {mbid}") + if not data: + if verbose: + print(f"[LIDARR] Ingen artist hittades för MBID {mbid}") return False - artist = artists[0] - print(f"[LIDARR DEBUG] Artist hittad: {artist['artistName']} (MBID: {mbid})") - - # Bygg payload från lookup-objektet - payload = artist.copy() - payload.update({ + artist = data[0] + payload = { + "foreignArtistId": mbid, + "artistName": artist["artistName"], "monitored": True, "qualityProfileId": QUALITY_PROFILE_ID, "metadataProfileId": 1, "rootFolderPath": ROOT_FOLDER_PATH, "addOptions": { - "monitor": "all", # Bevakning av alla album + "monitor": "all", "searchForMissingAlbums": True } - }) + } + + if verbose: + print(f"[LIDARR] Försöker lägga till: {artist['artistName']}") add_url = f"{LIDARR_URL}/api/v1/artist" - print(f"[LIDARR DEBUG] Payload: {json.dumps(payload, indent=2)}") - post_res = requests.post(add_url, headers=headers, json=payload) - post_res.raise_for_status() + res = requests.post(add_url, headers=headers, json=payload) - print(f"[LIDARR DEBUG] Lyckades lägga till: {artist['artistName']}") + if res.status_code == 400: + errors = res.json() + for err in errors: + if err.get("errorCode") == "ArtistExistsValidator": + print(f"[LIDARR] {artist['artistName']} finns redan.") + return False + if err.get("errorCode") == "RootFolderExistsValidator": + print(f"[LIDARR] Fel: Angiven rotmapp finns inte: {ROOT_FOLDER_PATH}") + return False + print(f"[LIDARR] Fel: {res.text}") + return False + + res.raise_for_status() + + print(f"[LIDARR] ✅ Tillagd: {artist['artistName']}") return True - except requests.exceptions.HTTPError as http_err: - print(f"[LIDARR ERROR] HTTP-fel vid tillägg av MBID {mbid}: {http_err}") - if http_err.response is not None: - print(f"[LIDARR ERROR] Svar från servern: {http_err.response.text}") - return False except Exception as e: - print(f"[LIDARR ERROR] Annat fel vid tillägg av MBID {mbid}: {e}") + print(f"[LIDARR] ❌ Fel vid MBID {mbid}: {e}") return False -