mppopm
Filter Syntax ¶The mpdpopm
filter syntax is a (small) superset of the MPD
syntax. The following is a grammar for filter expressions in
modified BNF:
<expr> ::= <term> | <negation> | <conjunction> | <disjunction> <term> ::= "(" <comparison> ")" <negation> ::= "(" "!" <expr> ")" <conjunction> ::= "(" <conj-list> ")" <conj-list> ::= <expr> "AND" <expr> | <expr> "AND" <conj-list> <disjunction> ::= "(" <disj-list> ")" <disj-list> ::= <expr> "OR" <expr> | <expr> "OR" <disj-list> <comparison> ::= <tag> <op> <qtext> | "file" "==" <qtext> | "base" <qtext> | "modified-since" <qtext> | "AudioFormat" <audio-format-op> <audio-format> | <mpdpopm-numeric-tag> <numeric-op> <number> | "lastplayed" <numeric-op> <date-or-epoch> <tag> ::= "artist" | "artistsort" | "album" | "albumsort" | "albumartist" | "albumartistsort" | "title" | "track" | "name" | "genre" | "date" | "originaldate" | "composer" | "performer" | "conductor" | "work | "grouping" | "comment" | "disc" | "label" | "musicbrainz_artistid" | "musicbrainz_albumid" | "musicbrainz_albumartistid" | "musicbrainz_trackid" | "musicbrainz_releasetrackid" | "musicbrainz_workid" <op> ::= "==" | "!=" | "contains" | "=~" | "!~" <audio-format-op> ::= "==" | "=~" <audio-format> ::= "'" <samplerate>:<bits>:<channels> "'" <mpdpopm-numeric-tag> ::= "rating" | "playcount" <numeric-op> ::= "==" | "!=" | "<" | "<=" | ">" | ">=" <number> ::= [0-9]+ <qtext> ::= text enclosed in either single- or double-quotes; if the text contains single- or double-quotes, or backslashes, they shall be backslash-escaped <date-or-epoch> ::= either <number> or a single- or double-quoted ISO 8601 timestamp
In the above grammar, the non-terminals <samplerate>
,
<bits>
, and <channels>
are undefined; please see the MPD
manual for details on how to specify them.
Note that tags are matched without regard to case; for consistency’s
sake, mpdpopm
-defined attributes are also matched
case-insensitively.
For a detailed description of how tags are matched, also please see
the MPD manual, since mpdpopm
delegates the evaluation of all terms
already supported by MPD to thereto.