Attempted better flood control. It's also a configurable settings.
This commit is contained in:
@@ -69,6 +69,11 @@ auto_read_incoming=True
|
|||||||
# Speak individual numbers instead of whole string.
|
# Speak individual numbers instead of whole string.
|
||||||
read_numbers_as_digits = False
|
read_numbers_as_digits = False
|
||||||
|
|
||||||
|
# Flood protection: skip reading incoming text if it exceeds this many lines.
|
||||||
|
# This prevents system slowdown when large amounts of text appear at once.
|
||||||
|
# Set to 0 to disable flood protection. Default: 500
|
||||||
|
flood_protection_lines=500
|
||||||
|
|
||||||
# genericSpeechCommand is the command that is executed for talking
|
# genericSpeechCommand is the command that is executed for talking
|
||||||
# the following variables are replaced with values
|
# the following variables are replaced with values
|
||||||
# fenrirText = is the text that should be spoken
|
# fenrirText = is the text that should be spoken
|
||||||
|
|||||||
@@ -50,11 +50,24 @@ class command:
|
|||||||
return
|
return
|
||||||
|
|
||||||
delta_text = self.env["screen"]["new_delta"]
|
delta_text = self.env["screen"]["new_delta"]
|
||||||
|
|
||||||
# Skip if tab completion already handled this delta
|
# Skip if tab completion already handled this delta
|
||||||
if self._was_handled_by_tab_completion(delta_text):
|
if self._was_handled_by_tab_completion(delta_text):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Flood protection: skip if too many lines to prevent system slowdown
|
||||||
|
# Get threshold from settings, default to 500 lines
|
||||||
|
flood_threshold = self.env["runtime"]["SettingsManager"].get_setting_as_int(
|
||||||
|
"speech", "flood_protection_lines"
|
||||||
|
)
|
||||||
|
if flood_threshold <= 0:
|
||||||
|
flood_threshold = 500 # Fallback default
|
||||||
|
|
||||||
|
line_count = delta_text.count('\n') + 1
|
||||||
|
if line_count > flood_threshold:
|
||||||
|
# Too much text - skip to prevent system slowdown
|
||||||
|
return
|
||||||
|
|
||||||
# this must be a keyecho or something
|
# this must be a keyecho or something
|
||||||
# if len(self.env['screen']['new_delta'].strip(' \n\t')) <= 1:
|
# if len(self.env['screen']['new_delta'].strip(' \n\t')) <= 1:
|
||||||
x_move = abs(
|
x_move = abs(
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ settings_data = {
|
|||||||
"language": "",
|
"language": "",
|
||||||
"auto_read_incoming": True,
|
"auto_read_incoming": True,
|
||||||
"read_numbers_as_digits": False,
|
"read_numbers_as_digits": False,
|
||||||
|
"flood_protection_lines": 500,
|
||||||
"generic_speech_command": 'espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice "fenrirText"',
|
"generic_speech_command": 'espeak -a fenrirVolume -s fenrirRate -p fenrirPitch -v fenrirVoice "fenrirText"',
|
||||||
"fenrir_min_volume": 0,
|
"fenrir_min_volume": 0,
|
||||||
"fenrir_max_volume": 200,
|
"fenrir_max_volume": 200,
|
||||||
|
|||||||
Reference in New Issue
Block a user