Replace Lyric Downloader with a plugin centric version from Rhythmbox

Registered by Matt Layman

The current lyrics_downloader.py is one file that hardcodes the source of its lyrics (leolyrics.com). Also, as indicated by copyright dates from the file, it is a couple of years old.

The lyrics_downloader is derived from source developed by the Rhythmbox project. A look at the current svn code for Rhythmbox shows that they have moved to a generic lyrics downloader plugin that supports multiple lyrics sources.

This blueprint proposes to replace the old, single source lyrics downloader with the plugin architectured lyrics downloader available in the current Rhythmbox source tree.

Details of the conversion plan are to be determined after further study of the Rhythmbox source code.

UPDATED:
Incorporation of the new lyric downloader code from Rhythmbox could have broader impacts than initially foreseen (IMO, in a good way). Due to its structure, it could lay the groundwork for the Entertainer project goal of having a plugin architecture.

A couple worthwhile notes:
  * The code makes use of gconf keys to store lyric searching engines and the default storage path for lyric files. Until we come up with a way to manage plugin preference, we may need to add some lyrics options to the preference dialog. Alternatively, we could remove the engines options and just have the users get all the engines. This removes the need to configure something and simplifies things, but users may get more than they want. My vote would be to use all the engines.
  * The code stores all lyrics in special lyric files (defaulting to ~/.lyrics/<artist>/<song title>.lyric). I think that this will need to be modified to store that information in a track record in the soon to be incorporated Storm ORM.

I know very little about how to write a plugin architecture and there are some details that will probably bite me along the way so feedback would be appreciated. This is probably something we should discuss at the sprint.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Matt Layman
Direction:
Needs approval
Assignee:
Matt Layman
Definition:
Discussion
Series goal:
Proposed for trunk
Implementation:
Not started
Milestone target:
None

Related branches

Whiteboard

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.