rg support
This commit is contained in:
@@ -1,57 +1,43 @@
|
||||
BEGIN {
|
||||
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
|
||||
}
|
||||
BEGIN { OFS="\t" }
|
||||
|
||||
{
|
||||
gsub("&", "\\\\&")
|
||||
rgmi = $1 # Release Group ID
|
||||
rgty = $2 # Release Group Type
|
||||
rgdt = substr($3, 1, 4) + 0 # Release Group Year
|
||||
rgti = $4 # Release Group Title
|
||||
mi = $5 # MusicBrainz Release ID
|
||||
qy = $6 # Release Quality
|
||||
dt = substr($7, 1, 4) + 0 # Release Year
|
||||
ti = $8 # Release Title
|
||||
s = get_score(rgdt, rgti, dt, ti, qy)
|
||||
if (score[rgmi] < s) {
|
||||
score[rgmi] = s
|
||||
year[rgmi] = dt
|
||||
title[rgmi] = ti
|
||||
type[rgmi] = rgty
|
||||
id[rgmi] = mi
|
||||
id = $1
|
||||
status = $2
|
||||
year = substr($3, 1, 4) + 0
|
||||
year = year == 0 ? "" : year
|
||||
covercount = $4
|
||||
label = $5
|
||||
trackcnt = $6
|
||||
media = $7
|
||||
country = $8
|
||||
title = $9
|
||||
artist = $10
|
||||
switch (status) {
|
||||
case "Official": line_status=release_official; break
|
||||
case "Promotion": line_status=release_promotion; break
|
||||
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 {
|
||||
for (rgmi in id) {
|
||||
if (type[rgmi] == "Single")
|
||||
line = format_single
|
||||
else if (type[rgmi] == "Album")
|
||||
line = format_album
|
||||
else if (type[rgmi] == "EP")
|
||||
line = format_ep
|
||||
else
|
||||
line = format_album
|
||||
sub("<<year>>", dt, line)
|
||||
sub("<<title>>", ti, line)
|
||||
print mi, line
|
||||
}
|
||||
sub("<<status>>", line_status, line)
|
||||
sub("<<year>>", year, line)
|
||||
sub("<<tracks>>", trackcnt, line)
|
||||
sub("<<media>>", media, line)
|
||||
sub("<<label>>", label, line)
|
||||
sub("<<title>>", title, line)
|
||||
sub("<<artist>>", artist, line)
|
||||
sortk = year ? year : 0
|
||||
print sortk, line, id
|
||||
}
|
||||
|
68
src/main.sh
68
src/main.sh
@@ -76,11 +76,6 @@ if [ "${1:-}" = "--internal-search" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${1:-}" = "--internal-list-releases" ]; then
|
||||
print "NOT IMPLEMENTED"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${1:-}" = "--internal-list-releasegroups-fresh" ]; then
|
||||
artistid="$2"
|
||||
cache_delete_artist "$artistid"
|
||||
@@ -133,6 +128,47 @@ if [ "${1:-}" = "--internal-list-releasegroups" ]; then
|
||||
exit 0
|
||||
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
|
||||
cat <<EOF
|
||||
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-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" |
|
||||
$JQ -r '.title')"
|
||||
artist="$(mb_releasegroup "$2" |
|
||||
$JQ -r '."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")')"
|
||||
echo "$title"
|
||||
echo "$artist"
|
||||
sel=$(
|
||||
$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
|
||||
set -- ""
|
||||
[ "$sel" ] && set -- "--show-release" "$sel"
|
||||
;;
|
||||
*)
|
||||
sel=$(
|
||||
|
@@ -43,7 +43,7 @@ api_mb_browse_releasegroup_releases() {
|
||||
$CURL \
|
||||
--get \
|
||||
--data fmt=json \
|
||||
--data inc=artist-credits \
|
||||
--data inc="artist-credits+labels+media" \
|
||||
--data limit="$MB_BROWSE_STEPS" \
|
||||
--data offset="${2:-0}" \
|
||||
--data release-group="$1" \
|
||||
|
@@ -1,15 +1,22 @@
|
||||
# Colors
|
||||
FAINT="\033[2m"
|
||||
COLOR_ARTIST="\033[38;5;209m"
|
||||
COLOR_DISAMBIGUATION="$FAINT\033[38;5;172m"
|
||||
COLOR_DESCRIPTION="${COLOR_DESCRIPTION:-"\033[38;5;254m"}"
|
||||
COLOR_LIFESPAN="${COLOR_LIFESPAN:-"\033[38;5;251m"}"
|
||||
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_GROUP="${FORMAT_GROUP:-🧑🤝🧑 $COLOR_ARTIST<<name>>$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"
|
||||
COLOR_RELEASE_YEAR="\033[38;5;179m"
|
||||
|
||||
# Release group view
|
||||
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_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_FIELDREC="${FORMAT_TYPE_SECONDARY_FIELDREC:-"🌿 field recording"}"
|
||||
|
||||
# Prompts
|
||||
SEARCH_PROMPT=${SEARCH_PROMPT:-"🔎 〉"}
|
||||
ARTIST_PROMPT="${ARTIST_PROMPT:-"🎤 ${COLOR_ARTIST}%s$COLOR_RESET 〉"}"
|
||||
#BROWSE_PROMPT_ROOT="${BROWSE_PROMPT_ROOT:-"$SEARCH_PROMPT"}"
|
||||
#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}"}"
|
||||
FULL_PROMPT="${FULL_PROMPT:-"🎤 ${COLOR_ARTIST}%s$COLOR_RESET » ${COLOR_RELEASE_TITLE}%s$COLOR_RESET 〉"}"
|
||||
|
||||
# Artist Preview
|
||||
FORMAT_DATE="${FORMAT_DATE:-"%s"}"
|
||||
@@ -48,3 +51,16 @@ FORMAT_PLACE="${FORMAT_PLACE:-"%s"}"
|
||||
FORMAT_DATEPLACE="${FORMAT_DATEPLACE:-"%s, %s"}"
|
||||
FORMAT_LIFESPAN_BORN="${FORMAT_LIFESPAN_BORN:-"🍼 Born: %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