diff options
author | Tom Willemse | 2022-03-03 01:08:16 -0800 |
---|---|---|
committer | Tom Willemse | 2022-03-03 01:08:16 -0800 |
commit | c12a766e1920e726129dfd1161a2ef15471f89e8 (patch) | |
tree | da1347e2ee4330fe46fb04dc14134e9c1e32ba65 /mpd-random-albums | |
parent | 5c371433b9ba76da6fde27849775e5bf9c4c7db4 (diff) | |
download | mpd-random-albums-c12a766e1920e726129dfd1161a2ef15471f89e8.tar.gz mpd-random-albums-c12a766e1920e726129dfd1161a2ef15471f89e8.zip |
Write a small DSL for converting a simple lisp expression to an MPD query
format. This turns, for example:
(and (= artist "Katatonia") (= album "Last Fair Deal Gone Down"))
Into:
((artist == "Katatonia") AND (album == "Last Fair Deal Gone Down"))
The expressions inside ‘query’ are quasi-quoted, so that variable substitution
is possible.
Diffstat (limited to 'mpd-random-albums')
-rwxr-xr-x | mpd-random-albums | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/mpd-random-albums b/mpd-random-albums index 4bcd680..50e6f79 100755 --- a/mpd-random-albums +++ b/mpd-random-albums @@ -1,7 +1,7 @@ #!/usr/bin/env sh # -*- mode: scheme; -*- IFS=" " -exec scsh -s "$0" "$@" +exec scsh -ll mpd.scm -o mpd -s "$0" "$@" !# (define (randomize-all-albums) @@ -12,8 +12,9 @@ exec scsh -s "$0" "$@" (define (randomize-albums-by-artist artist) (for-each (lambda (album) - (display (run/string (mpc findadd ,(string-append "((artist == \"" artist "\") AND (album == \"" album "\"))"))))) - (run/strings (pipe (mpc list album ,(string-append "((artist == \"" artist "\"))")) + (run (mpc findadd ,(query (and (= artist ,artist) + (= album ,album)))))) + (run/strings (pipe (mpc list album ,(query (= artist ,artist))) (shuf))))) (run (mpc clear) |