Re: [Rhythmbox-devel] [WIP] Rhythmbox-Spotify Plugin Revived



Excellent work Sean. I had forgotten I had even started that
project. To answer, the uncertainty, the "original" code was mine, but
it was based on another non-spotify project, probably daap. My memory
is fuzzy on it. 

I changed job soon after that so I had much less time to play with
code at home. And then the official linux client came
out. So my interest wained, especially since I was having a lot of
audio quality bugs, and I know next to nothing about audio.

I'm really glad to see someone has picked it up and ran with it
though. It goes to show how if you've written something, you should
just publish it. If it's worthwhile, someone will pick it up :)

-Ivan

BTW, ill update my repo point to yours.


On Wed, Oct 17, 2012 at 01:49:52AM -0400, Sean McNamara wrote:
> Hi All,
> 
> As most of you are aware, the Rhythmbox and larger GNOME platform APIs
> have been in flux for the past few years. This has caused a number of
> plugins to suffer from bitrot, particularly "out-of-tree" plugins.
> 
> There was one plugin in particular that interested me,
> "rhythmbox-spotify", which I've now tackled, and it is working at
> alpha quality on Rhythmbox 2.98. A bit of history of this plugin:
> 
>  (1) It seems to be based on the DAAP plugin in terms of code layout
> and some of the boilerplate stuff, so Paolo Maggi's works are all
> throughout.
>  (2) The original author of the rhythmbox-spotify project seems to be
> Ivan Kelly (please correct me if I'm wrong). This work was maintained
> through 2009, from what I can tell of the github commit history.
>  (3) Alexandre Mazari made some updates to the APIs in early 2011, but
> unfortunately did not complete the transition to the Gnome 3.0
> platform. There have also been more drastic changes in Rhythmbox's own
> APIs since then.
> 
> The work performed so far is as follows:
> 
>  - Ported from RBPlugin architecture to libpeas.
>  - Ported prefs UI from GTK2/Glade3 to GTK3 (no Glade).
>  - Fixed a _really_ nasty synchronization issue that was crashing in
> libspotify (see the commit log for details [2]).
>  - Fixed internationalization, removed a ton of unneeded files, and
> other little maintenance tasks. Also cleaned up source formatting
> using Eclipse to Allman/BSD style across all source files.
>  - Made the plugin fully compatible with the latest version of
> libspotify as of this writing (12.1.51).
>  - Hacked on the build system to freshen up the autotools files.
>  - Silenced a number of warnings (whether they were there before the
> API changes or not, I don't know).
> 
> At the present time, I've brought up the plugin so that it plays
> tracks when searching in the "spotify" store plugin. The known issues
> are many:
> 
>  (i) You have to search twice in order to get results at present; I am
> investigating this. The source will appear to have no tracks until you
> have edited your search query at least twice, at which time it starts
> to return results (if there are any in Spotify). Try searching for the
> last name of a popular music artist to get started.
>  (ii) The audio starts to pop every few seconds near the end of a track.
>  (iii) The plugin is still using GConf-2.0 for settings. I'm familiar
> with GSettings, but haven't had time to port it over yet, as I was
> focused on the core functionality.
>  (iv) The elapsed time and total song duration times are not always
> accurate: sometimes the slider doesn't update at all, and sometimes
> the slider indicates a negative time when it should be positive.
>  (v) The active track will change before the song is finished playing.
> When this happens, the buffered audio of the previous track will
> continue to play, even though the UI thinks it's on the next track.
>  (vi) An error dialog telling you you've got a wrong password will
> display when you enable the plugin, until you are able to successfully
> authenticate a username/password using the Preferences pane.
>  (vii) SECURITY: The plugin stores your Spotify password in clear text
> in GConf (soon to be GSettings). This will be easy to workaround
> because libspotify itself provides a "blob" (essentially an
> authentication token) that the application can use to re-authenticate,
> without having to save the user's password in text form.
>  (viii) I consider this to be a "bug" but some may not: this plugin
> depends on the proprietary libspotify, which is not strictly
> necessary; the despotify library should work as well, and is open
> source.
>  (ix) No support for using your Spotify playlists, though I'm sure
> this will be a very important feature to provide.
> 
> I'll also mention that upstream Rhythmbox bug #677665 [5] is a pain
> for most/all native out-of-tree plugins right now, and as a result,
> you will get FTBTS unless you apply the obvious fix to the problem
> detailed in that bug.
> 
> Even if I could resolve all of the known issues, I am unlikely to seek
> upstreaming of this plugin (I wouldn't be opposed if the RB
> maintainers wanted to pick it up, though!). I think it will be happy
> as an out-of-tree plugin, and I will continue to maintain it and
> whittle down the list of bugs. If anyone has a burning desire to see
> this included in your distro of choice (but not before the security
> issue is fixed, at a minimum), let me know.
> 
> Now that I understand the plugin well enough to have fixed large parts
> of it to work with a new platform, I might as well go ahead and
> re-write it in Vala. I already maintain one out-of-tree Vala plugin,
> so two shouldn't be any harder. I can't wait to shove all of that GLib
> boilerplate stuff under the hood. ;-)
> 
> Anyway, this is just kind of a "work log" of what I've done with this
> crusty old code to make it, at least, play some music from Spotify on
> the Gnome3 platform and the latest libspotify. If anyone is interested
> in contributing, I'd be more than happy to work together. From this
> point forward, I'd like to focus on resolving as many user-visible
> bugs as possible, while also making sure we're using all the latest
> APIs (GSettings, hint hint) and improving code readability and
> maintainability. I haven't gone whole-house into a Vala re-write yet
> because I'm still learning how it works, but that's on my longer-term
> todo list.
> 
> I'll end with a few links:
> 
> [1] My first Rhythmbox plugin, written in Vala; rbpitch:
> https://launchpad.net/rbpitch
> [2] The Rhythmbox-Spotify code that I've revived:
> https://github.com/allquixotic/rhythmbox-spotify
> [3] Alexandre's vintage 2011 code, which, while newer than Ivan's, is
> still a long way from working with Rhythmbox 2.98:
> https://github.com/amazari/rhythmbox-spotify
> [4] Ivan's original code, where it all started AFAICT:
> https://github.com/ivankelly/Rhythmbox-Spotify-Plugin
> [5] Gnome Bug 677665: https://bugzilla.gnome.org/show_bug.cgi?id=677665
> 
> I idle on Gnome IRC in #rhythmbox as allquixotic; feel free to ping me
> (though I may not answer for some time).
> 
> Regards,
> 
> Sean


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