declension / squeeze-alexa

Squeezebox integration for Amazon Alexa
GNU General Public License v3.0
59 stars 20 forks source link

Getting details of current player raises KeyError when no players found #56

Closed declension closed 6 years ago

declension commented 6 years ago

Following on from #37.

Steps

Have no players set up Ask Squeezbox what's playing

Expected

An answer without error, or at least a notice that nothing is playing (perhaps because there are no players...)

Actual

Refreshing server and player statuses...
Found 0 player(s): []
'playerid': KeyError
Traceback (most recent call last):
File "/var/task/handler.py", line 37, in lambda_handler
raise e
File "/var/task/handler.py", line 34, in lambda_handler
return sqa.handle(event, context)
File "/var/task/squeezealexa/main.py", line 78, in handle
return super(SqueezeAlexa, self).handle(event, context)
File "/var/task/squeezealexa/alexa/handlers.py", line 49, in handle
return self.on_intent(request, session)
File "/var/task/squeezealexa/main.py", line 122, in on_intent
pid = self.player_id_from(intent)
File "/var/task/squeezealexa/main.py", line 648, in player_id_from
srv = self.get_server()
File "/var/task/squeezealexa/main.py", line 113, in get_server
debug=DEBUG_LMS)
File "/var/task/squeezealexa/squeezebox/server.py", line 66, in init
print_d("Default player is now %s" % (self.players[pid],))
KeyError: 'playerid'
crmbls commented 6 years ago

Same KeyError when the per settings defined DEFAULT_PLAYER is not found but another player is active.

`Refreshing server and player statuses... Found 1 player(s): ['another_player_name'] default_playerid': KeyError Traceback (most recent call last): File "/var/task/handler.py", line 37, in lambda_handler raise e ... File "/var/task/squeezealexa/squeezebox/server.py", line 66, in init print_d("Default player is now %s" % (self.players[pid],)) KeyError: 'default_playerid'

Propose to change the issue title to: Getting details of current player raises KeyError when no players or player(s) different from DEFAULT_PLAYER is(are) found

declension commented 6 years ago

Propose to change the issue title to: Getting details of current player raises KeyError when no players or player(s) different from DEFAULT_PLAYER is(are) found

Thanks. Actually I've tracked that separately now (#59), it's easier as they involve slightly different solutions.