2015-05-29, 17:57
(2015-05-29, 01:44)foreverguest Wrote: 2 factor authentication requires an application specific password:Ok, I thought it would also replace the app-specific passwords as well by the OAuth token stuff.
https://security.google.com/settings/sec...ppasswords
Yesterday all was fine with alpha3 (can confirm it to be a bit more responsive) but today it showed
Code:
17:51:50 T:2647647296 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'gmusicapi.exceptions.CallFailure'>
Error Contents: GetStreamUrl: 403 Client Error: Forbidden
(requests kwargs: {'headers': {'X-Device-ID': '***', 'Authorization': '<omitted>'}, 'params': {'opt': 'hi', 'mjck': 'Tx
***', 'pt': 'e', 'slt': '***', 'sig': '***', 'net': 'mob'}, 'url': 'https://android.clients.google.com/music/mplay', 'verif
y': False, 'allow_redirects': False, 'method': 'GET'})
(response was: '<HTML>\n<HEAD>\n<TITLE>Forbidden</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Forbidden</H1>\n<H2>Err
or 403</H2>\n</BODY>\n</HTML>\n')
Traceback (most recent call last):
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/default.py", line 13, in <module>
GoogleMusicPlaySong.GoogleMusicPlaySong().play(params)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/GoogleMusicPlaySong.py", line 13, in play
params = self.__getSongStreamUrl(song_id, params)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/GoogleMusicPlaySong.py", line 53, in __getSongStreamUrl
params['url'] = self.api.getSongStreamUrl(song_id)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/GoogleMusicApi.py", line 71, in getSongStreamUrl
stream_url = self.getLogin().getStreamUrl(song_id)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/GoogleMusicLogin.py", line 34, in getStreamUrl
return self.gmusicapi.get_stream_url(song_id, device_id, quality)
File "<string>", line 2, in get_stream_url
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/gmusicapi/utils/utils.py", line 251, in wrapper
return function(*args, **kw)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/gmusicapi/clients/mobileclient.py", line 248, in get_stream_url
return self._make_call(mobileclient.GetStreamUrl, song_id, device_id, quality)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/gmusicapi/clients/shared.py", line 80, in _make_call
return protocol.perform(self.session, self.validate, *args, **kwargs)
File "/home/pi/.kodi/addons/plugin.audio.googlemusic.exp/gmusicapi/protocol/shared.py", line 226, in perform
raise CallFailure(err_msg, call_name)
CallFailure: GetStreamUrl: 403 Client Error: Forbidden
(requests kwargs: {'headers': {'X-Device-ID': '***', 'Authorization': '<omitted>'}, 'params': {'opt': 'hi', 'mjck': 'Tx
***', 'pt': 'e', 'slt': '***', 'sig': '***', 'net': 'mob'}, 'url': 'https://android.clients.google.com/music/mplay', 'verif
y': False, 'allow_redirects': False, 'method': 'GET'})
(response was: '<HTML>\n<HEAD>\n<TITLE>Forbidden</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Forbidden</H1>\n<H2>Err
or 403</H2>\n</BODY>\n</HTML>\n')
-->End of Python script error report<--
17:51:51 T:3038248960 ERROR: Playlist Player: skipping unplayable item: 0, path [plugin://plugin.audio.googlemusic.exp/?action=play_song&song_id=***&titl
e=***&artist=***&albumart=http://lh3.googleusercontent.com/***
After I went to the "My Library" context menu and selected "Update library" it seems to have got the login again, since then playback works fine again.
Yesterday I used the "home" button to return to the main screen and today I called the plugin directly from there which led me directly back to the Playlist I was listening to. Maybe this way the login is ommitted and therefore the cookie authentication not refreshed?
Will observe it, hope it does not require manual steps every day because of some kind of cookie expiry or similar effects.
Ah, details for my installation: Raspberry Pi B with very last raspbmc installation (I think Kodi 14.2).