Ruby Lyric Parser 1.3

James Gleeson chocomoojuice at
Sun Aug 17 10:29:02 CEST 2008

Name: Ruby Lyric Parser
Version: 1.3
Type: Amarok Script
License: Creative Commons by
More Info:

 -- About --
RLP is a lyric fetching script for Amarok written
in Ruby.

The RLP philosophy: 
1) Keep the number of search engines to a minimum.

2) Use the best search engines. 
3) Search effectively and efficiently. 

Search Engines (in order of search priority): 
1) LyricWiki - a reliable, well-maintained, and
constantly updated lyric site 
2) JustSomeLyrics - good for less popular music
(not found on LyricWiki) 

__Basic Search Algorithm Description__
Processing Artist/Song Data: 
1) Artist and song data are first "processed";
this involves stripping any useless/junk
characters that would otherwise prevent useful
search results. 
2) Original artist and song data are still
preserved. In the event that a search with the
processed info fails, we'll try it again but with
the unprocessed data. 
3) Adding to 2... RLP will retry only if all the
following conditions hold true: 
- The processed and unprocessed song information
- retry is set to true in configuration options 
- The search method itself is set to retry (as
defined by me) 

LyricWiki Search Methods: 
1) Guess the song url: This method "guesses" the
song url from the song/artist data. So, if the
meta tags on your music are accurate, then you'll
have no problems getting lyrics. 
2) Google search: This method searches google
using the song/artist data and grabs the first
search result. It then checks the "type of page it
- If it's a song page, return the lyrics 
- If it's the artist's main page or an album page,
find the song link from the page 

JustSomeLyrics Search Methods: 
1) Google search: This method searches google
using the song/artist data and grabs the first
search result. 

-- Benefits of RLP --
1) I actively develop and constantly test my code
(see the Test Cases suite I've included in
2) The general trend with lyrics scripts seems to
be: "more search engines = better results"
I disagree, and instead believe: "more search
engines = bloated and slow script that searches
3) I'm open to suggestions (see Contact
information below). 

-- Configuration --
The configuration is located at the top of
lyric_parser.rb, and is quite minimal (and in my
opinion, not needed). 

-- Dependencies --
Ruby 1.8 (ruby1.8) 
Standard Ruby Libraries (libruby1.8) 
kdebase-bin (for error notifications) 
Having trouble getting lyrics for a song even
though it's on one of the above search engines?
Know a better lyric search engine that I should
include in future releases? 

By all means, email me about it, and I'll consider
implementing it.
Email: chocomoojuice at

 Version 1.3
Date: Sunday, August 17th, 2008
> Fixed a bug where LyricWiki lyric pages obtained
from "guessing" the song url weren't being
recognized as successful (and therefore skipped)
> Improved algorithm for LyricWiki google search;
RLP now checks what type of page the first google
hit is:
1. If it's the song page, return the lyrics on
that page (this was the default behaviour before)
2. If it's the artist's main page or an album
page, find the link to the song from it
> Added another search method to the LyricWiki
1. Guess the artist page
2. If successful, find the song link from the page
> Made many more functions for my html parsing
library, and improved the functionality of some
already existing ones
> Organized my code into more sensible file
> Considered implementing another parser
(; however, after
extensive testing of the beta parser, I found that
in addition to having a low lyric yield on search
attempts, the way in which this site formats it's
URL's and even lyric pages is extremely

Version 1.2
Date: Saturday, August 9th, 2008
> Fixed a bug where library files I made (page.rb,
lyric_parser_implementations.rb) were showing up
in the script manager [thanks to pejakm for
pointing that out]
> Gave an html makeover to the About information
> Changed the "Powered by" message at the bottom
of lyric fetches

Version 1.1
Date: Monday, August 6th, 2008
> Fixed a minor bug that would've broken the retry
facility if I added another parser.
> Added error handling for missing Ruby libraries
(but kdebase-bin must be installed for them to
display, sorry gnome users)
> Added dependency list to description

Version 1.0
Date: Monday, August 4th, 2008
> Initial release.

More information about the Kde-announce-apps mailing list