From 3e72dde44d7399910b2ee88ea3656fb2c7e7ac86 Mon Sep 17 00:00:00 2001 From: wdjwxh Date: Thu, 11 Dec 2025 22:17:18 +0800 Subject: [PATCH] t6 --- .claude/settings.local.json | 4 +- CLAUDE.md | 0 sync.py | 119 ++++++++++++++++++++++++------------ 3 files changed, 82 insertions(+), 41 deletions(-) create mode 100644 CLAUDE.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 3c31ae0..2c98cd5 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -1,7 +1,9 @@ { "permissions": { "allow": [ - "Bash(python:*)" + "Bash(python:*)", + "Bash(tree:*)", + "Bash(dir:*)" ] } } diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..e69de29 diff --git a/sync.py b/sync.py index 1f1d344..07db0bb 100644 --- a/sync.py +++ b/sync.py @@ -1432,60 +1432,99 @@ def save_files(title, diff_html, diff_text, full_text, timestamp, note="", revid current_time_str = datetime.now().strftime("%Y%m%d_%H%M%S") CURRENT_OUTPUT_DIR = OUTPUT_DIR / current_time_str CURRENT_OUTPUT_DIR.mkdir(exist_ok=True) + # 创建子目录 + (CURRENT_OUTPUT_DIR / "new_pages").mkdir(exist_ok=True) + (CURRENT_OUTPUT_DIR / "changed_pages").mkdir(exist_ok=True) print(f"创建本次执行的输出目录: {CURRENT_OUTPUT_DIR}") safe_title = "".join(c if c.isalnum() or c in " -_." else "_" for c in title) time_str = timestamp[:19].replace("-", "").replace(":", "").replace("T", "_") base_filename = f"{safe_title}-{time_str}-{revid}" if revid else f"{safe_title}-{time_str}" - # 保存各种文件 - files_to_save = [] + # 判断是否为新页面 + is_new_page = diff_text.startswith("新创建页面") - # 1. 标准MediaWiki diff HTML - diff_file = CURRENT_OUTPUT_DIR / f"{base_filename}.diff.html" - if diff_html: - files_to_save.append((diff_file, diff_html)) + if is_new_page: + # 新页面:只保存完整内容到 new_pages 目录 + target_dir = CURRENT_OUTPUT_DIR / "new_pages" + print(f" 检测到新页面,只保存完整内容") - # 2. 文本格式的diff - text_diff_file = CURRENT_OUTPUT_DIR / f"{base_filename}.diff.txt" - if diff_text: - files_to_save.append((text_diff_file, diff_text)) + # 保存最新完整内容 + full_file = target_dir / f"{base_filename}.full.txt" + if full_text: + try: + with open(full_file, "w", encoding="utf-8") as f: + f.write(full_text) + print(f" → 已保存: {full_file.relative_to(OUTPUT_DIR)} (新页面完整内容)") + except Exception as e: + print(f" → 保存文件 {full_file} 时出错: {e}") - # 3. 最新完整内容 - full_file = CURRENT_OUTPUT_DIR / f"{base_filename}.full.txt" - if full_text: - files_to_save.append((full_file, full_text)) + else: + # 变更页面:保存主要文件到 changed_pages 目录,其他文件到 files 目录 + target_dir = CURRENT_OUTPUT_DIR / "changed_pages" + files_dir = target_dir / "files" + files_dir.mkdir(exist_ok=True) - # 4. 历史版本内容(如果存在) - if old_full_text: - old_full_file = CURRENT_OUTPUT_DIR / f"{base_filename}.old.txt" - files_to_save.append((old_full_file, old_full_text)) + # 1. 保存最新完整内容(主文件) + full_file = target_dir / f"{base_filename}.full.txt" + if full_text: + try: + with open(full_file, "w", encoding="utf-8") as f: + f.write(full_text) + print(f" → 已保存: {full_file.relative_to(OUTPUT_DIR)} (完整内容)") + except Exception as e: + print(f" → 保存文件 {full_file} 时出错: {e}") - # 5. 中文翻译内容(如果存在) - if cn_content: - cn_file = CURRENT_OUTPUT_DIR / f"{base_filename}.cn.txt" - files_to_save.append((cn_file, cn_content)) + # 2. 保存中文翻译内容(主文件) + if cn_content: + cn_file = target_dir / f"{base_filename}.cn.txt" + try: + with open(cn_file, "w", encoding="utf-8") as f: + f.write(cn_content) + print(f" → 已保存: {cn_file.relative_to(OUTPUT_DIR)} (中文翻译)") + except Exception as e: + print(f" → 保存文件 {cn_file} 时出错: {e}") - # 6. 双语对比HTML页面 - if cn_content: - # 为文本diff准备行 - en_new_lines = full_text.splitlines() if full_text else [] - en_old_lines = old_full_text.splitlines() if old_full_text else [] + # 3. 创建双语对比HTML页面(主文件) + en_new_lines = full_text.splitlines() if full_text else [] + en_old_lines = old_full_text.splitlines() if old_full_text else [] - # 创建双语对比页面 - comparison_html = create_diff_html(title, diff_text, en_old_lines, en_new_lines, cn_content) - comparison_file = CURRENT_OUTPUT_DIR / f"{base_filename}.comparison.html" - files_to_save.append((comparison_file, comparison_html)) - print(f" → 已保存: {comparison_file.relative_to(OUTPUT_DIR)} (双语对比页面)") + comparison_html = create_diff_html(title, diff_text, en_old_lines, en_new_lines, cn_content) + comparison_file = target_dir / f"{base_filename}.comparison.html" + try: + with open(comparison_file, "w", encoding="utf-8") as f: + f.write(comparison_html) + print(f" → 已保存: {comparison_file.relative_to(OUTPUT_DIR)} (双语对比页面)") + except Exception as e: + print(f" → 保存文件 {comparison_file} 时出错: {e}") - # 写入所有文件 - for file_path, content in files_to_save: - try: - with open(file_path, "w", encoding="utf-8") as f: - f.write(content) - print(f" → 已保存: {file_path.relative_to(OUTPUT_DIR)}") - except Exception as e: - print(f" → 保存文件 {file_path} 时出错: {e}") + # 保存参考文件到 files 目录 + if diff_html: + diff_file = files_dir / f"{base_filename}.diff.html" + try: + with open(diff_file, "w", encoding="utf-8") as f: + f.write(diff_html) + print(f" → 已保存: {diff_file.relative_to(OUTPUT_DIR)} (官方diff - 参考)") + except Exception as e: + print(f" → 保存文件 {diff_file} 时出错: {e}") + + if diff_text: + text_diff_file = files_dir / f"{base_filename}.diff.txt" + try: + with open(text_diff_file, "w", encoding="utf-8") as f: + f.write(diff_text) + print(f" → 已保存: {text_diff_file.relative_to(OUTPUT_DIR)} (文本diff - 参考)") + except Exception as e: + print(f" → 保存文件 {text_diff_file} 时出错: {e}") + + if old_full_text: + old_full_file = files_dir / f"{base_filename}.old.txt" + try: + with open(old_full_file, "w", encoding="utf-8") as f: + f.write(old_full_text) + print(f" → 已保存: {old_full_file.relative_to(OUTPUT_DIR)} (历史版本 - 参考)") + except Exception as e: + print(f" → 保存文件 {old_full_file} 时出错: {e}") def process_single_page(title, since_time, update_timestamp=False): """只处理单个页面"""