Browse Source

修改bug

liuq 5 tháng trước cách đây
mục cha
commit
1575b1a24b
3 tập tin đã thay đổi với 24 bổ sung20 xóa
  1. 5 2
      app_test.py
  2. 14 13
      application/kodi_alive_thread.py
  3. 5 5
      hardware/kodi_module.py

+ 5 - 2
app_test.py

@@ -68,8 +68,11 @@ def revoke_individual_state():
 
 def check_all_kodi_clients_online():
     kodi_client_manager = KodiClientManager()
-    client_index = kodi_client_manager.check_all_kodi_clients_online()
-    logger.info(f"所有kodi客户端是否在线: {client_index}")
+    offline_indices = kodi_client_manager.check_all_kodi_clients_online()
+    if offline_indices:
+        logger.info(f"不在线的kodi客户端索引: {offline_indices}")
+    else:
+        logger.info("所有kodi客户端都在线")
 
 if __name__ == "__main__":
     check_all_kodi_clients_online()

+ 14 - 13
application/kodi_alive_thread.py

@@ -60,22 +60,23 @@ class KodiAliveThreadSingleton:
             while self.is_running and not self._should_stop:
                 try:
                     # 检查所有Kodi客户端是否在线
-                    offline_client_index = self.manager.check_all_kodi_clients_online()
+                    offline_client_indices = self.manager.check_all_kodi_clients_online()
                     
-                    if offline_client_index >= 0:
+                    if offline_client_indices:
                         # 检测到不在线的客户端,启动对应的Kodi应用
-                        logger.warning(f"检测到Kodi客户端 {offline_client_index} 不在线,尝试启动Kodi应用")
+                        logger.warning(f"检测到 {len(offline_client_indices)} 个Kodi客户端不在线,索引: {offline_client_indices},尝试启动Kodi应用")
                         
-                        try:
-                            # 根据client_index获取对应的客户端并启动
-                            if offline_client_index < len(self.manager.kodi_clients):
-                                client = self.manager.kodi_clients[offline_client_index]
-                                result = client.start_kodi()
-                                logger.info(f"已尝试启动客户端 {offline_client_index} 的Kodi应用,响应: {result}")
-                            else:
-                                logger.error(f"客户端索引 {offline_client_index} 超出范围,客户端总数: {len(self.manager.kodi_clients)}")
-                        except Exception as e:
-                            logger.error(f"启动客户端 {offline_client_index} 的Kodi应用时发生异常: {e}")
+                        for offline_client_index in offline_client_indices:
+                            try:
+                                # 根据client_index获取对应的客户端并启动
+                                if offline_client_index < len(self.manager.kodi_clients):
+                                    client = self.manager.kodi_clients[offline_client_index]
+                                    result = client.start_kodi()
+                                    logger.info(f"已尝试启动客户端 {offline_client_index} 的Kodi应用,响应: {result}")
+                                else:
+                                    logger.error(f"客户端索引 {offline_client_index} 超出范围,客户端总数: {len(self.manager.kodi_clients)}")
+                            except Exception as e:
+                                logger.error(f"启动客户端 {offline_client_index} 的Kodi应用时发生异常: {e}")
                     else:
                         # 所有客户端都在线
                         logger.debug("所有Kodi客户端在线")

+ 5 - 5
hardware/kodi_module.py

@@ -446,13 +446,13 @@ class KodiClientManager():
         for client in self.kodi_clients:
             client.start_kodi()
 
-    # 检查所有kodi客户端是否在线,如果有不在线返回不在线的client_index
+    # 检查所有kodi客户端是否在线,返回所有不在线的client_index集合
     def check_all_kodi_clients_online(self):
-        """检查所有kodi客户端是否在线"""
+        """检查所有kodi客户端是否在线,返回所有不在线的客户端索引集合"""
+        offline_indices = set()
         client_index = 0
         for client in self.kodi_clients:
-            
             if not client.kodi_heartbeat_check():
-                return client_index
+                offline_indices.add(client_index)
             client_index += 1
-        return -1
+        return offline_indices