Untested changes for time info and language change

This commit is contained in:
Ruben van de Ven 2019-11-13 23:51:40 +01:00
parent 0c1936126c
commit 70a146491f
3 changed files with 26 additions and 15 deletions

View file

@ -158,12 +158,14 @@ class CentralCommand(object):
# status['history'] = hv.story.getLogSummary() # disabled as it is a bit slow. We now have eventLog # status['history'] = hv.story.getLogSummary() # disabled as it is a bit slow. We now have eventLog
# status['counts'] = {t: len(a) for t, a in status['history'].items() if t != 'directions' } # status['counts'] = {t: len(a) for t, a in status['history'].items() if t != 'directions' }
status['counts'] = {} if not hv.story else hv.story.getLogCounts() status['counts'] = {} if not hv.story else hv.story.getLogCounts()
status['duration'] = 0 if not hv.story else hv.story.timer.getElapsed() status['duration'] = 0 if not hv.story else (hv.story.timer.getElapsed('first_speech') if hv.story.timer.hasMark('first_speech') else hv.story.timer.getElapsed())
status['has_state'] = Story.hugveyHasSavedState(hv.lightId) status['has_state'] = Story.hugveyHasSavedState(hv.lightId)
status['variables'] = {} if not isSelected or not hv.story else hv.story.variableValues status['variables'] = {} if not isSelected or not hv.story else hv.story.variableValues
# evLogger = eventLogger.getChild(f"{hv_id}") # evLogger = eventLogger.getChild(f"{hv_id}")
status['time_since_hugvey_spoke_state'] = ""
status['time_since_visitor_spoke_state'] = ""
if not hv.story: if not hv.story:
status['time_since_hugvey_spoke'] = '-' status['time_since_hugvey_spoke'] = '-'
status['time_since_visitor_spoke'] = '-' status['time_since_visitor_spoke'] = '-'
@ -175,23 +177,21 @@ class CentralCommand(object):
else: else:
diff = datetime.timedelta(seconds=int(hv.story.timer.getElapsed() - hv.story.lastMsgFinishTime)) diff = datetime.timedelta(seconds=int(hv.story.timer.getElapsed() - hv.story.lastMsgFinishTime))
status['time_since_hugvey_spoke'] = str(diff) status['time_since_hugvey_spoke'] = str(diff)
# if diff > 300: if diff > 300:
# evLogger.warning("Very long time since hugvey spoke") status['time_since_hugvey_spoke_state'] = 'critical'
# elif diff > 100: elif diff > 100:
# evLogger.warning("Long time since hugvey spoke") status['time_since_hugvey_spoke_state'] = 'warning'
# else:
# #clear warning
# pass
if not hv.story.timer.hasMark('last_speech'): if not hv.story.timer.hasMark('last_speech'):
status['time_since_visitor_spoke'] = 'never' status['time_since_visitor_spoke'] = 'never'
else: else:
diff = datetime.timedelta(seconds=int(hv.story.timer.getElapsed('last_speech'))) diff = datetime.timedelta(seconds=int(hv.story.timer.getElapsed('last_speech')))
status['time_since_visitor_spoke'] = str(diff) status['time_since_visitor_spoke'] = str(diff)
# if diff > 300: if diff > 300:
# evLogger.warning("Very long time since audience spoke") # evLogger.warning("Very long time since audience spoke")
# elif diff > 100: status['time_since_visitor_spoke'] = 'critical'
# evLogger.warning("Long time since audience spoke") elif diff > 100:
status['time_since_visitor_spoke'] = 'warning'
# else: # else:
# #clear warning # #clear warning
# pass # pass
@ -535,6 +535,7 @@ class HugveyState(object):
self.eventQueue = None self.eventQueue = None
self.language_code = 'en-GB' self.language_code = 'en-GB'
self.future_language_code = None
self.story = None self.story = None
self.streamer = None self.streamer = None
self.google = None self.google = None
@ -695,8 +696,9 @@ class HugveyState(object):
if event['event'] == 'change_language': if event['event'] == 'change_language':
self.setLanguage(event['lang_code']) self.setLanguage(event['lang_code'])
if event['event'] == 'change_language_if_available': if event['event'] == 'change_language_if_available':
if self.isAvailable() or self.status == self.STATE_BLOCKED: self.future_language_code = event['lang_code']
self.setLanguage(event['lang_code']) # if self.isAvailable() or self.status == self.STATE_BLOCKED:
# self.setLanguage(event['lang_code'])
if event['event'] == 'change_light': if event['event'] == 'change_light':
self.setLightId(event['light_id']) self.setLightId(event['light_id'])
if event['event'] == 'change_light_status': if event['event'] == 'change_light_status':
@ -860,6 +862,10 @@ class HugveyState(object):
self.logger.info("Changing language") self.logger.info("Changing language")
self.configureLanguage(self.story.language_code) self.configureLanguage(self.story.language_code)
else: else:
if self.future_language_code and self.future_language_code != self.language_code:
self.logger.info(f"Restart with other language: {self.language_code} -> {self.future_language_code}")
self.configureLanguage(self.future_language_code)
self.story = Story(self, port) self.story = Story(self, port)
self.story.setStoryData(copy.deepcopy(self.command.languages[self.language_code]), self.language_code) self.story.setStoryData(copy.deepcopy(self.command.languages[self.language_code]), self.language_code)

View file

@ -140,6 +140,9 @@ def getWebSocketHandler(central_command):
central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'change_language', 'lang_code': lang_code}) central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'change_language', 'lang_code': lang_code})
def msgChangeLanguageForAllAvailableHugveys(self, lang_code): def msgChangeLanguageForAllAvailableHugveys(self, lang_code):
"""
Set language for all future hugvey runs (so after a 'finish')
"""
for hv_id in central_command.hugveys: for hv_id in central_command.hugveys:
central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'change_language_if_available', 'lang_code': lang_code}) central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'change_language_if_available', 'lang_code': lang_code})

View file

@ -277,7 +277,7 @@ class Reply(object):
self.utterances.append(utterance) self.utterances.append(utterance)
def getText(self) -> str: def getText(self) -> str:
return ". ".join([u.text for u in self.utterances]) return ". ".join([u.text for u in self.utterances]).strip()
def getActiveUtterance(self, currentTime) -> Utterance: def getActiveUtterance(self, currentTime) -> Utterance:
""" """
@ -1592,6 +1592,8 @@ class Story(object):
utterance.setText(e['transcript'], now) utterance.setText(e['transcript'], now)
self.hugvey.eventLogger.info("speaking: content {} \"{}\"".format(id(utterance), e['transcript'])) self.hugvey.eventLogger.info("speaking: content {} \"{}\"".format(id(utterance), e['transcript']))
if not self.timer.hasMark('first_speech'):
self.timer.setMark('first_speech')
self.timer.setMark('last_speech') self.timer.setMark('last_speech')
if e['is_final']: if e['is_final']: