Condition for failure of Lyrebird (and MS)
This commit is contained in:
parent
9df1d77b4f
commit
a99c2dcfbf
4 changed files with 27 additions and 6 deletions
|
@ -148,9 +148,9 @@ class CentralCommand(object):
|
||||||
status['time_since_hugvey_spoke'] = '-'
|
status['time_since_hugvey_spoke'] = '-'
|
||||||
status['time_since_visitor_spoke'] = '-'
|
status['time_since_visitor_spoke'] = '-'
|
||||||
else:
|
else:
|
||||||
if not hv.story.lastMsgStartTime:
|
if not hasattr(hv.story, 'lastMsgStartTime') or not hv.story.lastMsgStartTime:
|
||||||
status['time_since_hugvey_spoke'] = '?'
|
status['time_since_hugvey_spoke'] = '?'
|
||||||
elif not hv.story.lastMsgFinishTime:
|
elif not hasattr(hv.story, 'lastMsgFinishTime') or not hv.story.lastMsgFinishTime:
|
||||||
status['time_since_hugvey_spoke'] = 'speaking'
|
status['time_since_hugvey_spoke'] = 'speaking'
|
||||||
else:
|
else:
|
||||||
status['time_since_hugvey_spoke'] = str(datetime.timedelta(seconds=int(hv.story.timer.getElapsed() - hv.story.lastMsgFinishTime)))
|
status['time_since_hugvey_spoke'] = str(datetime.timedelta(seconds=int(hv.story.timer.getElapsed() - hv.story.lastMsgFinishTime)))
|
||||||
|
|
|
@ -75,6 +75,7 @@ class Message(object):
|
||||||
self.color = None
|
self.color = None
|
||||||
self.lightChange = None
|
self.lightChange = None
|
||||||
self.didRepeat = False
|
self.didRepeat = False
|
||||||
|
self.fileError = False
|
||||||
|
|
||||||
# Used by diversions, autogenerated directions should link to next chapter mark instead of the given msgTo
|
# Used by diversions, autogenerated directions should link to next chapter mark instead of the given msgTo
|
||||||
self.generatedDirectionsJumpToChapter = False
|
self.generatedDirectionsJumpToChapter = False
|
||||||
|
@ -216,14 +217,17 @@ class Message(object):
|
||||||
await s.send_json(info)
|
await s.send_json(info)
|
||||||
filename = await s.recv_string()
|
filename = await s.recv_string()
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
|
# TODO: should this go trough the event Queue? risking a too long delay though
|
||||||
|
if filename == 'local/crash.wav' or len(filename) < 1:
|
||||||
|
self.logger.warning("Noting crash")
|
||||||
|
self.fileError = True
|
||||||
|
|
||||||
# print(threading.enumerate())
|
# print(threading.enumerate())
|
||||||
|
|
||||||
self.logger.debug(f"Fetched audio for {text}: {filename}")
|
self.logger.debug(f"Fetched audio for {text}: {filename}")
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Reply(object):
|
class Reply(object):
|
||||||
def __init__(self, message: Message):
|
def __init__(self, message: Message):
|
||||||
|
@ -334,6 +338,8 @@ class Condition(object):
|
||||||
condition.method = condition._hasVariable
|
condition.method = condition._hasVariable
|
||||||
if data['type'] == "diversion":
|
if data['type'] == "diversion":
|
||||||
condition.method = condition._hasDiverged
|
condition.method = condition._hasDiverged
|
||||||
|
if data['type'] == "audioError":
|
||||||
|
condition.method = condition._hasAudioError
|
||||||
if data['type'] == "messagePlayed":
|
if data['type'] == "messagePlayed":
|
||||||
condition.method = condition._hasPlayed
|
condition.method = condition._hasPlayed
|
||||||
if data['type'] == "variableEquals":
|
if data['type'] == "variableEquals":
|
||||||
|
@ -464,6 +470,14 @@ class Condition(object):
|
||||||
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
def _hasAudioError(self, story) -> bool:
|
||||||
|
if not story.currentMessage or not story.currentMessage.fileError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.logInfo = f"Has error loading audio file for {story.currentMessage.id}"
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def _hasPlayed(self, story) -> bool:
|
def _hasPlayed(self, story) -> bool:
|
||||||
if not story.lastMsgFinishTime:
|
if not story.lastMsgFinishTime:
|
||||||
return False
|
return False
|
||||||
|
@ -1324,6 +1338,10 @@ class Story(object):
|
||||||
self.logger.warn(f"Set variable that is not needed in the story: {name}")
|
self.logger.warn(f"Set variable that is not needed in the story: {name}")
|
||||||
else:
|
else:
|
||||||
self.logger.debug(f"Set variable {name} to {value}")
|
self.logger.debug(f"Set variable {name} to {value}")
|
||||||
|
|
||||||
|
if self.variableValues[name] == value:
|
||||||
|
self.logger.debug(f"Skip double setting of variable {name} to {value}")
|
||||||
|
return
|
||||||
|
|
||||||
self.variableValues[name] = value
|
self.variableValues[name] = value
|
||||||
if store:
|
if store:
|
||||||
|
|
|
@ -110,6 +110,7 @@ class LyrebirdVoiceFetcher(VoiceFetcher):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
logger.debug(f"Fetch Lyrebird voice file: POST {request.url} body: {request.body}")
|
logger.debug(f"Fetch Lyrebird voice file: POST {request.url} body: {request.body}")
|
||||||
|
# raise Exception("TEST FOR ERROR HANDLING")
|
||||||
response = await http_client.fetch(request)
|
response = await http_client.fetch(request)
|
||||||
logger.debug(f"Got Lyrebird voice file in {response.request_time:.3}s")
|
logger.debug(f"Got Lyrebird voice file in {response.request_time:.3}s")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -1696,7 +1696,9 @@ class Graph {
|
||||||
'messagePlayed': {
|
'messagePlayed': {
|
||||||
'msgId': { 'value': '', 'label':'Message ID', 'placeholder': "(eg. en-njsm9b0ni)" },
|
'msgId': { 'value': '', 'label':'Message ID', 'placeholder': "(eg. en-njsm9b0ni)" },
|
||||||
'inverseMatch': { "label": "Match if not played", 'value': '', 'title': "Match if the message has _not_ been played.", 'type':'checkbox' },
|
'inverseMatch': { "label": "Match if not played", 'value': '', 'title': "Match if the message has _not_ been played.", 'type':'checkbox' },
|
||||||
}
|
},
|
||||||
|
// audioError has no parameters. Just checks if there was an error fetching the audio file
|
||||||
|
'audioError': {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue