# retrieve player object
player = await self.mass.player.player(player_id)
queue_index = startindex
- LOGGER.info("Start Queue Stream for player %s at index %s" %(player_id, queue_index))
+ LOGGER.info("Start Queue Stream for player %s at index %s" %(player.name, queue_index))
last_fadeout_data = b''
# report start of queue playback so we can calculate current track/duration etc.
self.mass.event_loop.create_task(self.mass.player.player_queue_stream_update(player_id, queue_index, True))
params = urllib.parse.parse_qs(queue_track.uri.split('?')[1])
track_id = params['track_id'][0]
provider = params['provider'][0]
- LOGGER.info("Start Streaming queue track: %s - %s" % (track_id, queue_track.name))
+ LOGGER.info("Start Streaming queue track: %s (%s) on player %s" % (track_id, queue_track.name, player.name))
fade_in_part = b''
cur_chunk = 0
prev_chunk = None
# move to next queue index
queue_index += 1
self.mass.event_loop.create_task(self.mass.player.player_queue_stream_update(player_id, queue_index, False))
- LOGGER.info("Finished Streaming queue track: %s - %s" % (track_id, queue_track.name))
+ LOGGER.info("Finished Streaming queue track: %s (%s) on player %s" % (track_id, queue_track.name, player.name))
# break out the loop if the http session is cancelled
if cancelled.is_set():
break
-
# end of queue reached, pass last fadeout bits to final output
if last_fadeout_data:
sox_proc.stdin.write(last_fadeout_data)
await sox_proc.stdin.drain()
sox_proc.stdin.close()
await sox_proc.wait()
- LOGGER.info("streaming of queue for player %s completed" % player_id)
+ LOGGER.info("streaming of queue for player %s completed" % player.name)
async def __get_audio_stream(self, track_id, provider, player_id, cancelled,
chunksize=512000, resample=None):
if not cancelled.is_set():
yield (True, prev_chunk)
bytes_sent += len(prev_chunk)
- await process.wait()
+ #await process.wait()
if cancelled.is_set():
LOGGER.warning("__get_audio_stream for track_id %s interrupted" % track_id)
else:
track_loudness = await self.mass.db.get_track_loudness(track_id, provider)
if track_loudness == None:
# only when needed we do the analyze stuff
- LOGGER.info('Start analyzing track %s' % track_id)
+ LOGGER.debug('Start analyzing track %s' % track_id)
if streamdetails['type'] == 'url':
async with aiohttp.ClientSession() as session:
async with session.get(streamdetails["path"]) as resp:
LOGGER.debug("Integrated loudness of track %s is: %s" %(track_id, loudness))
await self.mass.db.set_track_loudness(track_id, provider, loudness)
del audio_data
- LOGGER.info('Finished analyzing track %s' % track_id)
+ LOGGER.debug('Finished analyzing track %s' % track_id)
self.analyze_jobs.pop(track_key, None)
async def __get_track_gain_correct(self, track_id, provider):
self.__app_id = "285473059" # TEMP! Own key requested
self.__app_secret = "47249d0eaefa6bf43a959c09aacdbce8" # TEMP! Own key requested
self.__logged_in = False
- self.throttler = Throttler(rate_limit=1, period=1)
+ self.throttler = Throttler(rate_limit=2, period=1)
mass.event_loop.create_task(mass.add_event_listener(self.mass_event))
async def search(self, searchstring, media_types=List[MediaType], limit=5):
params["request_sig"] = request_sig
params["app_id"] = self.__app_id
params["user_auth_token"] = await self.__auth_token()
- async with self.throttler:
- async with self.http_session.get(url, headers=headers, params=params) as response:
- result = await response.json()
- if not result or 'error' in result:
- LOGGER.error(url)
- LOGGER.error(params)
- LOGGER.error(result)
- return None
- return result
+ try:
+ async with self.throttler:
+ async with self.http_session.get(url, headers=headers, params=params) as response:
+ result = await response.json()
+ if not result or 'error' in result:
+ LOGGER.error(url)
+ LOGGER.error(params)
+ LOGGER.error(result)
+ return None
+ return result
+ except Exception as exc:
+ LOGGER.exception(exc)
+ return None
async def __post_data(self, endpoint, params={}, data={}):
''' post data to api'''