[Rhythmbox-devel] autoqueue plugin for rhythmbox



Hi all,

I've ported my autoqueue plugin (originally written for quod libet):

http://code.google.com/p/autoqueue/

to rhythmbox, as a sort of proof of concept project after factoring out all player specific stuff from the original.

It's sort of early days, in that it doesn't support all the features that the original does yet, and it's not configurable at all for now, but it does seem to work, so I thought I'd start asking for feedback.

What it does is look up similar tracks and artists to what's playing on last.fm and puts them in the queue. It is similar to Alexandre Rosenfeld's 'Last.fm Dynamic Tracks' plugin, but (potentially as mentioned above) has some more features (but also takes more resources and is less simple/elegant).

What it does differently right now is:

- it remembers played artists, and doesn't queue them again for a period of time (now set to 1 day, will be configurable)

- it also looks up similar artists, if none of the similar tracks are in your local library. (The original also looks up by your personal last.fm tags, I don't know if this can be ported. See below.)

- it stores all the similarity data locally in a sqlite database, so it should work (after a fashion) even when you or last.fm are not online. This also means fewer queries to the last.fm webservice.

What I will be able to figure out myself but have yet been too lazy to do, is:

- hooking up the configurable variables to some UI, so that they can be easily changed by the end user.

- porting the other restrictions, so that the same songs don't come by too often.

The features I would like to port, but might need rhythmbox specific help with:

- I would like to take the 'version' id3 tag into account when looking up songs, since it often makes quite a difference to the actual similarity of songs if you have a remix or live version or original/album version of a song. I know the version is often just appended to the title between parentheses (in fact last.fm does this), but I'm anal about this kind of tagging, so I have them split off into the version tag. There currently seems no way to get at that tag from the python API, correct?

- I synchronize my last.fm 'tags' (in the web 2.0/folksonomy/tag cloud sense of the word, not the id3 sense) between my local collection and last.fm. I put these in a custom id3 tag, unhelpfully and unimaginatively named 'tag'. I would like to get at these too from the python API, so I can do similarity lookups on them, when the other lookups fail, and use them to restrict and relax the searches in smart ways. In general, is there a reason the actual tags are all hardcoded into the API? Couldn't an api method be added that takes the tagname as an extra argument? (I guess that there probably *is* a very good reason, I just don't know what it is ;)

Anyhow: for now, checking out the trunk, and putting the following files in your plugins directory:

autoqueue.py
rhythmbox_autoqueue.py
rhythmbox_autoqueue.rb-plugin

will work. If you want to see under the hood a little, while it's running, run rhythmbox from the command line with:

rhythmbox -D autoqueue

Any feedback is greatly appreciated (if it's not rhythmbox specific, please send it to me directly, or join the plugin mailing list on the project page), and if anyone would like checkin rights just drop me a line.

cheers,

--
- eric casteleijn
http://thisfred.blogspot.com


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]