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)
FORMAT_CURRENT="->"
# Input prompts
# Input prompt
# =============
# General search prompt
# Search prompt
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
# =====================================
# Sign to indicate `normal` mode
PROMPT_NORMAL="n "
# Sign to indicate `insert` mode
PROMPT_INSERT="i "
# Headers
# =======
# Header that displays artist's name
HEADER_ARTIST="%s > "
# Header that displays the release-group name after artist's
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
# ===========

View File

@@ -18,22 +18,22 @@ FORMAT_LOCAL="${BLUE}|>$OFF"
# Pointer to the track currently playing (playlist)
FORMAT_CURRENT="${WHITE}-->$OFF"
# Input prompts
# Input prompt
# =============
# General search prompt
# Search prompt
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
# =====================================
# Sign to indicate `normal` mode
PROMPT_NORMAL="n)"
# Sign to indicate `insert` mode
PROMPT_INSERT="i)"
# Headers
# =======
# Header that displays artist's name
HEADER_ARTIST="artist: %s"
# Header that displays the release-group name after artist's
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
# ===========

View File

@@ -12,21 +12,38 @@ fzf_command_set_header() {
"$VIEW_LIST_ALBUMS") header="Search locally available album" ;;
"$VIEW_ARTIST")
name="$(mb_artist "$mbid" | $JQ '.name')"
header=$(printf "$ARTIST_PROMPT" "$name")
header=$(printf "$HEADER_ARTIST" "$name")
;;
"$VIEW_RELEASEGROUP")
title="$(mb_releasegroup "$mbid" |
$JQ '.title')"
artist="$(mb_releasegroup "$mbid" |
$JQ '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
header=$(printf "$FULL_PROMPT" "$artist" "$title")
header=$(printf "$HEADER_ARTIST_RELEASEGROUP" "$artist" "$title")
;;
"$VIEW_RELEASE")
title="$(mb_release "$mbid" |
$JQ '.title')"
artist="$(mb_release "$mbid" |
$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
printf "+change-header(%s)" "${header:-"???"}"

View File

@@ -9,6 +9,7 @@ ESC=$(printf '\033')
FAINT="${ESC}[2m"
CARTIST="${ESC}[38;5;209m"
CTITLE="${ESC}[38;5;229m"
CRELINFO="${ESC}[38;5;179m"
CYEAR="${ESC}[38;5;179m"
CDISAMB="$FAINT${ESC}[38;5;172m"
CNOTE="${ESC}[38;5;242m"
@@ -25,24 +26,24 @@ FORMAT_LOCAL="${FORMAT_LOCAL:-"🔆"}"
FORMAT_CURRENT="${FORMAT_CURRENT:-"👉"}"
export FORMAT_LOCAL FORMAT_CURRENT
# Input prompts
# Input prompt
# =============
# General search prompt
# Search prompt
SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"}
# Prompt that takes an artist name as argument
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
export SEARCH_PROMPT
# Visual representation of current mode
# =====================================
# Sign to indicate `normal` mode
PROMPT_NORMAL="${PROMPT_NORMAL:-"${FAINT}[n]${OFF}"}"
# Sign to indicate `insert` mode
PROMPT_INSERT="${PROMPT_INSERT:-"${FAINT}[i]${OFF}"}"
export PROMPT_NORMAL PROMPT_INSERT
# Headers
# =======
# Header that displays artist's name
HEADER_ARTIST="${HEADER_ARTIST:-"🎤 ${CARTIST}%s$OFF"}"
# Header that displays the release-group name after artist's
HEADER_ARTIST_RELEASEGROUP="${HEADER_ARTIST_RELEASEGROUP:-"🎤 ${CARTIST}%s$OFF${CTITLE}%s$OFF"}"
# 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
# ===========