From 8f60e5dde469305c32466b18d1485f4e1ca4306d Mon Sep 17 00:00:00 2001 From: FailedProxy Date: Thu, 23 Apr 2026 16:17:59 -0400 Subject: [PATCH] still working on lidarr endoints --- Media/lidarr_cleanup.sh | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Media/lidarr_cleanup.sh b/Media/lidarr_cleanup.sh index 51d4cec..605549f 100644 --- a/Media/lidarr_cleanup.sh +++ b/Media/lidarr_cleanup.sh @@ -165,21 +165,44 @@ check_api "$LIDARR_URL" "Lidarr" || { info "Querying Lidarr API: $LIDARR_URL" -TRACKFILE_RESPONSE=$(lidarr_api "trackFile") || { - error "Failed to fetch track files from Lidarr — check URL and API key" - notify "Lidarr cleanup failed on $(hostname) — API unreachable" "Lidarr Cleanup" "warning" +# Lidarr requires artistId parameter for trackFile endpoint +# Step 1: Get all artist IDs +# Step 2: For each artist, get their track files +ARTIST_RESPONSE=$(lidarr_api "artist") || { + error "Failed to fetch artists from Lidarr — check URL and API key" + notify "Lidarr cleanup failed on $(hostname) — could not fetch artists" "Lidarr Cleanup" "warning" exit 1 } +ARTIST_IDS=$(echo "$ARTIST_RESPONSE" | jq -r '.[].id' 2>/dev/null) +ARTIST_COUNT=$(echo "$ARTIST_IDS" | grep -c "[0-9]" 2>/dev/null || echo 0) + +if [[ "$ARTIST_COUNT" -eq 0 ]]; then + warn "No artists found in Lidarr — library may be empty" + exit 0 +fi + +info "Found $ARTIST_COUNT artists — fetching track files..." + TMP_DIR="/tmp/lidarr_cleanup_$$" mkdir -p "$TMP_DIR" trap "rm -rf $TMP_DIR" EXIT TRACKED_FILE="$TMP_DIR/tracked_paths.txt" -echo "$TRACKFILE_RESPONSE" | jq -r '.[].path' 2>/dev/null | sort > "$TRACKED_FILE" +> "$TRACKED_FILE" + +while IFS= read -r artist_id; do + [[ -z "$artist_id" ]] && continue + ARTIST_TRACKS=$(lidarr_api "trackFile?artistId=${artist_id}" 2>/dev/null) + if [[ -n "$ARTIST_TRACKS" ]]; then + echo "$ARTIST_TRACKS" | jq -r '.[].path' 2>/dev/null >> "$TRACKED_FILE" + fi +done <<< "$ARTIST_IDS" + +sort -u "$TRACKED_FILE" -o "$TRACKED_FILE" TRACKED_COUNT=$(wc -l < "$TRACKED_FILE") -success "Lidarr tracks $TRACKED_COUNT files" +success "Lidarr tracks $TRACKED_COUNT files across $ARTIST_COUNT artists" if [[ "$TRACKED_COUNT" -eq 0 ]]; then warn "No tracked files returned — Lidarr may not have scanned yet or library is empty"