ui-improvement: display release info

This commit is contained in:
2025-09-12 10:09:39 +02:00
parent 42e4aa02b6
commit 98145031d3
4 changed files with 62 additions and 44 deletions

View File

@@ -7,22 +7,22 @@ FORMAT_LOCAL="|>"
# Pointer to the track currently playing (playlist) # Pointer to the track currently playing (playlist)
FORMAT_CURRENT="->" FORMAT_CURRENT="->"
# Input prompts # Input prompt
# ============= # =============
# General search prompt # Search prompt
SEARCH_PROMPT="search> " SEARCH_PROMPT="search> "
# Prompt that takes an artist name as argument
ARTIST_PROMPT="%s > "
# Prompt that takes an artist name and a release name as arguments (in that
# order)
FULL_PROMPT="%s > %s > "
# Visual representation of current mode # Headers
# ===================================== # =======
# Sign to indicate `normal` mode # Header that displays artist's name
PROMPT_NORMAL="n " HEADER_ARTIST="%s > "
# Sign to indicate `insert` mode # Header that displays the release-group name after artist's
PROMPT_INSERT="i " HEADER_ARTIST_RELEASEGROUP="%s > %s > "
# Header that in addition to `HEADER_ARTIST_RELEASEGROUP` also shows some
# release information
HEADER_RELEASE="%s > %s > %s"
# The release information is formatted as follows (placeholders implicit):
HEADER_RELEASE_FORMAT="<<tracks>> tx <<media>> | <<label>> <<country>> <<year>>"
# Artist view # Artist view
# =========== # ===========

View File

@@ -18,22 +18,22 @@ FORMAT_LOCAL="${BLUE}|>$OFF"
# Pointer to the track currently playing (playlist) # Pointer to the track currently playing (playlist)
FORMAT_CURRENT="${WHITE}-->$OFF" FORMAT_CURRENT="${WHITE}-->$OFF"
# Input prompts # Input prompt
# ============= # =============
# General search prompt # Search prompt
SEARCH_PROMPT="search: " SEARCH_PROMPT="search: "
# Prompt that takes an artist name as argument
ARTIST_PROMPT="artist: %s: "
# Prompt that takes an artist name and a release name as arguments (in that
# order)
FULL_PROMPT="artist: %s / %s: "
# Visual representation of current mode # Headers
# ===================================== # =======
# Sign to indicate `normal` mode # Header that displays artist's name
PROMPT_NORMAL="n)" HEADER_ARTIST="artist: %s"
# Sign to indicate `insert` mode # Header that displays the release-group name after artist's
PROMPT_INSERT="i)" HEADER_ARTIST_RELEASEGROUP="artist: %s / album: %s"
# Header that in addition to `HEADER_ARTIST_RELEASEGROUP` also shows some
# release information
HEADER_RELEASE="artist: %s / album: %s (%s)"
# The release information is formatted as follows (placeholders implicit):
HEADER_RELEASE_FORMAT="<<label>> <<year>>"
# Artist view # Artist view
# =========== # ===========

View File

@@ -12,21 +12,38 @@ fzf_command_set_header() {
"$VIEW_LIST_ALBUMS") header="Search locally available album" ;; "$VIEW_LIST_ALBUMS") header="Search locally available album" ;;
"$VIEW_ARTIST") "$VIEW_ARTIST")
name="$(mb_artist "$mbid" | $JQ '.name')" name="$(mb_artist "$mbid" | $JQ '.name')"
header=$(printf "$ARTIST_PROMPT" "$name") header=$(printf "$HEADER_ARTIST" "$name")
;; ;;
"$VIEW_RELEASEGROUP") "$VIEW_RELEASEGROUP")
title="$(mb_releasegroup "$mbid" | title="$(mb_releasegroup "$mbid" |
$JQ '.title')" $JQ '.title')"
artist="$(mb_releasegroup "$mbid" | artist="$(mb_releasegroup "$mbid" |
$JQ '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')" $JQ '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
header=$(printf "$FULL_PROMPT" "$artist" "$title") header=$(printf "$HEADER_ARTIST_RELEASEGROUP" "$artist" "$title")
;; ;;
"$VIEW_RELEASE") "$VIEW_RELEASE")
title="$(mb_release "$mbid" | title="$(mb_release "$mbid" |
$JQ '.title')" $JQ '.title')"
artist="$(mb_release "$mbid" | artist="$(mb_release "$mbid" |
$JQ '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')" $JQ '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
header=$(printf "$FULL_PROMPT" "$artist" "$title") releaseinfo="$(mb_release "$mbid" |
$JQ '[
.date[:4],
(."label-info" | map(.label.name) | unique | join(", ")),
(.media | map(."track-count") | add),
(.media | map(.format) | unique | join(", ")),
.country
] | join("\t")' |
awk -F "\t" -v format="$HEADER_RELEASE_FORMAT" '{
gsub("&", "\\\\&")
sub("<<year>>", $1, format)
sub("<<label>>", $2, format)
sub("<<tracks>>", $3, format)
sub("<<media>>", $4, format)
sub("<<country>>", $5, format)
print format
}')"
header=$(printf "$HEADER_RELEASE" "$artist" "$title" "$releaseinfo")
;; ;;
esac esac
printf "+change-header(%s)" "${header:-"???"}" printf "+change-header(%s)" "${header:-"???"}"

View File

@@ -9,6 +9,7 @@ ESC=$(printf '\033')
FAINT="${ESC}[2m" FAINT="${ESC}[2m"
CARTIST="${ESC}[38;5;209m" CARTIST="${ESC}[38;5;209m"
CTITLE="${ESC}[38;5;229m" CTITLE="${ESC}[38;5;229m"
CRELINFO="${ESC}[38;5;179m"
CYEAR="${ESC}[38;5;179m" CYEAR="${ESC}[38;5;179m"
CDISAMB="$FAINT${ESC}[38;5;172m" CDISAMB="$FAINT${ESC}[38;5;172m"
CNOTE="${ESC}[38;5;242m" CNOTE="${ESC}[38;5;242m"
@@ -25,24 +26,24 @@ FORMAT_LOCAL="${FORMAT_LOCAL:-"🔆"}"
FORMAT_CURRENT="${FORMAT_CURRENT:-"👉"}" FORMAT_CURRENT="${FORMAT_CURRENT:-"👉"}"
export FORMAT_LOCAL FORMAT_CURRENT export FORMAT_LOCAL FORMAT_CURRENT
# Input prompts # Input prompt
# ============= # =============
# General search prompt # Search prompt
SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"} SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"}
# Prompt that takes an artist name as argument export SEARCH_PROMPT
ARTIST_PROMPT="${ARTIST_PROMPT:-"🎤 ${CARTIST}%s$OFF"}"
# Prompt that takes an artist name and a release name as arguments (in that
# order)
FULL_PROMPT="${FULL_PROMPT:-"🎤 ${CARTIST}%s$OFF${CTITLE}%s$OFF"}"
export SEARCH_PROMPT ARTIST_PROMPT FULL_PROMPT
# Visual representation of current mode # Headers
# ===================================== # =======
# Sign to indicate `normal` mode # Header that displays artist's name
PROMPT_NORMAL="${PROMPT_NORMAL:-"${FAINT}[n]${OFF}"}" HEADER_ARTIST="${HEADER_ARTIST:-"🎤 ${CARTIST}%s$OFF"}"
# Sign to indicate `insert` mode # Header that displays the release-group name after artist's
PROMPT_INSERT="${PROMPT_INSERT:-"${FAINT}[i]${OFF}"}" HEADER_ARTIST_RELEASEGROUP="${HEADER_ARTIST_RELEASEGROUP:-"🎤 ${CARTIST}%s$OFF${CTITLE}%s$OFF"}"
export PROMPT_NORMAL PROMPT_INSERT # Header that in addition to `HEADER_ARTIST_RELEASEGROUP` also shows some
# release information
HEADER_RELEASE="${HEADER_RELEASE:-"🎤 ${CARTIST}%s$OFF${CTITLE}%s$OFF 〉%s"}"
# The release information is formatted as follows (placeholders implicit):
HEADER_RELEASE_FORMAT="${HEADER_RELEASE_FORMAT:-"${CRELINFO}<<tracks>> tx <<media>> $OFF|$CRELINFO <<label>> <<country>> <<year>>$OFF"}"
export HEADER_ARTIST HEADER_ARTIST_RELEASEGROUP HEADER_RELEASE HEADER_RELEASE_FORMAT
# Artist view # Artist view
# =========== # ===========