h1. Glyr is a search engine for music related metadata
The finest search you can buy for no money ^TM^
!https://github.com/sahib/glyr/blob/master/doc/screenshot.png([screenshot])!
It comes both in a command-line interface tool and as a C library, both with an easy to use interface.
The sort of metadata glyr is searching (and downloading) is usually the data you see in your musicplayer.
And indeed, originally it was written to serve as internally library for a musicplayer, but has been extended to
work as a standalone program which is able to download:
| Getter | Description |
| cover | Coverart (front images supported only) |
| lyrics | Songtext |
| artistphotos | Photos of a certain band (press or live) |
| artistbio | Artist biography from various sites |
| review | album reviews from various sites |
| albumlist | A list of albums from a specific artist. |
| tags | Tags, either related to artist, album or title |
| relations | links to wikipedia, myspace, musicbrainz ... |
| similarartists | similar artists |
| similarsongs | similar songs |
| tracklist | tracklists of an album |
| guitartabs | guitartabs in textual form |
| backdrops | Large artist photos, suitable for backgrounds |
*Terminology*:
To prevent disambiguation the following terms are used below:
* _glyrc_ is the command-line interface to libglyr.
* _libglyr_ is the library behind, which may be used by your program.
* a _getter_ is a type of metadata to download, e.g. @cover@, sometimes also called _fetcher_
* a _provider_ is a source libglyr queries in order to find the data.
* _glyros_ is the ruby wrapper for this lib. Currently it is not maintained.
h2. FEATURES
* Many built-in providers (46 at time of writing, ~30 distinct sites), high success-rate (the longer the search, the higher the risk :))
* Portable: Windows and Linux are supported (Developement on Linux) see ~[1]~ for Mac OSX,
* Fuzzy matching: Search providers with Levenshtein algorithm to eliminate typos and enhance search results.
* Decent Unicode support: All sort of valid UTF8 is taken, and UTf8 output can be forced.
* Fast Download: libcurl is used internally, and sources are searched in parallel, unneeded data is not downloaded if possible.
* Lightweight dependencies: libcurl, glib and sqlite (for caching) - typical linux systems have those installed.
* Download of a user defined amount of items, @glyrc cover -a Foo -b Bar -n 30@ tries to load 30 covers of album 'Bar' by artist 'Foo'.
* Grouped download: Query providers by descending Accuray / Speed; controllable by the user over the @qsratio@
* Optional download of images, URL is returned otherwise - so it can act a bit like a search-engine.
* Free Software licensed under the terms of the LGPLv3
* libglyr is portable, easy, threadsafe and lowlevel enough for everyone.
* ...lots of other options like min/max size for images.
* A built-in cache to store the metadata (using SQLite)
h2. GETTING STARTED
h3. Compiling
See the "compile page":https://github.com/sahib/glyr/wiki/Compiling.
h3. libglyr:
See the "examples in src/examples":https://github.com/sahib/glyr/wiki for a quickstart.
There's also a more "gentle (and brief) introduction.":https://github.com/sahib/glyr/wiki/Introduction-to-libglyr
Also see the "API Reference":http://sahib.github.com/glyr/doc/html/index.html
*Please note:* Since version 1.0.0 the API will be stable, and will only be open for extensions.
h3. glyrc:
Please refer to @glyrc -h@ which gives you a brief introduction to the arguments you can pass,
See the "wiki":https://github.com/sahib/glyr/wiki/Commandline-arguments for more detailed information about the options.
h2. FAQ
h3. Anyone using it already?
* "GMPC":http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client
* "Pragha":http://pragha.wikispaces.com/
* "Freya":https://github.com/studentkittens/Freya
* "lyvi":http://ok100.github.com/lyvi/
h3. Glyr.. such a silly name! Why?
Indeed. Should have named it 'Glyros' (too late, damnit).
h3. Is it hard to write something with it?
Some knowledge of C might be required, but the code is straight forward most of the time.
Bash scripts are pretty straight-forward:
@glyrc cover --artist Equilibrium --album Sagas --write '/tmp/:artist:_:album:.:format:' --callback 'sxiv ":path:"'@
Additionally there are bindings to Python and Ruby:
* "plyr":https://github.com/sahib/python-glyr by me (complete API).
* "ruby-glyr":https://github.com/meh/ruby-glyr by meh (complete API).
h3. How..how am I supposed to use it?
Well, as normal user you could use @glyrc@ to retrieve some metadata in a batchlike fashion.
As developers you have lots of option, you could write glyr-plugins for musicplayers (gmpc!), set up a webserver with this,
hack up little scripts showing covers on the desktop.. everything related to musicmetadat is possible here.
You could also extend libglyr itself but that's a little harder.
h3. Isn't there musicbrainz already?
# The kind of metadata downloaded by glyr differs heavily from musicbrainz.
i.e. glyr finds metadata for musicplayers while musicbrainz finds data for CD Rippers and taggers.
# Musicbrainz runs remotely on some server and uses a large database which is searched through lucene.
Glyr is a client program which hops over several sites and does not cache anything, unless you do it yourself.
You could of course let glyr run on a (remote) server, and cache all results to do something similiar.
# There is "coverarchive.org":www.coverartarchive.org , but it does not seem to fully work yet. But it will be accessible once it does.
h2. AUTHOR
See the AUTHORS file that comes in glyr's distribution.
See also COPYING to know about your rights.
h2. I CAN HAZ HELP?
h3. BUGS
If you found one: _Meh. Sorry for that._
If you file a bugreport: _Hey, thank you!_
Use the "Issue Tracker":https://github.com/sahib/glyr/issues to share your find.
Alternatively you may drop me a mail at