#lidarr_helpers.py from config import ( LIDARR_URL, LIDARR_API_KEY, ROOT_FOLDER_PATH, QUALITY_PROFILE_ID, MONITORED, MONITOR_NEW_ITEMS, SEARCH_FOR_MISSING_ALBUMS ) 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"} # 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 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} try: res = requests.get(lookup_url, headers=headers) res.raise_for_status() data = res.json() if not data: if verbose: print(f"[LIDARR] Ingen artist hittades för MBID {mbid}") return False artist = data[0] #payload = { # "foreignArtistId": mbid, # "artistName": artist["artistName"], # "monitored": True, # "qualityProfileId": QUALITY_PROFILE_ID, # "metadataProfileId": 1, # "rootFolderPath": ROOT_FOLDER_PATH, # "addOptions": { # "monitor": "all", # "searchForMissingAlbums": True # } payload = { "foreignArtistId": mbid, "artistName": artist["artistName"], "monitored": MONITORED, "qualityProfileId": QUALITY_PROFILE_ID, "metadataProfileId": 1, "rootFolderPath": ROOT_FOLDER_PATH, "addOptions": { "monitor": MONITOR_NEW_ITEMS, "searchForMissingAlbums": SEARCH_FOR_MISSING_ALBUMS } } if verbose: print(f"[LIDARR] Försöker lägga till: {artist['artistName']}") add_url = f"{LIDARR_URL}/api/v1/artist" res = requests.post(add_url, headers=headers, json=payload) 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 Exception as e: print(f"[LIDARR] ❌ Fel vid MBID {mbid}: {e}") return False