import threading from datetime import datetime from pathlib import Path from auto_media_publisher.modifiers.rewriter.docx_rewriter_gemini import GeminiDocxRewriter # 根据你的路径修改 import random import time class DocxRewriteWorkerThread(threading.Thread): def __init__(self, input_dir, output_dir, interval_minutes=10, rewrite_style="random"): super().__init__() self.input_dir = Path(input_dir) self.output_dir = Path(output_dir) self.interval = interval_minutes * 60 # 转换成秒 self.rewriter = GeminiDocxRewriter(rewrite_style=rewrite_style) self.stop_event = threading.Event() def stop(self): self.stop_event.set() def run(self): while not self.stop_event.is_set(): print(f"[DocxRewriteThread] Scanning for .docx files at {datetime.now().isoformat()}") for docx_path in self.input_dir.rglob("*.docx"): try: rel_path = docx_path.relative_to(self.input_dir) timestamp_prefix = datetime.now().strftime("%Y%m%d%H%M%S") new_filename = f"{timestamp_prefix}_{docx_path.name}" output_path = self.output_dir / rel_path.parent / new_filename output_path.parent.mkdir(parents=True, exist_ok=True) print(f"[DocxRewriteThread] Rewriting: {docx_path}") self.rewriter.rewrite(str(docx_path), str(output_path)) sleep_duration = random.uniform(10, 15) # 秒 print(f"[DocxRewriteThread] Sleeping for {sleep_duration:.1f}s to avoid rate limit.") time.sleep(sleep_duration) except Exception as e: print(f"[DocxRewriteThread] Failed to process {docx_path}: {e}") print(f"[DocxRewriteThread] Waiting for {self.interval // 60} minutes...") self.stop_event.wait(self.interval)