summaryrefslogtreecommitdiffstats
path: root/multimedia/glyr/README.html
blob: 5c77d8830e4de65bd18cb5a8a771a134d7cd4243 (plain)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>Glyr is a search engine for music related metadata</title></head><body><h1>Glyr is a search engine for music related metadata</h1>

<p>The finest search you can buy for no money <sup>TM</sup></p>

<p><img src="https://github.com/sahib/glyr/blob/master/doc/screenshot.png" alt="[screenshot]" /></p>

It comes both in a command-line interface tool and as a C library, both with an easy to use interface.<br />
The sort of metadata glyr is searching (and downloading) is usually the data you see in your musicplayer.<br />
And indeed, originally it was written to serve as internally library for a musicplayer, but has been extended to <br />
work as a standalone program which is able to download:<br />
<p>
<table border="1">
<tr>
<th>Getter</th><th>Description</th>
</tr>
<tr><td>cover</td><td>Coverart (front images supported only)</td></tr>
<tr><td>lyrics</td><td>Songtext</td></tr>
<tr><td>artistphotos</td><td>Photos of a certain band (press or live)</td></tr>
<tr><td>artistbio</td><td>Artist biography from various sites</td></tr>
<tr><td>review</td><td>album reviews from various sites</td></tr>
<tr><td>albumlist</td><td>A list of albums from a specific artist.</td></tr>
<tr><td>tags</td><td>Tags, either related to artist, album or title</td></tr>
<tr><td>relations</td><td>links to wikipedia, myspace, musicbrainz ...</td></tr>
<tr><td>similarartists</td><td>similar artists</td></tr>
<tr><td>similarsongs</td><td>similar songs</td></tr>
<tr><td>tracklist</td><td>tracklists of an album</td></tr>
<tr><td>guitartabs</td><td>guitartabs in textual form</td></tr>
<tr><td>backdrops</td><td> Large artist photos, suitable for backgrounds</td></tr>
</table>
</p>

<p><strong>Terminology</strong>:<br />
To prevent disambiguation the following terms are used below: 	<br />
* <em>glyrc</em> is the command-line interface to libglyr.<br />
* <em>libglyr</em> is the library behind, which may be used by your program.<br />
* a <em>getter</em> is a type of metadata to download, e.g. <code>cover</code>, sometimes also called <em>fetcher</em><br />
* a <em>provider</em> is a source libglyr queries in order to find the data.<br />
* <em>glyros</em> is the ruby wrapper for this lib. Currently it is not maintained.</p>

<h2><span class="caps">FEATURES</span></h2>

<ul>
<li>Many built-in providers (46 at time of writing, ~30 distinct sites), high success-rate (the longer the search, the higher the risk :))</li>
<li>Portable: Windows and Linux are supported (Developement on Linux) see <sub><sup class="footnote"><a href="#fn1">1</a></sup></sub> for Mac <span class="caps">OSX, </span></li>
<li>Fuzzy matching: Search providers with Levenshtein algorithm to eliminate typos and enhance search results.</li>
<li>Decent Unicode support: All sort of valid <span class="caps">UTF8 </span>is taken, and UTf8 output can be forced.</li>
<li>Fast Download: libcurl is used internally, and sources are searched in parallel, unneeded data is not downloaded if possible.</li>
<li>Lightweight dependencies: libcurl, glib and sqlite (for caching) - typical linux systems have those installed.</li>
<li>Download of a user defined amount of items, <code>glyrc cover -a Foo -b Bar -n 30</code> tries to load 30 covers of album &#39;Bar&#39; by artist &#39;Foo&#39;.</li>
<li>Grouped download: Query providers by descending Accuray / Speed; controllable by the user over the <code>qsratio</code></li>
<li>Optional download of images, <span class="caps">URL </span>is returned otherwise - so it can act a bit like a search-engine.</li>
<li>Free Software licensed under the terms of the <span class="caps">GPL</span>v3</li>
<li>libglyr is portable, easy, threadsafe and lowlevel enough for everyone.</li>
<li>...lots of other options like min/max size for images.</li>
<li>A built-in cache to store the metadata (using <span class="caps">SQL</span>ite)</li>
</ul>

<h2><span class="caps">GETTING STARTED</span></h2>

<h3>Compiling</h3>

<p>See the <a href="https://github.com/sahib/glyr/wiki/Compiling">compile page</a>.</p>

<h3>libglyr:</h3>

<p>See the <a href="https://github.com/sahib/glyr/wiki">examples in src/examples</a> for a quickstart.<br />
There&#39;s also a more <a href="https://github.com/sahib/glyr/wiki/Introduction-to-libglyr">gentle (and brief) introduction.</a><br />
Also see the <a href="http://sahib.github.com/glyr/doc/html/index.html"><span class="caps">API</span> Reference</a><br />
<strong>Please note:</strong> Since version 1.0.0 the <span class="caps">API </span>will be stable, and will only be open for extensions.</p>

<h3>glyrc:</h3>

<p>Please refer to <code>glyrc -h</code> which gives you a brief introduction to the arguments you can pass,<br />
See the <a href="https://github.com/sahib/glyr/wiki/Commandline-arguments">wiki</a> for more detailed information about the options.</p>

<h2><span class="caps">FAQ</span></h2>

<h3>Anyone using it already?</h3>

<ul>
<li><a href="http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client"><span class="caps">GMPC</span></a></li>
<li><a href="http://pragha.wikispaces.com/">Pragha</a></li>
<li><a href="https://github.com/studentkittens/Freya">Freya</a></li>
<li><a href="http://ok100.github.com/lyvi/">lyvi</a></li>
</ul>

<h3>Glyr.. such a silly name! Why? </h3>

<p>Indeed. Should have named it &#39;Glyros&#39; (too late, damnit).</p>

<h3>Is it hard to write something with it?</h3>

<p>Some knowledge of C might be required, but the code is straight forward most of the time.</p>

<p>Bash scripts are pretty straight-forward:<br />
<code>glyrc cover --artist Equilibrium --album Sagas --write &#39;/tmp/:artist:_:album:.:format:&#39; --callback &#39;sxiv &quot;:path:&quot;&#39;</code></p>

<p>Additionally there are bindings to Python and Ruby:</p>

<ul>
<li><a href="https://github.com/sahib/python-glyr">plyr</a> by me (complete <span class="caps">API</span>).</li>
<li><a href="https://github.com/meh/ruby-glyr">ruby-glyr</a> by meh (complete <span class="caps">API</span>).</li>
</ul>


<h3>How..how am I supposed to use it?</h3>

<p>Well, as normal user you could use <code>glyrc</code> to retrieve some metadata in a batchlike fashion.<br />
As developers you have lots of option, you could write glyr-plugins for musicplayers (gmpc!), set up a webserver with this,<br />
hack up little scripts showing covers on the desktop.. everything related to musicmetadat is possible here.<br />
You could also extend libglyr itself but that&#39;s a little harder.</p>

<h3>Isn&#39;t there musicbrainz already?</h3>

<ol>
<li>The kind of metadata downloaded by glyr differs heavily from musicbrainz.<br />
i.e. glyr finds metadata for musicplayers while musicbrainz finds data for CD Rippers and taggers.</li>
<li>Musicbrainz runs remotely on some server and uses a large database which is searched through lucene.<br />
Glyr is a client program which hops over several sites and does not cache anything, unless you do it yourself.<br />
You could of course let glyr run on a (remote) server, and cache all results to do something similiar.</li>
<li>There is <a href="http://www.coverartarchive.org">coverarchive.org</a> , but it does not seem to fully work yet. But it will be accessible once it does.</li>
</ol>

<h2><span class="caps">AUTHOR</span></h2>

<p>See the <span class="caps">AUTHORS </span>file that comes in glyr&#39;s distribution.<br />
See also <span class="caps">COPYING </span>to know about your rights.</p>

<h2>I <span class="caps">CAN HAZ HELP</span>?</h2>

<h3><span class="caps">BUGS</span></h3>

<p>If you found one: <em>Meh. Sorry for that.</em><br />
If you file a bugreport: <em>Hey, thank you!</em></p>

<p>Use the <a href="https://github.com/sahib/glyr/issues">Issue Tracker</a> to share your find.<br />
Alternatively you may drop me a mail at <sahib@online.de></p>

<h3><span class="caps">PATCHES</span></h3>

<p>If you hacked one: Excellent! Send it to me via mail or see below.<br />
If you want to add new providers you should look at the existing provider plugins to get an idea how to write one.<br />
Starting with lib/cover/lastfm.c isn&#39;t a bad idea either, because it is one of the very simple ones.</p>

<p><i>Take the usual Git(Hub) approach:</i><br />
# Fork this project<br />
# Make your changes<br />
# Make a Pull request</p>

<p>If you&#39;re not familiar with git, or just don&#39;t like it,<br />
you can also send me the patch via mail: <sahib@online.de></p>

<p>Thanks for any help in advance!</p>

<h3><span class="caps">WRITE SOFTWARE THAT USES GLYR</span></h3>

<p>May sound strange, but you&#39;re giving me a reason to maintain it, write new providers etc.<br />
Also bugreports (well, there are no bugs, just in case) are appreciated, or just questions.<br />
Those help to make the documentation more clear.</p>

<h3><span class="caps">DONATE</span></h3>

<p>You also might consider a small (CS-Students are already motivated by 1 Cent <img src="http://www.blendpolis.de/images/smilies/icon_wink.gif"/>) donation if you use feel like it:<a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="https://github.com/sahib/glyr"></a><br />
<noscript><a href="http://flattr.com/thing/302682/libglyr" target="_blank"><br />
<img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></noscript>
(For now only possible via Flattr or <a href="http://sahib.github.com/donate.html">Paypal</a> , you gonna need an account there - Sorry)</p>

<h2><span class="caps">DISCLAIMER</span></h2>

<p>As usual, no warranty is granted that this software works like expected.<br />
Refer to the <span class="caps">GPL</span>v3 copy you got with libglyr. It is <a href="https://github.com/sahib/glyr/blob/master/COPYING">here.</a><br />
Glyr is just a way to find the data, it does not own any rights on the data it found.</p>

<p><b>All retrieved items are copyrighted by their respective copyright owners.</b></p>

<p>Refer to the provider&#39;s terms of use. Every item you get from libglyr contains the name and a url to the provider, so lookup there terms of use there.</p>

<p><br /><br />
<br /></p>



<p>[1] Glyr has not been tested on Mac <span class="caps">OSX </span>yet. If you own a Mac, any help with &#39;porting&#39; glyr is highly appreciated. My guess would be that no to almost no changes need to be done though.</p></body></html>