From d525342187e851b1b54a544d7013a41fd4bf97cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Sat, 23 Aug 2025 14:02:39 +0200 Subject: [PATCH] feat: detect local artists, rgs and releases --- src/awk/artists.awk | 14 +++++++++++--- src/awk/releasegroups.awk | 14 +++++++++++--- src/awk/releases.awk | 12 ++++++++++-- src/main.sh | 8 ++++++++ src/sh/theme.sh | 2 ++ 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/awk/artists.awk b/src/awk/artists.awk index e32866d..caea0a3 100644 --- a/src/awk/artists.awk +++ b/src/awk/artists.awk @@ -1,8 +1,16 @@ -BEGIN { OFS="\t" } -$2 == "Group" { name = format_group } -$2 != "Group" { name = format_person } +BEGIN { + OFS="\t" + local_artists[0] = 0 + delete local_artists[0] + while ((getline < file_local_artists) == 1) + local_artists[$1] = 1 + close(file_local_artists) +} { gsub("&", "\\\\&") + name = $2 == "Group" ? format_group : format_person + if (local_artists[$1]) + name = format_local name if ($4) name = name " " format_disambiguation sub("<>", $4, name) diff --git a/src/awk/releasegroups.awk b/src/awk/releasegroups.awk index f47a659..3e15acd 100644 --- a/src/awk/releasegroups.awk +++ b/src/awk/releasegroups.awk @@ -1,5 +1,11 @@ -BEGIN { OFS="\t" } - +BEGIN { + OFS="\t" + local_releasegroups[0] = 0 + delete local_releasegroups[0] + while ((getline < file_local_releasegroups) == 1) + local_releasegroups[$1] = 1 + close(file_local_releasegroups) +} { line_type="" line_sectype="" @@ -11,7 +17,9 @@ BEGIN { OFS="\t" } year = substr($4, 1, 4) + 0 title = $5 artistcredit = $6 - line_release = artist==artistcredit ? format_release : format_release_w_artist + line_release = artist == artistcredit ? format_release : format_release_w_artist + if (local_releasegroups[$1]) + line_release = format_local line_release switch (type) { case "Single": line_type=format_single; break case "Album": line_type=format_album; break diff --git a/src/awk/releases.awk b/src/awk/releases.awk index 98cc7e0..e43cfbc 100644 --- a/src/awk/releases.awk +++ b/src/awk/releases.awk @@ -1,5 +1,11 @@ -BEGIN { OFS="\t" } - +BEGIN { + OFS="\t" + local_releases[0] = 0 + delete local_releases[0] + while ((getline < file_local_releases) == 1) + local_releases[$1] = 1 + close(file_local_releases) +} { id = $1 status = $2 @@ -31,6 +37,8 @@ BEGIN { OFS="\t" } line = line "\t" release_format_title else line = line "\t" + if (local_releases[id]) + line = format_local line sub("<>", line_status, line) sub("<>", year, line) diff --git a/src/main.sh b/src/main.sh index 44ac567..2c3901b 100755 --- a/src/main.sh +++ b/src/main.sh @@ -106,9 +106,11 @@ if [ "${1:-}" = "--internal-search" ]; then ] | join("\t")' | awk \ -F "\t" \ + -v file_local_artists="${LOCALDATA_ARTISTS:-}" \ -v format_person="$AV_PERSON" \ -v format_group="$AV_GROUP" \ -v format_disambiguation="$AV_DISAMBIGUATION" \ + -v format_local="$FORMAT_LOCAL" \ "$AWK_ARTISTS" | tee "$RESULTS" || true @@ -124,6 +126,7 @@ if [ "${1:-}" = "--internal-search" ]; then ] | join("\t")' | awk \ -F "\t" \ + -v file_local_releasegroups="${LOCALDATA_RELEASEGROUPS:-}" \ -v format_release="$RGV_RELEASE" \ -v format_release_w_artist="$RGV_RELEASE_W_ARTIST" \ -v format_year="$RGV_YEAR" \ @@ -146,6 +149,7 @@ if [ "${1:-}" = "--internal-search" ]; then -v format_mixtape="$FORMAT_TYPE_SECONDARY_MIXTAPE" \ -v format_demo="$FORMAT_TYPE_SECONDARY_DEMO" \ -v format_fieldrec="$FORMAT_TYPE_SECONDARY_FIELDREC" \ + -v format_local="$FORMAT_LOCAL" \ "$AWK_RELEASEGROUPS" | cut -d "$(printf '\t')" -f 2- | column -t -s "$(printf '\t')" | @@ -171,6 +175,7 @@ if [ "${1:-}" = "--internal-list-releasegroups" ]; then awk \ -F "\t" \ -v artist="$name" \ + -v file_local_releasegroups="${LOCALDATA_RELEASEGROUPS:-}" \ -v format_release="$RGV_RELEASE" \ -v format_release_w_artist="$RGV_RELEASE_W_ARTIST" \ -v format_year="$RGV_YEAR" \ @@ -193,6 +198,7 @@ if [ "${1:-}" = "--internal-list-releasegroups" ]; then -v format_mixtape="$FORMAT_TYPE_SECONDARY_MIXTAPE" \ -v format_demo="$FORMAT_TYPE_SECONDARY_DEMO" \ -v format_fieldrec="$FORMAT_TYPE_SECONDARY_FIELDREC" \ + -v format_local="$FORMAT_LOCAL" \ "$AWK_RELEASEGROUPS" | sort -n -r | cut -d "$(printf '\t')" -f 2- | @@ -221,6 +227,7 @@ if [ "${1:-}" = "--internal-list-releases" ]; then ] | join("\t")' | awk \ -F "\t" \ + -v file_local_releases="${LOCALDATA_RELEASES:-}" \ -v release_official="$FORMAT_STATUS_OFFICIAL" \ -v release_promotion="$FORMAT_STATUS_PROMO" \ -v release_bootleg="$FORMAT_STATUS_BOOTLEG" \ @@ -234,6 +241,7 @@ if [ "${1:-}" = "--internal-list-releases" ]; then -v release_format_artist="$RV_ARTIST" \ -v rg_artist="$artist" \ -v rg_title="$title" \ + -v format_local="$FORMAT_LOCAL" \ "$AWK_RELEASES" | sort -n -r | cut -d "$(printf '\t')" -f 2- | diff --git a/src/sh/theme.sh b/src/sh/theme.sh index 01c0fdd..547af7d 100644 --- a/src/sh/theme.sh +++ b/src/sh/theme.sh @@ -10,6 +10,8 @@ CDESC="\033[38;5;254m" CLIFE="\033[38;5;251m" OFF="\033[m" +FORMAT_LOCAL="${FORMAT_LOCAL:-"\033[1m\033[48;5;88m"}" + # Prompts SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"} ARTIST_PROMPT="${ARTIST_PROMPT:-"🎤 ${CARTIST}%s$OFF 〉"}"