rg support
This commit is contained in:
@@ -1,57 +1,43 @@
|
|||||||
BEGIN {
|
BEGIN { OFS="\t" }
|
||||||
OFS="\t"
|
|
||||||
year[0] = 0; del year[0]
|
|
||||||
title[0] = 0; del title[0]
|
|
||||||
type[0] = 0; del type[0]
|
|
||||||
id[0] = 0; del id[0]
|
|
||||||
score[0] = 0; del score[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_score(rgdt, rgti, dt, ti, qy, res) {
|
|
||||||
res = 0
|
|
||||||
if (rgdt == dt)
|
|
||||||
res = res + 5
|
|
||||||
if (rgti == ti)
|
|
||||||
res = res + 5
|
|
||||||
if (qy == "normal" || qy == "unknown")
|
|
||||||
res = res + 1
|
|
||||||
if (qy == "high")
|
|
||||||
res = res + 2
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
gsub("&", "\\\\&")
|
gsub("&", "\\\\&")
|
||||||
rgmi = $1 # Release Group ID
|
id = $1
|
||||||
rgty = $2 # Release Group Type
|
status = $2
|
||||||
rgdt = substr($3, 1, 4) + 0 # Release Group Year
|
year = substr($3, 1, 4) + 0
|
||||||
rgti = $4 # Release Group Title
|
year = year == 0 ? "" : year
|
||||||
mi = $5 # MusicBrainz Release ID
|
covercount = $4
|
||||||
qy = $6 # Release Quality
|
label = $5
|
||||||
dt = substr($7, 1, 4) + 0 # Release Year
|
trackcnt = $6
|
||||||
ti = $8 # Release Title
|
media = $7
|
||||||
s = get_score(rgdt, rgti, dt, ti, qy)
|
country = $8
|
||||||
if (score[rgmi] < s) {
|
title = $9
|
||||||
score[rgmi] = s
|
artist = $10
|
||||||
year[rgmi] = dt
|
switch (status) {
|
||||||
title[rgmi] = ti
|
case "Official": line_status=release_official; break
|
||||||
type[rgmi] = rgty
|
case "Promotion": line_status=release_promotion; break
|
||||||
id[rgmi] = mi
|
case "Bootleg": line_status=release_bootleg; break
|
||||||
}
|
case "Pseudo-release": line_status=release_pseudo; break
|
||||||
|
case "Withdrawn": line_status=release_withdrawn; break
|
||||||
|
case "Expunged": line_status=release_expunged; break
|
||||||
|
case "Cancelled": line_status=release_cancelled; break
|
||||||
|
default: line_status=""
|
||||||
}
|
}
|
||||||
|
line = release_format
|
||||||
|
if (artist != rg_artist && title != rg_title)
|
||||||
|
line = line "\t" release_format_title_artist
|
||||||
|
else if (artist != rg_artist && title == rg_title)
|
||||||
|
line = line "\t" release_format_artist
|
||||||
|
else if (artist != rg_artist && title == rg_title)
|
||||||
|
line = line "\t" release_format_title
|
||||||
|
|
||||||
END {
|
sub("<<status>>", line_status, line)
|
||||||
for (rgmi in id) {
|
sub("<<year>>", year, line)
|
||||||
if (type[rgmi] == "Single")
|
sub("<<tracks>>", trackcnt, line)
|
||||||
line = format_single
|
sub("<<media>>", media, line)
|
||||||
else if (type[rgmi] == "Album")
|
sub("<<label>>", label, line)
|
||||||
line = format_album
|
sub("<<title>>", title, line)
|
||||||
else if (type[rgmi] == "EP")
|
sub("<<artist>>", artist, line)
|
||||||
line = format_ep
|
sortk = year ? year : 0
|
||||||
else
|
print sortk, line, id
|
||||||
line = format_album
|
|
||||||
sub("<<year>>", dt, line)
|
|
||||||
sub("<<title>>", ti, line)
|
|
||||||
print mi, line
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
68
src/main.sh
68
src/main.sh
@@ -76,11 +76,6 @@ if [ "${1:-}" = "--internal-search" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${1:-}" = "--internal-list-releases" ]; then
|
|
||||||
print "NOT IMPLEMENTED"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${1:-}" = "--internal-list-releasegroups-fresh" ]; then
|
if [ "${1:-}" = "--internal-list-releasegroups-fresh" ]; then
|
||||||
artistid="$2"
|
artistid="$2"
|
||||||
cache_delete_artist "$artistid"
|
cache_delete_artist "$artistid"
|
||||||
@@ -133,6 +128,47 @@ if [ "${1:-}" = "--internal-list-releasegroups" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "${1:-}" = "--internal-list-releases" ]; then
|
||||||
|
title="$(mb_releasegroup "$2" |
|
||||||
|
$JQ -r '.title')"
|
||||||
|
artist="$(mb_releasegroup "$2" |
|
||||||
|
$JQ -r '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
|
||||||
|
mb_releasegroup_releases "$2" |
|
||||||
|
$JQ -r '."releases"[] | [
|
||||||
|
.id,
|
||||||
|
.status,
|
||||||
|
.date,
|
||||||
|
."cover-art-archive".count,
|
||||||
|
(."label-info" | map(.label.name) | unique | join(", ")),
|
||||||
|
(.media | map(."track-count") | add),
|
||||||
|
(.media | map(.format) | unique | join(", ")),
|
||||||
|
.country,
|
||||||
|
.title,
|
||||||
|
(."artist-credit" | map(([.name, .joinphrase]|join(""))) | join(""))
|
||||||
|
] | join("\t")' |
|
||||||
|
awk \
|
||||||
|
-F "\t" \
|
||||||
|
-v release_official="$RELEASE_OFFICIAL" \
|
||||||
|
-v release_promotion="$RELEASE_PROMOTION" \
|
||||||
|
-v release_bootleg="$RELEASE_BOOTLEG" \
|
||||||
|
-v release_pseudo="$RELEASE_PSEUDO" \
|
||||||
|
-v release_withdrawn="$RELEASE_WITHDRAWN" \
|
||||||
|
-v release_expunged="$RELEASE_EXPUNGED" \
|
||||||
|
-v release_cancelled="$RELEASE_CANCELLED" \
|
||||||
|
-v release_format="$RELEASE_FORMAT" \
|
||||||
|
-v release_format_title_artist="$RELEASE_TITLE_ARTIST" \
|
||||||
|
-v release_format_title="$RELEASE_TITLE" \
|
||||||
|
-v release_format_artist="$RELEASE_ARTIST" \
|
||||||
|
-v rg_artist="$artist" \
|
||||||
|
-v rg_title="$title" \
|
||||||
|
"$AWK_RELEASES" |
|
||||||
|
sort -n -r |
|
||||||
|
cut -d "$(printf '\t')" -f 2- |
|
||||||
|
column -t -s "$(printf '\t')" |
|
||||||
|
sed 's| \+\([0-9a-f-]\+\)$|\t\1|'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${1:-}" = "--help" ]; then
|
if [ "${1:-}" = "--help" ]; then
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
Usage: $0 [ --help | --show-artist <mbid> ]
|
Usage: $0 [ --help | --show-artist <mbid> ]
|
||||||
@@ -180,17 +216,29 @@ while true; do
|
|||||||
--bind="ctrl-d:half-page-down,ctrl-u:half-page-up" \
|
--bind="ctrl-d:half-page-down,ctrl-u:half-page-up" \
|
||||||
--bind="ctrl-r:reload:$0 --internal-list-releasegroups-fresh \"$2\""
|
--bind="ctrl-r:reload:$0 --internal-list-releasegroups-fresh \"$2\""
|
||||||
)
|
)
|
||||||
[ "$sel" ] && set -- "--show-release" "$sel"
|
[ "$sel" ] && set -- "--show-releasegroup" "$sel"
|
||||||
;;
|
;;
|
||||||
"--show-release-group")
|
"--show-releasegroup")
|
||||||
title="$(mb_releasegroup "$2" |
|
title="$(mb_releasegroup "$2" |
|
||||||
$JQ -r '.title')"
|
$JQ -r '.title')"
|
||||||
artist="$(mb_releasegroup "$2" |
|
artist="$(mb_releasegroup "$2" |
|
||||||
$JQ -r '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
|
$JQ -r '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
|
||||||
echo "$title"
|
sel=$(
|
||||||
echo "$artist"
|
$0 --internal-list-releases "$2" |
|
||||||
|
$FZF \
|
||||||
|
--ansi \
|
||||||
|
--reverse \
|
||||||
|
--cycle \
|
||||||
|
--no-sort \
|
||||||
|
--query="$RELEASE_OFFICIAL " \
|
||||||
|
--delimiter="\t" \
|
||||||
|
--prompt="$(printf "$FULL_PROMPT" "$artist" "$title")" \
|
||||||
|
--accept-nth="{2}" \
|
||||||
|
--with-nth="{1}" \
|
||||||
|
--bind="ctrl-d:half-page-down,ctrl-u:half-page-up"
|
||||||
|
)
|
||||||
exit 0
|
exit 0
|
||||||
set -- ""
|
[ "$sel" ] && set -- "--show-release" "$sel"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
sel=$(
|
sel=$(
|
||||||
|
@@ -43,7 +43,7 @@ api_mb_browse_releasegroup_releases() {
|
|||||||
$CURL \
|
$CURL \
|
||||||
--get \
|
--get \
|
||||||
--data fmt=json \
|
--data fmt=json \
|
||||||
--data inc=artist-credits \
|
--data inc="artist-credits+labels+media" \
|
||||||
--data limit="$MB_BROWSE_STEPS" \
|
--data limit="$MB_BROWSE_STEPS" \
|
||||||
--data offset="${2:-0}" \
|
--data offset="${2:-0}" \
|
||||||
--data release-group="$1" \
|
--data release-group="$1" \
|
||||||
|
@@ -1,15 +1,22 @@
|
|||||||
|
# Colors
|
||||||
FAINT="\033[2m"
|
FAINT="\033[2m"
|
||||||
COLOR_ARTIST="\033[38;5;209m"
|
COLOR_ARTIST="\033[38;5;209m"
|
||||||
COLOR_DISAMBIGUATION="$FAINT\033[38;5;172m"
|
COLOR_DISAMBIGUATION="$FAINT\033[38;5;172m"
|
||||||
COLOR_DESCRIPTION="${COLOR_DESCRIPTION:-"\033[38;5;254m"}"
|
COLOR_DESCRIPTION="${COLOR_DESCRIPTION:-"\033[38;5;254m"}"
|
||||||
COLOR_LIFESPAN="${COLOR_LIFESPAN:-"\033[38;5;251m"}"
|
COLOR_LIFESPAN="${COLOR_LIFESPAN:-"\033[38;5;251m"}"
|
||||||
COLOR_RESET="\033[m"
|
COLOR_RESET="\033[m"
|
||||||
|
COLOR_NOTE="\033[38;5;242m"
|
||||||
|
COLOR_TYPE_SECONDARY="$COLOR_NOTE"
|
||||||
|
COLOR_RELEASE_TITLE="\033[38;5;229m"
|
||||||
|
COLOR_RELEASE_YEAR="\033[38;5;179m"
|
||||||
|
COLOR_RELEASE_STATUS="$COLOR_RELEASE_YEAR"
|
||||||
|
|
||||||
|
# Artist view
|
||||||
FORMAT_PERSON="${FORMAT_PERSON:-🧑🎤 $COLOR_ARTIST<<name>>$COLOR_RESET}"
|
FORMAT_PERSON="${FORMAT_PERSON:-🧑🎤 $COLOR_ARTIST<<name>>$COLOR_RESET}"
|
||||||
FORMAT_GROUP="${FORMAT_GROUP:-🧑🤝🧑 $COLOR_ARTIST<<name>>$COLOR_RESET}"
|
FORMAT_GROUP="${FORMAT_GROUP:-🧑🤝🧑 $COLOR_ARTIST<<name>>$COLOR_RESET}"
|
||||||
FORMAT_DISAMBIGUATION="${FORMAT_DISAMBIGUATION:-$COLOR_DISAMBIGUATION(<<disambiguation>>)$COLOR_RESET}"
|
FORMAT_DISAMBIGUATION="${FORMAT_DISAMBIGUATION:-$COLOR_DISAMBIGUATION(<<disambiguation>>)$COLOR_RESET}"
|
||||||
COLOR_TYPE_SECONDARY="\033[38;5;242m"
|
|
||||||
COLOR_RELEASE_TITLE="\033[38;5;229m"
|
# Release group view
|
||||||
COLOR_RELEASE_YEAR="\033[38;5;179m"
|
|
||||||
FORMAT_RELEASE="${FORMAT_RELEASE:-"${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET"}"
|
FORMAT_RELEASE="${FORMAT_RELEASE:-"${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET"}"
|
||||||
FORMAT_RELEASE_W_ARTIST="${FORMAT_RELEASE_W_ARTIST:-"${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET — ${COLOR_ARTIST}<<artist>>$COLOR_RESET"}"
|
FORMAT_RELEASE_W_ARTIST="${FORMAT_RELEASE_W_ARTIST:-"${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET — ${COLOR_ARTIST}<<artist>>$COLOR_RESET"}"
|
||||||
FORMAT_YEAR="${FORMAT_YEAR:-"${COLOR_RELEASE_YEAR}(<<year>>)${COLOR_RESET}"}"
|
FORMAT_YEAR="${FORMAT_YEAR:-"${COLOR_RELEASE_YEAR}(<<year>>)${COLOR_RESET}"}"
|
||||||
@@ -33,14 +40,10 @@ FORMAT_TYPE_SECONDARY_MIXTAPE="${FORMAT_TYPE_SECONDARY_MIXTAPE:-"📼 mixtape"}"
|
|||||||
FORMAT_TYPE_SECONDARY_DEMO="${FORMAT_TYPE_SECONDARY_DEMO:-"🧪 demo"}"
|
FORMAT_TYPE_SECONDARY_DEMO="${FORMAT_TYPE_SECONDARY_DEMO:-"🧪 demo"}"
|
||||||
FORMAT_TYPE_SECONDARY_FIELDREC="${FORMAT_TYPE_SECONDARY_FIELDREC:-"🌿 field recording"}"
|
FORMAT_TYPE_SECONDARY_FIELDREC="${FORMAT_TYPE_SECONDARY_FIELDREC:-"🌿 field recording"}"
|
||||||
|
|
||||||
|
# Prompts
|
||||||
SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"}
|
SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"}
|
||||||
ARTIST_PROMPT="${ARTIST_PROMPT:-"🎤 ${COLOR_ARTIST}%s$COLOR_RESET 〉"}"
|
ARTIST_PROMPT="${ARTIST_PROMPT:-"🎤 ${COLOR_ARTIST}%s$COLOR_RESET 〉"}"
|
||||||
#BROWSE_PROMPT_ROOT="${BROWSE_PROMPT_ROOT:-"$SEARCH_PROMPT"}"
|
FULL_PROMPT="${FULL_PROMPT:-"🎤 ${COLOR_ARTIST}%s$COLOR_RESET » ${COLOR_RELEASE_TITLE}%s$COLOR_RESET 〉"}"
|
||||||
#BROWSE_PROMPT_ARTIST="${BROWSE_PROMPT_ARTIST:-"$AFMT 〉"}"
|
|
||||||
#BROWSE_PROMPT_RELEASE="${BROWSE_PROMPT_RELEASE:-"$AFMT 》 $RFMT 〉"}"
|
|
||||||
#AFMT="${AFMT:-"🎤 ${ARTIST_COLOR}%s${OFF}"}"
|
|
||||||
#RFMT="${RFMT:-"💽 ${RELEASE_COLOR}%s${OFF}"}"
|
|
||||||
#TFMT="${TFMT:-"🎵 ${TRACK_COLOR}%s${OFF}"}"
|
|
||||||
|
|
||||||
# Artist Preview
|
# Artist Preview
|
||||||
FORMAT_DATE="${FORMAT_DATE:-"%s"}"
|
FORMAT_DATE="${FORMAT_DATE:-"%s"}"
|
||||||
@@ -48,3 +51,16 @@ FORMAT_PLACE="${FORMAT_PLACE:-"%s"}"
|
|||||||
FORMAT_DATEPLACE="${FORMAT_DATEPLACE:-"%s, %s"}"
|
FORMAT_DATEPLACE="${FORMAT_DATEPLACE:-"%s, %s"}"
|
||||||
FORMAT_LIFESPAN_BORN="${FORMAT_LIFESPAN_BORN:-"🍼 Born: %s"}"
|
FORMAT_LIFESPAN_BORN="${FORMAT_LIFESPAN_BORN:-"🍼 Born: %s"}"
|
||||||
FORMAT_LIFESPAN_DIED="${FORMAT_LIFESPAN_DIED:-"🕯️ Died: %s"}"
|
FORMAT_LIFESPAN_DIED="${FORMAT_LIFESPAN_DIED:-"🕯️ Died: %s"}"
|
||||||
|
|
||||||
|
# Release view
|
||||||
|
RELEASE_OFFICIAL="${RELEASE_OFFICIAL:-"🟢 official"}"
|
||||||
|
RELEASE_PROMOTION="${RELEASE_PROMOTION:-"📣 promo"}"
|
||||||
|
RELEASE_BOOTLEG="${RELEASE_BOOTLEG:-"💣 bootleg"}"
|
||||||
|
RELEASE_PSEUDO="${RELEASE_PSEUDO:-"🌀 pseudo"}"
|
||||||
|
RELEASE_WITHDRAWN="${RELEASE_WITHDRAWN:-"🔙 withdrawn"}"
|
||||||
|
RELEASE_EXPUNGED="${RELEASE_EXPUNGED:-"🧹 expunged"}"
|
||||||
|
RELEASE_CANCELLED="${RELEASE_CANCELLED:-"❌ cancelled"}"
|
||||||
|
RELEASE_FORMAT="${COLOR_TYPE_SECONDARY}<<status>>$COLOR_RESET\t${COLOR_RELEASE_YEAR}<<year>>$COLOR_RESET\t${COLOR_NOTE}<<tracks>> tx / <<media>>$COLOR_RESET\t${COLOR_ARTIST}<<label>>$COLOR_RESET"
|
||||||
|
RELEASE_TITLE_ARTIST="${FAINT}${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET — ${FAINT}${COLOR_ARTIST}<<artist>>$COLOR_RESET"
|
||||||
|
RELEASE_TITLE="${FAINT}${COLOR_RELEASE_TITLE}<<title>>$COLOR_RESET"
|
||||||
|
RELEASE_ARTIST="${FAINT}by ${COLOR_ARTIST}<<artist>>$COLOR_RESET"
|
||||||
|
Reference in New Issue
Block a user