Przeglądaj źródła

fix playlist pause

Tuan Nguyen 11 miesięcy temu
rodzic
commit
f92a1385a9
1 zmienionych plików z 29 dodań i 7 usunięć
  1. 29 7
      modules/core/pattern_manager.py

+ 29 - 7
modules/core/pattern_manager.py

@@ -183,6 +183,24 @@ def get_clear_pattern_file(clear_pattern_mode, path=None):
             return False
             return False
         return table_patterns[clear_pattern_mode]
         return table_patterns[clear_pattern_mode]
 
 
+def is_clear_pattern(file_path):
+    """Check if a file path is a clear pattern file."""
+    # Get all possible clear pattern files for all table types
+    clear_patterns = []
+    for table_type in ['dune_weaver', 'dune_weaver_mini', 'dune_weaver_pro']:
+        clear_patterns.extend([
+            f'./patterns/clear_from_out{("_" + table_type.split("_")[-1]) if table_type != "dune_weaver" else ""}.thr',
+            f'./patterns/clear_from_in{("_" + table_type.split("_")[-1]) if table_type != "dune_weaver" else ""}.thr',
+            f'./patterns/clear_sideway{("_" + table_type.split("_")[-1]) if table_type != "dune_weaver" else ""}.thr'
+        ])
+    
+    # Normalize paths for comparison
+    normalized_path = os.path.normpath(file_path)
+    normalized_clear_patterns = [os.path.normpath(p) for p in clear_patterns]
+    
+    # Check if the file path matches any clear pattern path
+    return normalized_path in normalized_clear_patterns
+
 async def run_theta_rho_file(file_path, is_playlist=False):
 async def run_theta_rho_file(file_path, is_playlist=False):
     """Run a theta-rho file by sending data in optimized batches with tqdm ETA tracking."""
     """Run a theta-rho file by sending data in optimized batches with tqdm ETA tracking."""
     if pattern_lock.locked():
     if pattern_lock.locked():
@@ -352,13 +370,17 @@ async def run_theta_rho_files(file_paths, pause_time=0, clear_pattern=None, run_
 
 
                 # Handle pause between patterns
                 # Handle pause between patterns
                 if idx < len(pattern_sequence) - 1 and not state.stop_requested and pause_time > 0 and not state.skip_requested:
                 if idx < len(pattern_sequence) - 1 and not state.stop_requested and pause_time > 0 and not state.skip_requested:
-                    logger.info(f"Pausing for {pause_time} seconds")
-                    pause_start = time.time()
-                    while time.time() - pause_start < pause_time:
-                        if state.skip_requested:
-                            logger.info("Pause interrupted by stop/skip request")
-                            break
-                        await asyncio.sleep(1)  # Check every 100ms
+                    # Check if current pattern is a clear pattern
+                    if is_clear_pattern(file_path):
+                        logger.info("Skipping pause after clear pattern")
+                    else:
+                        logger.info(f"Pausing for {pause_time} seconds")
+                        pause_start = time.time()
+                        while time.time() - pause_start < pause_time:
+                            if state.skip_requested:
+                                logger.info("Pause interrupted by stop/skip request")
+                                break
+                            await asyncio.sleep(1)  # Check every 100ms
                     
                     
                 state.skip_requested = False
                 state.skip_requested = False