[Rhythmbox-devel] Context pane plugin improvements
- From: Mika Wahlroos <mpw iki fi>
- To: rhythmbox-devel <rhythmbox-devel gnome org>
- Subject: [Rhythmbox-devel] Context pane plugin improvements
- Date: Sat, 12 Dec 2009 00:45:37 +0200
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:
Efficiency:
- 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. :-)
Cheers,
Mika
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]