nvbn/rhythmbox-gmusic

interacts badly with ubuntu one

amias-channer opened this issue · 1 comments

Hello Devs,

Thanks for your code , am now listening to google play via rhythmbox which is awesome :)

i installed from the PPA and added the api via pip , it hung when i enabled the plugin . i noticed some messages related to ubuntu one so i disabled rhythmbox support for it (i don't actually use it so was no bother) and now google play is working for me. that might help someone to know that :)

Heres the output from rhymbox while i was doing this , note two invocations one with and one without ubuntu one.

amias@amias-dev:~$ rhythmbox

^CTraceback (most recent call last):
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 34, in do_activate
self.source.setup()
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 114, in setup
if self.login():
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 159, in login
return api.login(login, password)
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 147, in login
self._mm_pb_call("upload_auth") #what if this fails? can it?
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 882, in _mm_pb_call
res.ParseFromString(self.session.post_protobuf(url, req))
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 1044, in post_protobuf
'Content-Type': 'application/x-google-protobuf'
File "/usr/lib/python2.7/httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 776, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1157, in connect
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 562, in create_connection
sock.connect(sa)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
KeyboardInterrupt
Rhythmbox: could not connect to socket
Rhythmbox: No such file or directory

** (rhythmbox:22950): WARNING *_: Error calling get_info: Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/dbus/service.py", line 707, in _message_cb
retval = candidate_method(self, *args, *_keywords)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/platform/linux/dbus_interface.py", line 723, in get_info
return self.service.folders.get_info(path)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/interaction_interfaces.py", line 166, in inner
result = f(_new_args, *_new_kwargs)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/logger.py", line 283, in inner
res = f(_args, *_kwargs)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/interaction_interfaces.py", line 717, in get_info
mdobj = self.fs_manager.get_by_path(path)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/filesystem_manager.py", line 794, in get_by_path
mdid = self._idx_path[path]
KeyError: '/home/amias/.ubuntuone/Purchased from Ubuntu One'

** (rhythmbox:22950): CRITICAL **: syncdaemon_folder_info_get_subscribed: assertion `SYNCDAEMON_IS_FOLDER_INFO (finfo)' failed

(rhythmbox:22950): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
Traceback (most recent call last):
File "/usr/lib/rhythmbox/plugins/ubuntuone/MusicStoreWidget.py", line 97, in url_loaded
if urlparse.urlparse(url)[2] == "https":
File "/usr/lib/python2.7/urlparse.py", line 135, in urlparse
tuple = urlsplit(url, scheme, allow_fragments)
File "/usr/lib/python2.7/urlparse.py", line 174, in urlsplit
i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'

(rhythmbox:22950): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed

(rhythmbox:22950): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion `G_IS_OBJECT (object)' failed

(rhythmbox:22950): GLib-GObject-CRITICAL **: g_object_set_qdata_full: assertion `G_IS_OBJECT (object)' failed

(rhythmbox:22950): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
amias@amias-dev:~$ rhythmbox

^CTraceback (most recent call last):
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 34, in do_activate
self.source.setup()
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 114, in setup
if self.login():
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 159, in login
return api.login(login, password)
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 147, in login
self._mm_pb_call("upload_auth") #what if this fails? can it?
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 882, in _mm_pb_call
res.ParseFromString(self.session.post_protobuf(url, req))
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 1044, in post_protobuf
'Content-Type': 'application/x-google-protobuf'
File "/usr/lib/python2.7/httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 776, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1157, in connect
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 562, in create_connection
sock.connect(sa)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
KeyboardInterrupt
Rhythmbox: could not connect to socket
Rhythmbox: No such file or directory

** (rhythmbox:23044): WARNING *_: Error calling get_info: Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/dbus/service.py", line 707, in _message_cb
retval = candidate_method(self, *args, *_keywords)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/platform/linux/dbus_interface.py", line 723, in get_info
return self.service.folders.get_info(path)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/interaction_interfaces.py", line 166, in inner
result = f(_new_args, *_new_kwargs)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/logger.py", line 283, in inner
res = f(_args, *_kwargs)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/interaction_interfaces.py", line 717, in get_info
mdobj = self.fs_manager.get_by_path(path)
File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/syncdaemon/filesystem_manager.py", line 794, in get_by_path
mdid = self._idx_path[path]
KeyError: '/home/amias/.ubuntuone/Purchased from Ubuntu One'

** (rhythmbox:23044): CRITICAL **: syncdaemon_folder_info_get_subscribed: assertion `SYNCDAEMON_IS_FOLDER_INFO (finfo)' failed

(rhythmbox:23044): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
Traceback (most recent call last):
File "/usr/lib/rhythmbox/plugins/ubuntuone/MusicStoreWidget.py", line 97, in url_loaded
if urlparse.urlparse(url)[2] == "https":
File "/usr/lib/python2.7/urlparse.py", line 135, in urlparse
tuple = urlsplit(url, scheme, allow_fragments)
File "/usr/lib/python2.7/urlparse.py", line 174, in urlsplit
i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'

(rhythmbox:23044): Gtk-CRITICAL **: gtk_tree_selection_count_selected_rows: assertion `GTK_IS_TREE_SELECTION (selection)' failed

(rhythmbox:23044): GLib-GObject-WARNING **: invalid uninstantiatable type <invalid>' in cast toGObject'

(rhythmbox:23044): GLib-GObject-WARNING **: instance of invalid non-instantiatable type `'

(rhythmbox:23044): GLib-GObject-CRITICAL **: g_signal_emit_valist: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
2013-01-21 11:08:42,164 - gmusicapi.Api - WARNING - Received an unexpected response from call loadalltracks.
2013-01-21 11:08:42,190 - gmusicapi.Api - WARNING - error was: Failed to validate field 'playlist' list schema: additional property 'bitrate' not defined by 'properties' are not allowed in list item
2013-01-21 11:08:50,706 - gmusicapi.Api - WARNING - Received an unexpected response from call loadalltracks.
2013-01-21 11:08:50,733 - gmusicapi.Api - WARNING - error was: Failed to validate field 'playlist' list schema: additional property 'bitrate' not defined by 'properties' are not allowed in list item
2013-01-21 11:08:51,713 - gmusicapi.Api - WARNING - Received an unexpected response from call loadalltracks.
2013-01-21 11:08:51,741 - gmusicapi.Api - WARNING - error was: Failed to validate field 'playlist' list schema: additional property 'bitrate' not defined by 'properties' are not allowed in list item
2013-01-21 11:08:52,639 - gmusicapi.Api - WARNING - Received an unexpected response from call loadalltracks.
2013-01-21 11:08:52,660 - gmusicapi.Api - WARNING - error was: Failed to validate field 'playlist' list schema: additional property 'bitrate' not defined by 'properties' are not allowed in list item

(rhythmbox:23044): GLib-GObject-CRITICAL **: g_value_get_uint: assertion `G_VALUE_HOLDS_UINT (value)' failed
Traceback (most recent call last):
File "/usr/lib/rhythmbox/plugins/artsearch/artsearch.py", line 84, in album_art_requested
return s.next_search()
File "/usr/lib/rhythmbox/plugins/artsearch/artsearch.py", line 52, in next_search
search.search(self.key, self.last_time, self.store, self.search_done, None)
File "/usr/lib/rhythmbox/plugins/artsearch/local.py", line 154, in search
enumfiles = parent.enumerate_children_async("standard::content-type,access::can-read,standard::name", 0, 0, None, self._enum_children_cb, None)
AttributeError: 'NoneType' object has no attribute 'enumerate_children_async'

(rhythmbox:23044): GLib-GObject-CRITICAL **: g_value_get_uint: assertion `G_VALUE_HOLDS_UINT (value)' failed
Traceback (most recent call last):
File "/usr/lib/rhythmbox/plugins/artsearch/artsearch.py", line 84, in album_art_requested
return s.next_search()
File "/usr/lib/rhythmbox/plugins/artsearch/artsearch.py", line 52, in next_search
search.search(self.key, self.last_time, self.store, self.search_done, None)
File "/usr/lib/rhythmbox/plugins/artsearch/local.py", line 154, in search
enumfiles = parent.enumerate_children_async("standard::content-type,access::can-read,standard::name", 0, 0, None, self._enum_children_cb, None)
AttributeError: 'NoneType' object has no attribute 'enumerate_children_async'

FYI:
amias@amias-dev:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.1 LTS
Release: 12.04
Codename: precise

fully up to date and 64bit.

Thanks again for your work and for sharing your cool toys :)

so i've restarted and it doesn't work now :(

one thing i have spotted is that gmusicapi is trying to write a log to $CWD which is a bit naughty in my book , the permissions of my $CWD have prevented this and it crashed ....

Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/rhythmboxgmusic/init.py", line 2, in
from gmusicapi.api import Api
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/init.py", line 29, in
from .api import Api, CallFailure
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/api.py", line 70, in
from gmusicapi.protocol import WC_Protocol, MM_Protocol
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/protocol.py", line 45, in
from gmusicapi.utils import utils
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/utils/utils.py", line 39, in
from apilogging import LogController
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/utils/apilogging.py", line 40, in
class LogController(object):
File "/usr/local/lib/python2.7/dist-packages/gmusicapi/utils/apilogging.py", line 48, in LogController
fh = logging.FileHandler(log_filename)
File "/usr/lib/python2.7/logging/init.py", line 897, in init
StreamHandler.init(self, self._open())
File "/usr/lib/python2.7/logging/init.py", line 916, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/var/lib/dkms/vboxhost/gmusicapi.log'

(rhythmbox:7243): libpeas-WARNING **: Error loading plugin 'rhythmboxgmusic'