diff --git a/README.rst b/README.rst index 7690ec0..0af084f 100644 --- a/README.rst +++ b/README.rst @@ -77,7 +77,8 @@ Mopidy-GMusic. See Google's docs on `how to make an app password `_ if you're not already familiar with this. -All Access subscribers may enable All Access integration by adding this line:: +By default, All Access will be enabled automatically if you subscribe. You may +force enable or disable it by using the all_access option:: [gmusic] all_access = true diff --git a/mopidy_gmusic/actor.py b/mopidy_gmusic/actor.py index 322e520..445c3a5 100644 --- a/mopidy_gmusic/actor.py +++ b/mopidy_gmusic/actor.py @@ -49,7 +49,6 @@ def on_start(self): self.session.login(self.config['gmusic']['username'], self.config['gmusic']['password'], self.config['gmusic']['deviceid']) - self.library.set_all_access(self.config['gmusic']['all_access']) # wait a few seconds to let mopidy settle # then refresh google music content asynchronously diff --git a/mopidy_gmusic/ext.conf b/mopidy_gmusic/ext.conf index 52fb0d2..1935991 100644 --- a/mopidy_gmusic/ext.conf +++ b/mopidy_gmusic/ext.conf @@ -4,7 +4,7 @@ username = password = bitrate = 160 deviceid = -all_access = false +all_access = refresh_library = 1440 refresh_playlists = 60 radio_stations_in_browse = true diff --git a/mopidy_gmusic/library.py b/mopidy_gmusic/library.py index 735d441..679794c 100644 --- a/mopidy_gmusic/library.py +++ b/mopidy_gmusic/library.py @@ -22,7 +22,6 @@ def __init__(self, *args, **kwargs): self.aa_artists = {} self.aa_tracks = LruCache() self.aa_albums = LruCache() - self.all_access = False self._radio_stations_in_browse = ( self.backend.config['gmusic']['radio_stations_in_browse']) self._radio_stations_count = ( @@ -43,8 +42,9 @@ def __init__(self, *args, **kwargs): GMusicLibraryProvider.root_directory = Ref.directory( uri='gmusic:directory', name='Google Music') - def set_all_access(self, all_access): - self.all_access = all_access + @property + def all_access(self): + return self.backend.session.all_access def _browse_albums(self): refs = [] diff --git a/mopidy_gmusic/session.py b/mopidy_gmusic/session.py index b152e36..e3ebeda 100644 --- a/mopidy_gmusic/session.py +++ b/mopidy_gmusic/session.py @@ -44,7 +44,7 @@ def inner_wrapper(self, *args, **kwargs): class GMusicSession(object): def __init__(self, all_access, api=None): - self.all_access = all_access + self._all_access = all_access if api is None: self.api = gmusicapi.Mobileclient() else: @@ -65,6 +65,13 @@ def login(self, username, password, device_id): logger.error('Failed to login to Google Music as "%s"', username) return authenticated + @property + def all_access(self): + if self._all_access is None: + return self.api.is_subscribed + + return self._all_access + @endpoint(default=None) def logout(self): return self.api.logout() diff --git a/tests/test_extension.py b/tests/test_extension.py index 11d4fd9..c966721 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -30,7 +30,7 @@ def test_get_default_config(self): self.assertIn('[gmusic]', config) self.assertIn('enabled = true', config) - self.assertIn('all_access = false', config) + self.assertIn('all_access =', config) self.assertIn('radio_stations_in_browse = true', config) self.assertIn('radio_stations_count =', config) self.assertIn('radio_tracks_count = 25', config) diff --git a/tests/test_session.py b/tests/test_session.py index e73fc6c..42964f8 100644 --- a/tests/test_session.py +++ b/tests/test_session.py @@ -159,7 +159,7 @@ def test_when_online(self, online_session): online_session.api.get_track_info.assert_called_once_with('id') def test_without_all_access(self, online_session, caplog): - online_session.all_access = False + online_session._all_access = False assert online_session.get_track_info('id') is None assert ( @@ -182,7 +182,7 @@ def test_when_online(self, online_session): 'id', include_tracks=False) def test_without_all_access(self, online_session, caplog): - online_session.all_access = False + online_session._all_access = False assert online_session.get_album_info('id') is None assert ( @@ -206,7 +206,7 @@ def test_when_online(self, online_session): 'id', include_albums=False, max_rel_artist=3, max_top_tracks=4) def test_without_all_access(self, online_session, caplog): - online_session.all_access = False + online_session._all_access = False assert online_session.get_artist_info('id') is None assert ( @@ -229,7 +229,7 @@ def test_when_online(self, online_session): 'abba', max_results=10) def test_without_all_access(self, online_session, caplog): - online_session.all_access = False + online_session._all_access = False online_session.api.search.return_value = mock.sentinel.rv @@ -267,7 +267,7 @@ def test_when_online(self, online_session): 'IFL', num_tracks=5) def test_without_all_access(self, online_session, caplog): - online_session.all_access = False + online_session._all_access = False assert online_session.get_station_tracks('IFL') == [] assert (