Ruby Lyric Parser

Amarok 1.x Scripts

Source (link to git-repo or to original if based on someone elses unmodified work): Add the source-code for this project on opencode.net

0
Score 50.0%
Description:

-- 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 differs
- 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 retrievied:
- 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 debug.rb).
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 ineffectively"
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)

-- Contact --
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@gmail.com
Last changelog:

11 years ago

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 parser:
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 locations
> Considered implementing another parser (SongLyricsCollection.com); 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 inconsistent

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.

foolosophy

11 years ago

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- Korundum (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /home/pablo/.kde3.5/share/apps/amarok/scripts/lyric_parser/amarok.rb:8

That's the error I get. I'm running Gentoo, with ruby-1.8 installed.

Report

conanrealm

11 years ago

I'm on Debian and I had to install libkorundum0-ruby1.8.

Report

foolosophy

11 years ago

Ah, that did it. Thank you.

Report

C

chocomoojuice

11 years ago

I'm currently working on extending my html parsing library. What this means for you guys is that I'll be able to add more search engines, and I should be able to implement them quite fast.
In terms of search engines to add, I'm considering sing365.com, but am not entirely decided. Do you guys have any favourite lyric databases that you think I should add in the next release?

Report

BorgQueen

11 years ago

Other than the stock lyric tools, none have worked well for me. This does a great job. I have to clean up the lyrics in the edit information but at least I actually have them. Even for the hard to find stuff.

Thanks!

Report

pejakm

11 years ago

Great script, but I have a question:

what is this, and is it really neccessary?
http://www.filehive.com/files/080808/wh.png

Report

C

chocomoojuice

11 years ago

Thanks for the feedback.
Excellent point, that shouldn't be there (apparently I'm blind). It's been fixed in the newest release.

Report

skaar

11 years ago

it no work. get two items, on a page.rb......thing. and it repeatedly crashes.

Report

C

chocomoojuice

11 years ago

I believe your problem may be that you don't have some standard Ruby libraries installed (libruby1.8).
I've now added error notifications for this, so if you try installing the newest version and running it, you should get an error dialog to confirm this.

Report

skaar

11 years ago

i eventually figured out what was wrong, i was trying to run the wrong thing, there's extraneous entries, i was trying to run them.
http://img.photobucket.com/albums/v413/sKaar/oddstuff/ruby-buggery.png
and it appears to work, well enough, except that it didn't pick up my ray stevens stuff.

Report

skaar

11 years ago

didn't work for mel torme either, but it dug up orgy and green jelly just fine.

Report

C

chocomoojuice

11 years ago

I'll do my best to make sure the next release can find these artists for you.

Report

C

chocomoojuice

11 years ago

Please post amarok's error message and tell me the track/artist that you experience a crash from, and I will look into it right away.

Report

reggler

11 years ago

Works GREAT!
Gets lyrics i haven't found with other scripts!

Cool,
Thanks!

Report

C

chocomoojuice

11 years ago

Thanks for the feedback, and enjoy!

Report

11 years ago

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 parser:
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 locations
> Considered implementing another parser (SongLyricsCollection.com); 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 inconsistent

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.

12345678910
product-maker Base: 4 x 5.0 Ratings
Be the first to comment
File (click to download) Version Description Downloads Date Filesize DL OCS-Install MD5SUM
*Needs pling-store or ocs-url to install things
Pling
0 Affiliates
Details
license
version
1.3
updated Aug 17 2008
added Aug 04 2008
downloads 24h
0
mediaviews 24h 0
pageviews 24h 1
System Tags addon