]
for prov_id, provider in self.mass.music.providers.items():
if not prov_id in item_provider_keys:
- self.mass.event_loop.create_task(
- provider.match_artist(new_artist, new_artist_albums,
- new_artist_toptracks))
+ await provider.match_artist(
+ new_artist, new_artist_albums, new_artist_toptracks)
return item_id
async def get_artist_musicbrainz_id(self,
]
for prov_id, provider in self.mass.music.providers.items():
if not prov_id in item_provider_keys:
- self.mass.event_loop.create_task(
- provider.match_album(new_album))
+ await provider.match_album(new_album)
return item_id
async def track(self, prov_item_id, lazy=True,
]
for prov_id, provider in self.mass.music.providers.items():
if not prov_id in item_provider_keys:
- self.mass.event_loop.create_task(
- provider.match_track(new_track))
+ await provider.match_track(new_track)
return item_id
async def playlist(self, prov_playlist_id) -> Playlist:
self._next_queue_startindex = 0
self._last_player_state = PlayerState.Stopped
self._last_track = None
- self.mass.run_task(
- self.mass.add_event_listener(self.on_shutdown, "shutdown"))
+ asyncio.run_coroutine_threadsafe(
+ self.mass.add_event_listener(self.on_shutdown, "shutdown"), self.mass.event_loop)
# load previous queue settings from disk
- self.mass.run_task(self.__restore_saved_state())
+ asyncio.run_coroutine_threadsafe(self.__restore_saved_state(), self.mass.event_loop)
@property
def shuffle_enabled(self):
provider='database') -> List[Track]:
''' get top tracks for given artist '''
track_names = []
- artist = await self.artist(artist_id, provider)
+ artist = await self.artist(artist_id, provider, lazy=False)
# always append database tracks
async for item in self.mass.db.artist_tracks(artist.item_id):
if (item.name + item.version) not in track_names:
provider='database') -> List[Album]:
''' get (all) albums for given artist '''
album_names = []
- artist = await self.artist(artist_id, provider)
- # always append database tracks
+ artist = await self.artist(artist_id, provider, lazy=False)
+ # always append database tracks (if db artist)
async for item in self.mass.db.artist_albums(artist.item_id):
if (item.name + item.version) not in album_names:
yield item
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
+ def error_received(self, exc):
+ LOGGER.error(exc)
+
def connection_lost(self, *args, **kwargs):
LOGGER.debug("Connection lost to discovery")
""" get full artist details"""
item_id = request.match_info.get('item_id')
provider = request.rel_url.query.get('provider')
+ lazy = request.rel_url.query.get('lazy', 'true') != 'false'
if (item_id is None or provider is None):
return web.Response(text='invalid item or provider', status=501)
- result = await self.mass.music.artist(item_id, provider, lazy=False)
+ result = await self.mass.music.artist(item_id, provider, lazy=lazy)
return web.json_response(result, dumps=json_serializer)
@routes.get('/api/albums/{item_id}')
""" get full album details"""
item_id = request.match_info.get('item_id')
provider = request.rel_url.query.get('provider')
+ lazy = request.rel_url.query.get('lazy', 'true') != 'false'
if (item_id is None or provider is None):
return web.Response(text='invalid item or provider', status=501)
- result = await self.mass.music.album(item_id, provider, lazy=False)
+ result = await self.mass.music.album(item_id, provider, lazy=lazy)
return web.json_response(result, dumps=json_serializer)
@routes.get('/api/tracks/{item_id}')
""" get full track details"""
item_id = request.match_info.get('item_id')
provider = request.rel_url.query.get('provider')
+ lazy = request.rel_url.query.get('lazy', 'true') != 'false'
if (item_id is None or provider is None):
return web.Response(text='invalid item or provider', status=501)
- result = await self.mass.music.track(item_id, provider, lazy=False)
+ result = await self.mass.music.track(item_id, provider, lazy=lazy)
return web.json_response(result, dumps=json_serializer)
@routes.get('/api/playlists/{item_id}')