diff --git a/src/awk/releasegroups.awk b/src/awk/releasegroups.awk
new file mode 100644
index 0000000..238eb94
--- /dev/null
+++ b/src/awk/releasegroups.awk
@@ -0,0 +1,22 @@
+BEGIN { OFS="\t" }
+
+{
+ gsub("&", "\\\\&")
+ id = $1
+ type = $2
+ year = substr($3, 1, 4) + 0
+ title = $4
+ if (type == "Single")
+ line = format_single
+ else if (type == "Album")
+ line = format_album
+ else if (type == "EP")
+ line = format_ep
+ else
+ line = format_album
+ if (year)
+ line = line " " format_year
+ sub("<
>", title, line)
+ sub("<>", year, line)
+ print id, line
+}
diff --git a/src/awk/releases.awk b/src/awk/releases.awk
new file mode 100644
index 0000000..b87b3e0
--- /dev/null
+++ b/src/awk/releases.awk
@@ -0,0 +1,57 @@
+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
+}
+
+{
+ 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
+ }
+}
+
+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("<>", dt, line)
+ sub("<>", ti, line)
+ print mi, line
+ }
+}
diff --git a/src/main.sh b/src/main.sh
index b8f4063..67fd496 100755
--- a/src/main.sh
+++ b/src/main.sh
@@ -23,7 +23,7 @@ set -eu
# Load preview methods
. "sh/preview.sh"
-if [ "${1:-}" = "--internal-preview" ]; then
+if [ "${1:-}" = "--internal-preview-artist" ]; then
__preview_artist "$2"
exit 0
fi
@@ -49,7 +49,7 @@ if [ "${1:-}" = "--internal-search" ]; then
echo "$$" >"$PIDFILE"
sleep 1
touch "$LOCKFILE"
- mb_browse_artists "$2" |
+ mb_search_artists "$2" |
$JQ -r '.artists[] | [.id, .type, .name, .disambiguation, .["life-span"].begin, .["life-span"].end] | join("\t")' |
awk \
-F "\t" \
@@ -63,6 +63,24 @@ if [ "${1:-}" = "--internal-search" ]; then
exit 0
fi
+if [ "${1:-}" = "--internal-browse-artist" ]; then
+ mb_browse_release_groups "$2" |
+ $JQ -r '."release-groups"[] | [
+ .id,
+ ."primary-type",
+ ."first-release-date",
+ .title
+ ] | join("\t")' |
+ awk \
+ -F "\t" \
+ -v format_album="$FORMAT_ALBUM" \
+ -v format_single="$FORMAT_SINGLE" \
+ -v format_ep="$FORMAT_EP" \
+ -v format_year="$FORMAT_YEAR" \
+ "$AWK_RELEASEGROUPS"
+ exit 0
+fi
+
if [ "${1:-}" = "--help" ]; then
$CAT <>$COLOR_RESET"}"
+FORMAT_SINGLE="${FORMAT_SINGLE:-"💽 ${COLOR_SINGLE}single$COLOR_RESET $COLOR_RELEASE_TITLE<>$COLOR_RESET"}"
+FORMAT_EP="${FORMAT_EP:-"💽 ${COLOR_EP} EP $COLOR_RESET $COLOR_RELEASE_TITLE<>$COLOR_RESET"}"
+FORMAT_YEAR="${FORMAT_YEAR:-"${COLOR_RELEASE_YEAR}(<>)${COLOR_RESET}"}"
+export FORMAT_PERSON FORMAT_GROUP FORMAT_DISAMBIGUATION \
+ FORMAT_ALBUM FORMAT_SINGLE FORMAT_EP FORMAT_YEAR