README.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <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>
  3. <p>The finest search you can buy for no money <sup>TM</sup></p>
  4. <p><img src="https://github.com/sahib/glyr/blob/master/doc/screenshot.png" alt="[screenshot]" /></p>
  5. It comes both in a command-line interface tool and as a C library, both with an easy to use interface.<br />
  6. The sort of metadata glyr is searching (and downloading) is usually the data you see in your musicplayer.<br />
  7. And indeed, originally it was written to serve as internally library for a musicplayer, but has been extended to <br />
  8. work as a standalone program which is able to download:<br />
  9. <p>
  10. <table border="1">
  11. <tr>
  12. <th>Getter</th><th>Description</th>
  13. </tr>
  14. <tr><td>cover</td><td>Coverart (front images supported only)</td></tr>
  15. <tr><td>lyrics</td><td>Songtext</td></tr>
  16. <tr><td>artistphotos</td><td>Photos of a certain band (press or live)</td></tr>
  17. <tr><td>artistbio</td><td>Artist biography from various sites</td></tr>
  18. <tr><td>review</td><td>album reviews from various sites</td></tr>
  19. <tr><td>albumlist</td><td>A list of albums from a specific artist.</td></tr>
  20. <tr><td>tags</td><td>Tags, either related to artist, album or title</td></tr>
  21. <tr><td>relations</td><td>links to wikipedia, myspace, musicbrainz ...</td></tr>
  22. <tr><td>similarartists</td><td>similar artists</td></tr>
  23. <tr><td>similarsongs</td><td>similar songs</td></tr>
  24. <tr><td>tracklist</td><td>tracklists of an album</td></tr>
  25. <tr><td>guitartabs</td><td>guitartabs in textual form</td></tr>
  26. <tr><td>backdrops</td><td> Large artist photos, suitable for backgrounds</td></tr>
  27. </table>
  28. </p>
  29. <p><strong>Terminology</strong>:<br />
  30. To prevent disambiguation the following terms are used below: <br />
  31. * <em>glyrc</em> is the command-line interface to libglyr.<br />
  32. * <em>libglyr</em> is the library behind, which may be used by your program.<br />
  33. * a <em>getter</em> is a type of metadata to download, e.g. <code>cover</code>, sometimes also called <em>fetcher</em><br />
  34. * a <em>provider</em> is a source libglyr queries in order to find the data.<br />
  35. * <em>glyros</em> is the ruby wrapper for this lib. Currently it is not maintained.</p>
  36. <h2><span class="caps">FEATURES</span></h2>
  37. <ul>
  38. <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>
  39. <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>
  40. <li>Fuzzy matching: Search providers with Levenshtein algorithm to eliminate typos and enhance search results.</li>
  41. <li>Decent Unicode support: All sort of valid <span class="caps">UTF8 </span>is taken, and UTf8 output can be forced.</li>
  42. <li>Fast Download: libcurl is used internally, and sources are searched in parallel, unneeded data is not downloaded if possible.</li>
  43. <li>Lightweight dependencies: libcurl, glib and sqlite (for caching) - typical linux systems have those installed.</li>
  44. <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>
  45. <li>Grouped download: Query providers by descending Accuray / Speed; controllable by the user over the <code>qsratio</code></li>
  46. <li>Optional download of images, <span class="caps">URL </span>is returned otherwise - so it can act a bit like a search-engine.</li>
  47. <li>Free Software licensed under the terms of the <span class="caps">GPL</span>v3</li>
  48. <li>libglyr is portable, easy, threadsafe and lowlevel enough for everyone.</li>
  49. <li>...lots of other options like min/max size for images.</li>
  50. <li>A built-in cache to store the metadata (using <span class="caps">SQL</span>ite)</li>
  51. </ul>
  52. <h2><span class="caps">GETTING STARTED</span></h2>
  53. <h3>Compiling</h3>
  54. <p>See the <a href="https://github.com/sahib/glyr/wiki/Compiling">compile page</a>.</p>
  55. <h3>libglyr:</h3>
  56. <p>See the <a href="https://github.com/sahib/glyr/wiki">examples in src/examples</a> for a quickstart.<br />
  57. There&#39;s also a more <a href="https://github.com/sahib/glyr/wiki/Introduction-to-libglyr">gentle (and brief) introduction.</a><br />
  58. Also see the <a href="http://sahib.github.com/glyr/doc/html/index.html"><span class="caps">API</span> Reference</a><br />
  59. <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>
  60. <h3>glyrc:</h3>
  61. <p>Please refer to <code>glyrc -h</code> which gives you a brief introduction to the arguments you can pass,<br />
  62. See the <a href="https://github.com/sahib/glyr/wiki/Commandline-arguments">wiki</a> for more detailed information about the options.</p>
  63. <h2><span class="caps">FAQ</span></h2>
  64. <h3>Anyone using it already?</h3>
  65. <ul>
  66. <li><a href="http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client"><span class="caps">GMPC</span></a></li>
  67. <li><a href="http://pragha.wikispaces.com/">Pragha</a></li>
  68. <li><a href="https://github.com/studentkittens/Freya">Freya</a></li>
  69. <li><a href="http://ok100.github.com/lyvi/">lyvi</a></li>
  70. </ul>
  71. <h3>Glyr.. such a silly name! Why? </h3>
  72. <p>Indeed. Should have named it &#39;Glyros&#39; (too late, damnit).</p>
  73. <h3>Is it hard to write something with it?</h3>
  74. <p>Some knowledge of C might be required, but the code is straight forward most of the time.</p>
  75. <p>Bash scripts are pretty straight-forward:<br />
  76. <code>glyrc cover --artist Equilibrium --album Sagas --write &#39;/tmp/:artist:_:album:.:format:&#39; --callback &#39;sxiv &quot;:path:&quot;&#39;</code></p>
  77. <p>Additionally there are bindings to Python and Ruby:</p>
  78. <ul>
  79. <li><a href="https://github.com/sahib/python-glyr">plyr</a> by me (complete <span class="caps">API</span>).</li>
  80. <li><a href="https://github.com/meh/ruby-glyr">ruby-glyr</a> by meh (complete <span class="caps">API</span>).</li>
  81. </ul>
  82. <h3>How..how am I supposed to use it?</h3>
  83. <p>Well, as normal user you could use <code>glyrc</code> to retrieve some metadata in a batchlike fashion.<br />
  84. As developers you have lots of option, you could write glyr-plugins for musicplayers (gmpc!), set up a webserver with this,<br />
  85. hack up little scripts showing covers on the desktop.. everything related to musicmetadat is possible here.<br />
  86. You could also extend libglyr itself but that&#39;s a little harder.</p>
  87. <h3>Isn&#39;t there musicbrainz already?</h3>
  88. <ol>
  89. <li>The kind of metadata downloaded by glyr differs heavily from musicbrainz.<br />
  90. i.e. glyr finds metadata for musicplayers while musicbrainz finds data for CD Rippers and taggers.</li>
  91. <li>Musicbrainz runs remotely on some server and uses a large database which is searched through lucene.<br />
  92. Glyr is a client program which hops over several sites and does not cache anything, unless you do it yourself.<br />
  93. You could of course let glyr run on a (remote) server, and cache all results to do something similiar.</li>
  94. <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>
  95. </ol>
  96. <h2><span class="caps">AUTHOR</span></h2>
  97. <p>See the <span class="caps">AUTHORS </span>file that comes in glyr&#39;s distribution.<br />
  98. See also <span class="caps">COPYING </span>to know about your rights.</p>
  99. <h2>I <span class="caps">CAN HAZ HELP</span>?</h2>
  100. <h3><span class="caps">BUGS</span></h3>
  101. <p>If you found one: <em>Meh. Sorry for that.</em><br />
  102. If you file a bugreport: <em>Hey, thank you!</em></p>
  103. <p>Use the <a href="https://github.com/sahib/glyr/issues">Issue Tracker</a> to share your find.<br />
  104. Alternatively you may drop me a mail at <sahib@online.de></p>
  105. <h3><span class="caps">PATCHES</span></h3>
  106. <p>If you hacked one: Excellent! Send it to me via mail or see below.<br />
  107. If you want to add new providers you should look at the existing provider plugins to get an idea how to write one.<br />
  108. Starting with lib/cover/lastfm.c isn&#39;t a bad idea either, because it is one of the very simple ones.</p>
  109. <p><i>Take the usual Git(Hub) approach:</i><br />
  110. # Fork this project<br />
  111. # Make your changes<br />
  112. # Make a Pull request</p>
  113. <p>If you&#39;re not familiar with git, or just don&#39;t like it,<br />
  114. you can also send me the patch via mail: <sahib@online.de></p>
  115. <p>Thanks for any help in advance!</p>
  116. <h3><span class="caps">WRITE SOFTWARE THAT USES GLYR</span></h3>
  117. <p>May sound strange, but you&#39;re giving me a reason to maintain it, write new providers etc.<br />
  118. Also bugreports (well, there are no bugs, just in case) are appreciated, or just questions.<br />
  119. Those help to make the documentation more clear.</p>
  120. <h3><span class="caps">DONATE</span></h3>
  121. <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 />
  122. <noscript><a href="http://flattr.com/thing/302682/libglyr" target="_blank"><br />
  123. <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></noscript>
  124. (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>
  125. <h2><span class="caps">DISCLAIMER</span></h2>
  126. <p>As usual, no warranty is granted that this software works like expected.<br />
  127. 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 />
  128. Glyr is just a way to find the data, it does not own any rights on the data it found.</p>
  129. <p><b>All retrieved items are copyrighted by their respective copyright owners.</b></p>
  130. <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>
  131. <p><br /><br />
  132. <br /></p>
  133. <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>