diff --git a/src/main.sh b/src/main.sh index 9d925e2..1bf7de1 100755 --- a/src/main.sh +++ b/src/main.sh @@ -8,8 +8,21 @@ set -eu # Load helper methods . "sh/helper.sh" -# Load MusicBrainz methods -. "sh/mb.sh" +# Load MusicBrainz and Discogs methods +. "sh/api.sh" + +if [ "${1:-}" = "--internal-preview" ]; then + # Get discogs url + discogsurl=$(mb_get_artist "$2" | + $JQ -r '.relations | map(select(.type=="discogs")) | .[0].url.resource') + [ ! "$discogsurl" ] || [ "$discogsurl" = "(null)" ] && exit 0 + discogsid=$(echo "$discogsurl" | awk -F "/" '{print $NF}') + profile=$(discogs_get_artist "$discogsid" | + $JQ -r '.profile') + [ ! "$profile" ] || [ "$profile" = "(null)" ] && exit 0 + echo "$profile" | $CAT + exit 0 +fi if [ "${1:-}" = "--internal-reload" ]; then sleep 2 @@ -86,6 +99,8 @@ while true; do --disabled \ --delimiter="\t" \ --with-nth="{2}" \ + --preview-window="wrap" \ + --preview="$0 --internal-preview {1}" \ --bind="change:execute-silent($0 --internal-search \$FZF_QUERY &)+reload($0 --internal-reload)" ) echo "$sel" diff --git a/src/sh/api.sh b/src/sh/api.sh new file mode 100644 index 0000000..1d31d43 --- /dev/null +++ b/src/sh/api.sh @@ -0,0 +1,24 @@ +mb_browse_artists() { + $CURL \ + --get \ + --data-urlencode fmt=json \ + --data-urlencode query="$1" \ + -A "$APP_NAME/$APP_VERSION ($APP_WEBSITE)" \ + "https://musicbrainz.org/ws/2/artist" +} + +mb_get_artist() { + $CURL \ + --get \ + --data-urlencode fmt=json \ + --data-urlencode inc="url-rels" \ + -A "$APP_NAME/$APP_VERSION ($APP_WEBSITE)" \ + "https://musicbrainz.org/ws/2/artist/$1" +} + +discogs_get_artist() { + $CURL \ + --get \ + -A "$APP_NAME/$APP_VERSION ($APP_WEBSITE)" \ + "https://api.discogs.com/artists/$1" +} diff --git a/src/sh/mb.sh b/src/sh/mb.sh deleted file mode 100644 index e7b4bde..0000000 --- a/src/sh/mb.sh +++ /dev/null @@ -1,8 +0,0 @@ -mb_browse_artists() { - $CURL \ - --get \ - --data-urlencode fmt=json \ - --data-urlencode query="$1" \ - -A "$APP_NAME/$APP_VERSION ($APP_WEBSITE)" \ - "https://musicbrainz.org/ws/2/artist" -}