Skip to content

magcius's MPD Setup

License

GPL-3.0, Unknown licenses found

Licenses found

GPL-3.0
LICENSE
Unknown
COPYING
Notifications You must be signed in to change notification settings

MechanisM/mpdsetup

 
 

Repository files navigation

query.py

query.py is a query engine for MPD using LEPL and python-mpd.

Requirements

Query Grammar

The grammar:

String: /'[^']*'/ | /"[^"]*"/ | /[^\w]+/;

Or:  '|' | '||' | /or/i;
And: '&' | '&&' | /and/i;

Tag: /%[a-zA-Z]+%/ | /<[a-zA-Z]+>/;
TagCollectionOr:  Tag (Or Tag)*;
TagCollectionAnd: TagCollectionOr (And TagCollectionOr)*;
TagCollection: TagCollectionAnd;

Comparator: '==' | /like/i;
Comparison: TagCollectionAnd Comparator String;

Atom: '(' AndExpression ')' |
      '{' AndExpression '}' |
      '[' AndExpression ']' | Comparison;

OrExpression:  Atom (Or Atom)*;
AndExpression: OrExpression (And OrExpression)*;

Query: AndExpression EOS;

Notes

  • {}, [] are included as well as parens as some shells take any of those three as special characters.
  • Same with and and or.
  • '==' is a strict, case-sensitive match.
  • 'like' checks for a substring of the full value in the database. For instance, if the database contains "The Beatles" and you do "like Beatles", it will match. If the database contains "Beatles" and you do "like The Beatles", it will not match. 'like' is case-insensitive.
  • Tag collections allow you do things like: %artist% and %album% like "Gabe Dixon", which means that both the artist and the album must contain the substring "Gabe Dixon". %tag1% or %tag2% matches for either.

Query Examples

  • %artist% like Beatles and [%title% or %album% like "Let It Be"]
  • %file% like "Video Game OST" and %artist% == "Lisa Miskovsky"
  • %genre% like Rock or %genre% like Pop

Front-ends

There are currently two front-ends to query.py. mpdgrep, and gtkfind. These are successors to my old tools mpdgrep and zenfind, both written in BASH. query.py should be backwards-compatible with both of them for the most part, except for the implementation-specific "artist - album - title" and "artist;album;title" searches.

mpdgrep should be bash-quote compatible, so that means that it acts like a query engine straight from bash. Something like:

$ mpdgrep [%artist% like "Zac Mac Band"] and [%title% like "Radio"]

works perfectly on my computer.

About

magcius's MPD Setup

Resources

License

GPL-3.0, Unknown licenses found

Licenses found

GPL-3.0
LICENSE
Unknown
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published