diff --git a/Arrs_Stack/playback_aware_lidarr_discovery.sh b/Arrs_Stack/playback_aware_lidarr_discovery.sh index b3fe62a..32d4073 100755 --- a/Arrs_Stack/playback_aware_lidarr_discovery.sh +++ b/Arrs_Stack/playback_aware_lidarr_discovery.sh @@ -529,8 +529,25 @@ EMBY_ARTIST_NAMES=$(echo "$EMBY_LIBRARY_JSON" | jq -r '.Items[] | .AlbumArtists[ EMBY_ARTIST_COUNT=$(echo "$EMBY_ARTIST_NAMES" | grep -c . 2>/dev/null || echo 0) log "$EMBY_ARTIST_COUNT album artists in Emby library" -_in_lidarr() { echo "$LIDARR_NAMES" | grep -iq "^${1}$"; } -_in_emby_library(){ [[ -n "$EMBY_ARTIST_NAMES" ]] && echo "$EMBY_ARTIST_NAMES" | grep -iq "^${1}$"; } +# MusicBrainz's canonical name for some artists (e.g. "blink‐182") uses a Unicode +# hyphen/dash rather than plain ASCII "-". Last.fm's candidate names are plain ASCII, +# so an exact-string match against Lidarr/Emby's names silently misses these artists +# every time — they never register as "already known" and get retried (and rejected +# as duplicates) on every future run. Normalize both sides before comparing. +_normalize_dashes() { + local n="$1" + n="${n//‐/-}" # U+2010 HYPHEN + n="${n//‑/-}" # U+2011 NON-BREAKING HYPHEN + n="${n//‒/-}" # U+2012 FIGURE DASH + n="${n//–/-}" # U+2013 EN DASH + n="${n//—/-}" # U+2014 EM DASH + echo "$n" +} +LIDARR_NAMES=$(_normalize_dashes "$LIDARR_NAMES") +EMBY_ARTIST_NAMES=$(_normalize_dashes "$EMBY_ARTIST_NAMES") + +_in_lidarr() { echo "$LIDARR_NAMES" | grep -iq "^$(_normalize_dashes "$1")$"; } +_in_emby_library(){ [[ -n "$EMBY_ARTIST_NAMES" ]] && echo "$EMBY_ARTIST_NAMES" | grep -iq "^$(_normalize_dashes "$1")$"; } # ============================================================================================== # ━━━ Score Stage 2 Candidates ━━━