From 723fa58763f810853a69ff47c234909fc6e14f5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Mon, 4 Aug 2025 17:19:20 +0200 Subject: [PATCH] list internal data --- src/main.sh | 144 ++++++++++++++++++++++++++++++++++++++++++++++---- src/sh/api.sh | 2 +- 2 files changed, 135 insertions(+), 11 deletions(-) diff --git a/src/main.sh b/src/main.sh index 3122237..2502b76 100755 --- a/src/main.sh +++ b/src/main.sh @@ -157,14 +157,6 @@ if [ "${1:-}" = "--internal-search" ]; then exit 0 fi -if [ "${1:-}" = "--internal-list-releasegroups-fresh" ]; then - artistid="$2" - cache_delete_artist "$artistid" - shift 2 - set -- "--internal-list-releasegroups" "$artistid" - mb_artist "$artistid" >/dev/null -fi - if [ "${1:-}" = "--internal-list-releasegroups" ]; then name=$(mb_artist "$2" | $JQ -r '.name') mb_artist_releasegroups "$2" | @@ -274,6 +266,105 @@ if [ "${1:-}" = "--internal-list-recordings" ]; then exit 0 fi +if [ "${1:-}" = "--internal-list-local-artists" ]; then + while IFS= read -r aid; do + mb_artist "$aid" | $JQ -r '[ + .id, + .type, + .name, + .disambiguation, + .["life-span"].begin, + .["life-span"].end + ] | join("\t")' + done <"$LOCALDATA_ARTISTS" | + awk \ + -F "\t" \ + -v format_person="$AV_PERSON" \ + -v format_group="$AV_GROUP" \ + -v format_disambiguation="$AV_DISAMBIGUATION" \ + "$AWK_ARTISTS" + exit 0 +fi + +if [ "${1:-}" = "--internal-list-local-releasegroups" ]; then + while IFS= read -r rgid; do + mb_releasegroup "$rgid" | $JQ -r '[ + .id, + ."primary-type", + (."secondary-types" // []|join(";")), + ."first-release-date", + .title, + (."artist-credit" | map(([.name, .joinphrase]|join(""))) | join("")) + ] | join("\t")' + done <"$LOCALDATA_RELEASEGROUPS" | + awk \ + -F "\t" \ + -v format_release="$RGV_RELEASE" \ + -v format_release_w_artist="$RGV_RELEASE_W_ARTIST" \ + -v format_year="$RGV_YEAR" \ + -v format_album="$FORMAT_TYPE_ALBUM" \ + -v format_single="$FORMAT_TYPE_SINGLE" \ + -v format_ep="$FORMAT_TYPE_EP" \ + -v format_broadcast="$FORMAT_TYPE_BROADCAST" \ + -v format_other="$FORMAT_TYPE_OTHER" \ + -v format_has_secondary="$FORMAT_TYPE_HAS_SECONDARY" \ + -v format_secondary="$FORMAT_TYPE_SECONDARY" \ + -v format_compilation="$FORMAT_TYPE_SECONDARY_COMPILATION" \ + -v format_soundtrack="$FORMAT_TYPE_SECONDARY_SOUNDTRACK" \ + -v format_spokenword="$FORMAT_TYPE_SECONDARY_SPOKENWORD" \ + -v format_interview="$FORMAT_TYPE_SECONDARY_INTERVIEW" \ + -v format_audiobook="$FORMAT_TYPE_SECONDARY_AUDIOBOOK" \ + -v format_audiodrama="$FORMAT_TYPE_SECONDARY_AUDIODRAMA" \ + -v format_live="$FORMAT_TYPE_SECONDARY_LIVE" \ + -v format_remix="$FORMAT_TYPE_SECONDARY_REMIX" \ + -v format_djmix="$FORMAT_TYPE_SECONDARY_DJMIX" \ + -v format_mixtape="$FORMAT_TYPE_SECONDARY_MIXTAPE" \ + -v format_demo="$FORMAT_TYPE_SECONDARY_DEMO" \ + -v format_fieldrec="$FORMAT_TYPE_SECONDARY_FIELDREC" \ + "$AWK_RELEASEGROUPS" | + 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:-}" = "--internal-list-local-releases" ]; then + while IFS= read -r rid; do + mb_release "$rid" | $JQ -r '[ + .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")' + done <"$LOCALDATA_RELEASES" | + awk \ + -F "\t" \ + -v release_official="$FORMAT_STATUS_OFFICIAL" \ + -v release_promotion="$FORMAT_STATUS_PROMO" \ + -v release_bootleg="$FORMAT_STATUS_BOOTLEG" \ + -v release_pseudo="$FORMAT_STATUS_PSEUDO" \ + -v release_withdrawn="$FORMAT_STATUS_WITHDRAWN" \ + -v release_expunged="$FORMAT_STATUS_EXPUNGED" \ + -v release_cancelled="$FORMAT_STATUS_CANCELLED" \ + -v release_format="$RV_FORMAT" \ + -v release_format_title_artist="$RV_TITLE_ARTIST" \ + -v release_format_title="$RV_TITLE" \ + -v release_format_artist="$RV_ARTIST" \ + "$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 < | --releasegroup | --release ] @@ -320,8 +411,7 @@ while true; do --bind="ctrl-l:accept" \ --bind="alt-b:execute-silent:xdg-open 'https://musicbrainz.org/release-group/{r2}' &" \ --bind="alt-1:change-query(!$secsymb ),alt-2:change-query($secsymb )" \ - --bind="ctrl-d:half-page-down,ctrl-u:half-page-up" \ - --bind="ctrl-r:reload:$0 --internal-list-releasegroups-fresh \"$2\"" + --bind="ctrl-d:half-page-down,ctrl-u:half-page-up" ) lns=$(echo "$sel" | wc -l) key=$(echo "$sel" | head -1 | tail -1) @@ -446,6 +536,40 @@ while true; do [ "$key" = "tab" ] && set -- "--search-artist" [ "$lns" -eq 2 ] && [ ! "$key" ] && [ "$mid" ] && set -- "--releasegroup" "$mid" ;; + "--artists") + sel=$( + printf "" | + $FZF \ + --no-clear \ + --ansi \ + --reverse \ + --no-sort \ + --disabled \ + --cycle \ + --delimiter="\t" \ + --prompt="$SEARCH_PROMPT" \ + --info="inline-right" \ + --info-command="echo \"Search music artist\"" \ + --accept-nth="{2}" \ + --with-nth="{1}" \ + --preview-window="right,25%,border-left,wrap,<30(hidden)" \ + --preview="$0 --internal-preview-artist {2}" \ + --expect="ctrl-c,ctrl-q,tab" \ + --bind="load:transform:[ \"\$FZF_TOTAL_COUNT\" -gt 0 ] && echo \"rebind:ctrl-l\" || echo \"unbind:ctrl-l\"" \ + --bind="ctrl-l:accept" \ + --bind="ctrl-d:half-page-down,ctrl-u:half-page-up" \ + --bind="down:preview-half-page-down,up:preview-half-page-up" \ + --bind="alt-b:execute-silent:xdg-open 'https://musicbrainz.org/artist/{r2}' &" \ + --bind="change:execute-silent($0 --internal-search artist \$FZF_QUERY &)+reload($0 --internal-reload)" || true + ) + lns=$(echo "$sel" | wc -l) + key=$(echo "$sel" | head -1 | tail -1) + mid=$(echo "$sel" | head -2 | tail -1) + [ "$key" = "ctrl-c" ] && tput rmcup && exit 0 + [ "$key" = "ctrl-q" ] && tput rmcup && exit 0 + [ "$key" = "tab" ] && set -- "--search-releasegroup" + [ "$lns" -eq 2 ] && [ ! "$key" ] && [ "$mid" ] && set -- "--artist" "$mid" + ;; *) sel=$( printf "" | diff --git a/src/sh/api.sh b/src/sh/api.sh index 9001571..11663a9 100644 --- a/src/sh/api.sh +++ b/src/sh/api.sh @@ -22,7 +22,7 @@ api_mb_release() { $CURL \ --get \ --data fmt=json \ - --data inc="recordings+artist-credits+release-groups" \ + --data inc="recordings+artist-credits+release-groups+labels" \ -A "$APP_NAME/$APP_VERSION ($APP_WEBSITE)" \ "https://musicbrainz.org/ws/2/release/$1" }