diff --git a/src/main.sh b/src/main.sh index 523566b..2a64114 100755 --- a/src/main.sh +++ b/src/main.sh @@ -71,7 +71,29 @@ if [ "${1:-}" = "--list-artists" ]; then fi if [ "${1:-}" = "--play-release" ]; then - echo "Playing release $2" >>/tmp/foo + mbid=${2} + deco=${3} + base="$(dirname "$deco")" + echo "Playing release ($mbid) [$deco]" >>/tmp/foo + mb_release "$mbid" | + $JQ -r --slurpfile deco "$deco" --arg base "$base" '$deco[].tracks as $filenames | + .media[] | + .position as $pos | + .tracks | + map({ + $pos, + number: .number, + file: $filenames[.id] + }) | + map( + if(.number | type == "string" and test("^[0-9]+$")) then + .number |= tonumber + else + . + end + ) | + sort_by([.pos, .number]) | + map($base + "/" + .file)[]' >>/tmp/foo exit 0 fi @@ -368,7 +390,6 @@ esac while true; do case "${1:-}" in "--artist") - mb_artist "$2" >>/tmp/foo name="$(mb_artist "$2" | $JQ -r '.name')" secsymb="$(printf "$FORMAT_TYPE_HAS_SECONDARY" "")" sel=$( @@ -420,7 +441,7 @@ while true; do --expect="ctrl-h,ctrl-a" \ --bind="alt-l:change-query($FORMAT_LOCAL )" \ --bind="load:transform:[ \"\$FZF_TOTAL_COUNT\" -gt 0 ] && echo \"rebind:ctrl-l\" || echo \"unbind:ctrl-l\"" \ - --bind="enter:execute-silent:$0 --play-release {3}" \ + --bind="enter:execute-silent:$0 --play-release {2} {3}" \ --bind="focus:transform:[ {3} ] && echo \"rebind:enter\" || echo \"unbind:enter\"" \ --bind="ctrl-l:accept" \ --bind="alt-b:execute-silent:xdg-open 'https://musicbrainz.org/release/{r2}' &" \ @@ -589,7 +610,7 @@ while true; do --expect="ctrl-/" \ --bind="alt-l:change-query($FORMAT_LOCAL )" \ --bind="load:transform:[ \"\$FZF_TOTAL_COUNT\" -gt 0 ] && echo \"rebind:ctrl-l\" || echo \"unbind:ctrl-l\"" \ - --bind="enter:execute-silent:$0 --play-release {3}" \ + --bind="enter:execute-silent:$0 --play-release {2} {3}" \ --bind="focus:transform:[ {3} ] && echo \"rebind:enter\" || echo \"unbind:enter\"" \ --bind="ctrl-l:accept" \ --bind="alt-b:execute-silent:xdg-open 'https://musicbrainz.org/release/{r2}' &" \