big update
This commit is contained in:
+81
-17
@@ -668,7 +668,13 @@ class Subtitle_translation:
|
||||
sprint(self.script_name,"green","finish create_subtitle")
|
||||
|
||||
def main_loop(self):
|
||||
time.sleep(25)
|
||||
# Attente de démarrage interruptible (si stop() est appelé pendant l'attente)
|
||||
for _ in range(250): # 25s en pas de 0.1s
|
||||
if not self.is_running:
|
||||
return
|
||||
time.sleep(0.1)
|
||||
if not self.is_running:
|
||||
return
|
||||
sprint(self.script_name,"green", "start main boucle_traitement record")
|
||||
# debug_print("v", "main_loop record Start", self.type_debug,self.script_name)
|
||||
|
||||
@@ -876,7 +882,13 @@ class IA_generator:
|
||||
|
||||
|
||||
def main_loop_ia(self):
|
||||
time.sleep(20)
|
||||
# Attente de démarrage interruptible
|
||||
for _ in range(200): # 20s en pas de 0.1s
|
||||
if not self.ia_running:
|
||||
return
|
||||
time.sleep(0.1)
|
||||
if not self.ia_running:
|
||||
return
|
||||
# sprint(self.script_name,"blue", "main_loop_ia imagine_response start")
|
||||
# debug_print("v", "main_loop_ia imagine_response start", self.type_debug,self.script_name)
|
||||
try:
|
||||
@@ -973,36 +985,67 @@ class messageTwitch:
|
||||
self.userjson = json.load(file)
|
||||
self.totaluser = len(self.userjson)
|
||||
|
||||
self.tw_acc_pseudo = get_value_json_list(self.indexuser, "tw_acc_pseudo", self.userjson)
|
||||
self.tw_acc_token = get_value_json_list(self.indexuser, "tw_acc_token", self.userjson)
|
||||
self.charactere = get_value_json_list(self.indexuser, "charactere", self.userjson)
|
||||
# Se positionner sur le 1er utilisateur activé
|
||||
self.indexuser = self._first_enabled_index()
|
||||
self._apply_user(self.indexuser)
|
||||
|
||||
self.ram_msgnow = ""
|
||||
self.generation_text = ""
|
||||
self.last_respond_word = ""
|
||||
|
||||
|
||||
def set_user(self,index_user):
|
||||
def _is_enabled(self, index_user: int) -> bool:
|
||||
try:
|
||||
u = self.userjson[index_user]
|
||||
if isinstance(u, dict):
|
||||
return bool(u.get("enabled", True))
|
||||
except Exception:
|
||||
pass
|
||||
return True
|
||||
|
||||
def _bypass_antiloop(self, index_user: int) -> bool:
|
||||
try:
|
||||
u = self.userjson[index_user]
|
||||
if isinstance(u, dict):
|
||||
return bool(u.get("interaction_bypass_antiloop", False))
|
||||
except Exception:
|
||||
pass
|
||||
return False
|
||||
|
||||
def _first_enabled_index(self) -> int:
|
||||
for i in range(self.totaluser):
|
||||
if self._is_enabled(i):
|
||||
return i
|
||||
return 0
|
||||
|
||||
def _next_enabled_index(self, start_index: int) -> int:
|
||||
if self.totaluser <= 0:
|
||||
return 0
|
||||
for step in range(1, self.totaluser + 1):
|
||||
i = (start_index + step) % self.totaluser
|
||||
if self._is_enabled(i):
|
||||
return i
|
||||
return start_index
|
||||
|
||||
def _apply_user(self, index_user: int):
|
||||
self.indexuser = index_user
|
||||
self.tw_acc_pseudo = get_value_json_list(self.indexuser, "tw_acc_pseudo", self.userjson)
|
||||
self.tw_acc_token = get_value_json_list(self.indexuser, "tw_acc_token", self.userjson)
|
||||
self.charactere = get_value_json_list(self.indexuser, "charactere", self.userjson)
|
||||
|
||||
def set_user(self, index_user):
|
||||
# Si l'utilisateur demandé est désactivé, on l'autorise seulement si bypass anti-boucle est actif
|
||||
if not self._is_enabled(index_user) and not self._bypass_antiloop(index_user):
|
||||
index_user = self._next_enabled_index(index_user)
|
||||
self._apply_user(index_user)
|
||||
|
||||
def stop(self):
|
||||
self.message_running = False
|
||||
|
||||
def change_user(self):
|
||||
# commented for pausing
|
||||
debug_print("v", "Changement User Twitch", self.type_debug, self.script_name)
|
||||
if (self.totaluser != 1): # si la liste ne fait pas que 1 de taille
|
||||
if(self.totaluser-1 > self.indexuser): # si la taille de liste est plus grande que lindex
|
||||
self.indexuser = self.indexuser + 1
|
||||
else :
|
||||
self.indexuser = 0
|
||||
|
||||
self.tw_acc_pseudo = get_value_json_list(self.indexuser, "tw_acc_pseudo", self.userjson)
|
||||
self.tw_acc_token = get_value_json_list(self.indexuser, "tw_acc_token", self.userjson)
|
||||
self.charactere = get_value_json_list(self.indexuser, "charactere", self.userjson)
|
||||
self._apply_user(self._next_enabled_index(self.indexuser))
|
||||
|
||||
|
||||
def conversation(self):
|
||||
@@ -1041,7 +1084,22 @@ class messageTwitch:
|
||||
# Si web_interface n'est pas disponible, on continue normalement
|
||||
pass
|
||||
|
||||
command = '-pseudo "'+self.tw_acc_pseudo+'" -token "'+self.tw_acc_token+'" -twitchname "'+self.channel_name+'" -message " '+self.charactere+' '+Message_text+'"'
|
||||
# Limite globale de taille des messages Twitch
|
||||
max_chars = 100
|
||||
try:
|
||||
cfg_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "config", "config.json")
|
||||
with open(cfg_path, "r", encoding="utf-8") as f:
|
||||
cfg = json.load(f) or {}
|
||||
max_chars = int(cfg.get("twitch_message_max_chars", 100))
|
||||
except Exception:
|
||||
max_chars = 100
|
||||
|
||||
payload = f"{self.charactere} {Message_text}".strip()
|
||||
if max_chars > 0 and len(payload) > max_chars:
|
||||
cut = max(0, max_chars - 3)
|
||||
payload = payload[:cut].rstrip() + "..."
|
||||
|
||||
command = '-pseudo "'+self.tw_acc_pseudo+'" -token "'+self.tw_acc_token+'" -twitchname "'+self.channel_name+'" -message " '+payload+'"'
|
||||
|
||||
# Utiliser le Python de l'environnement virtuel
|
||||
python_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'env', 'bin', 'python')
|
||||
@@ -1113,7 +1171,13 @@ class messageTwitch:
|
||||
|
||||
|
||||
def start_main_loop_respond(self):
|
||||
time.sleep(40) #wait starting script
|
||||
# Attente de démarrage interruptible (si stop() est appelé pendant l'attente)
|
||||
for _ in range(400): # 40s en pas de 0.1s
|
||||
if not self.message_running:
|
||||
return
|
||||
time.sleep(0.1)
|
||||
if not self.message_running:
|
||||
return
|
||||
sprint(self.script_name,"blue", "main_loop_respond start")
|
||||
try:
|
||||
while self.message_running:
|
||||
|
||||
Reference in New Issue
Block a user