[Rhythmbox-devel] Context pane plugin improvements

Hi all,

I've been thinking about some potential improvements to the already very interesting context pane to provide more interaction rather than just listing of contents. Perhaps there's already something like this in the original plans for the plugin. If nobody else is planning to do something similar, I'd like feedback from members of this list as to whether you think they're good ideas, how they could be developed further (I haven't thought about them very far yet), and whether they sound technically feasible.

Basically, I think it might be good if top tracks and albums displayed in the context pane for the currently playing artist weren't just lists of strings that can't be directly used for anything within Rhythmbox. Perhaps we could check if the user has the track (practically a track with the same artist, album and title) in their library, visually differentiate tracks available for playback from those that aren't available, and allow the user to e.g. jump to (or perhaps even directly play) an available track just by clicking it in the context pane, or to drag and drop the track into a playlist or the play queue.

Since users of the context pane are members of Last.fm (AFAIK it requires a valid account), maybe this could even be extended to check if the full track is available for streaming and offer to play it from there if it's not in the local library.

For albums we could perhaps check if there are tracks with the same artist and album title in the library and jump to the album in the browser. (I'm not quite sure if that's a good idea in case the user has the genre/artist/album browser hidden.)

A few concerns I've come up with so far:

- Is searching for each displayed track in the database fast enough, even for large libraries? Granted, there aren't that many tracks shown so this might not be a significant issue.

Python bindings:
- Are all API functions that would be needed for these kinds of queries currently available to Python plugins (or, rather, is there any obviously required API that is *not* available)? Are there any potential threading issues?

UI and mental model:
- How should we clearly distinguish between tracks that are available for playback and those that aren't? I've thought about using a small icon, for example the same icon used for the library source to indicate that the track is available in the library. - If clicking an available track started playing it, which source and context would it be playing from? Perhaps the library source (if the track is available there), but within which context? If the user has artist A selected in the library and now clicks on a track by artist B in the context pane, should the browser now have artist B selected? And so on. - The previous question could be at least partially avoided if we e.g. just jumped to the track in the library browser when the user clicks on it in the context pane. However, if streaming from Last.fm is feasible, does the Last.fm source offer anything similar to this? The basic UI behaviour of track entries should of course be consistent whether the track is played locally or streamed online.

Last.fm API and terms:
- Do the Last.fm API and terms of use allow for such streaming if the full track is available for explicit playback on the Last.fm site?

I haven't written any code yet, and as mentioned above, I've also yet to check for the availability of necessary APIs. The implementation might actually be pretty simple but before I go on with it, I'd still welcome any feedback and insight on the potential issues mentioned above as well as anything else that comes to your mind, or whether you think it's feasible at all. And, of course, I'd like to know if someone is already working on something like this. :-)



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