From 93359f99c5da55d26e9f64da9685ed0d6a2116d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Fri, 5 Sep 2025 11:16:42 +0200 Subject: [PATCH] MusicBrainz search --- src/main.sh | 10 +++++++++- src/sh/fzf.sh | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main.sh b/src/main.sh index ef383ea..3ed7cf5 100755 --- a/src/main.sh +++ b/src/main.sh @@ -198,6 +198,13 @@ case "${1:-}" in "$VIEW_LIST_ARTISTS" | "$VIEW_SEARCH_ARTIST") printf "+show-preview" ;; *) printf "+hide-preview" ;; esac + # Handle MusicBrainz search views + # - `change` trigger for async. MusicBrainz search + # - input visible but search disabled + case "$view" in + "$VIEW_SEARCH_ARTIST" | "$VIEW_SEARCH_ALBUM") printf "+rebind(change)+disable-search" ;; + *) printf "+unbind(change)+enable-search" ;; + esac # Load lines printf "+reload($0 --lines %s %s)" "$view" "$mbid" [ "$mode" = "$MODE_NORMAL" ] && printf "+hide-input" @@ -220,7 +227,7 @@ case "${1:-}" in exit 0 ;; "--fzf-change") - fzf_handle_change + fzf_handle_change "$2" exit 0 ;; "--fzf-key") @@ -488,6 +495,7 @@ open \"\$(dirname {4})\"" \ --bind="$KEYS_PLAY:" \ --bind="$KEYS_QUEUE:" \ --bind="$KEYS_SHOW_PLAYLIST:" \ + --bind="change:execute-silent($0 --fzf-change $FZF_CURRENT_VIEW &)+reload:$0 --fzf-change-reload" \ --preview-window="right,25%,border-left,wrap,<30(hidden)" \ --preview="$0 --preview-artist {3}" \ --delimiter="\t" \ diff --git a/src/sh/fzf.sh b/src/sh/fzf.sh index e592147..6ba75fb 100644 --- a/src/sh/fzf.sh +++ b/src/sh/fzf.sh @@ -174,12 +174,13 @@ fzf_reload_after_change() { sleep 1 done # Show results - column -t -s "$(printf '\t')" -E 0 "$RESULTS" | + column -t -s "$(printf '\t')" "$RESULTS" | sed 's| \+\([0-9a-f-]\+\) \+\([0-9a-f-]\+\)$|\t\1\t\2|' } # Handle change in query fzf_handle_change() { + view="$1" # Kill any running search if [ -f "$PIDFILE" ]; then pid=$(cat "$PIDFILE") @@ -192,7 +193,6 @@ fzf_handle_change() { echo "$$" >"$PIDFILE" touch "$LOCKFILE" sleep 1 - view=$(state_get_view) if [ "$view" = "$VIEW_SEARCH_ARTIST" ]; then api_mb_search_artist "$FZF_QUERY" | $JQ -r '.artists[] | [