From 615a732c2b9e592979e5bf79641dc083716b5ca8 Mon Sep 17 00:00:00 2001 From: Johan Hjorth Date: Mon, 23 Jun 2025 14:59:17 +0200 Subject: [PATCH] moved some hard-coded stuff to config --- config.py | 26 +++++++- lidarr_helpers.py | 152 ++++++++++++++-------------------------------- 2 files changed, 69 insertions(+), 109 deletions(-) diff --git a/config.py b/config.py index 36f107f..e80b724 100644 --- a/config.py +++ b/config.py @@ -1,15 +1,35 @@ -# config.py +# # config.py +# try: +# from config_local import * +# except ImportError: +# print("⚠️ Du måste skapa en config_local.py med dina API-nycklar.") + +# ROOT_FOLDER_PATH = "/data/media/music2" +# QUALITY_PROFILE_ID = 1 + +# MIN_PLAYS = 10 +# RECENT_MONTHS = 3 +# MAX_SIMILAR_PER_ART = 20 +# SIMILAR_MATCH_MIN = 0.5 +# CACHE_TTL_HOURS = 24 +# DEBUG_PRINT = True + try: from config_local import * except ImportError: print("⚠️ Du måste skapa en config_local.py med dina API-nycklar.") ROOT_FOLDER_PATH = "/data/media/music2" -QUALITY_PROFILE_ID = 1 +QUALITY_PROFILE_ID = 4 -MIN_PLAYS = 10 +MONITORED = True +MONITOR_NEW_ITEMS = "all" +SEARCH_FOR_MISSING_ALBUMS = True + +MIN_PLAYS = 3 RECENT_MONTHS = 3 MAX_SIMILAR_PER_ART = 20 SIMILAR_MATCH_MIN = 0.5 + CACHE_TTL_HOURS = 24 DEBUG_PRINT = True diff --git a/lidarr_helpers.py b/lidarr_helpers.py index 7033014..79d0b8f 100644 --- a/lidarr_helpers.py +++ b/lidarr_helpers.py @@ -1,111 +1,51 @@ -from config import * + import requests -import json -# import requests -# import json -# from config import * +from config import ( + LIDARR_URL, + LIDARR_API_KEY, + ROOT_FOLDER_PATH, + QUALITY_PROFILE_ID, + MONITORED, + MONITOR_NEW_ITEMS, + SEARCH_FOR_MISSING_ALBUMS, + DEBUG_PRINT, +) -# 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"} +def lidarr_add_artist(artist): + payload = { + "artistName": artist["artistName"], + "foreignArtistId": artist["foreignArtistId"], + "rootFolderPath": ROOT_FOLDER_PATH, + "qualityProfileId": QUALITY_PROFILE_ID, + "metadataProfileId": 1, + "monitored": MONITORED, + "monitorNewItems": MONITOR_NEW_ITEMS, + "addOptions": { + "monitor": MONITOR_NEW_ITEMS, + "searchForMissingAlbums": SEARCH_FOR_MISSING_ALBUMS + }, + "artistType": artist.get("artistType", "Group"), + "disambiguation": artist.get("disambiguation", ""), + "overview": artist.get("overview", ""), + "images": artist.get("images", []), + "links": artist.get("links", []), + "folder": artist["folder"] + } -# 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 - -from config import * -import requests -import json - -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} + if DEBUG_PRINT: + print(f"[LIDARR DEBUG] Artist hittad: {artist['artistName']} (MBID: {artist['foreignArtistId']})") + print(f"[LIDARR DEBUG] Payload: {payload}") 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 - } - } - - 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 + response = requests.post( + f"{LIDARR_URL}/api/v1/artist", + headers={"X-Api-Key": LIDARR_API_KEY}, + json=payload + ) + response.raise_for_status() + return response.json() + except requests.exceptions.HTTPError as e: + print(f"[LIDARR ERROR] HTTP-fel vid tillägg av MBID {artist['foreignArtistId']}: {e}") + if e.response is not None: + print(f"[LIDARR ERROR] Svar från servern: {e.response.json()}") + return None