This commit is contained in:
parent
00c45a870f
commit
3e72dde44d
|
|
@ -1,7 +1,9 @@
|
|||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(python:*)"
|
||||
"Bash(python:*)",
|
||||
"Bash(tree:*)",
|
||||
"Bash(dir:*)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
109
sync.py
109
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))
|
||||
|
||||
# 3. 最新完整内容
|
||||
full_file = CURRENT_OUTPUT_DIR / f"{base_filename}.full.txt"
|
||||
# 保存最新完整内容
|
||||
full_file = target_dir / f"{base_filename}.full.txt"
|
||||
if full_text:
|
||||
files_to_save.append((full_file, 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}")
|
||||
|
||||
# 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))
|
||||
else:
|
||||
# 变更页面:保存主要文件到 changed_pages 目录,其他文件到 files 目录
|
||||
target_dir = CURRENT_OUTPUT_DIR / "changed_pages"
|
||||
files_dir = target_dir / "files"
|
||||
files_dir.mkdir(exist_ok=True)
|
||||
|
||||
# 5. 中文翻译内容(如果存在)
|
||||
# 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}")
|
||||
|
||||
# 2. 保存中文翻译内容(主文件)
|
||||
if cn_content:
|
||||
cn_file = CURRENT_OUTPUT_DIR / f"{base_filename}.cn.txt"
|
||||
files_to_save.append((cn_file, 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准备行
|
||||
# 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)} (双语对比页面)")
|
||||
|
||||
# 写入所有文件
|
||||
for file_path, content in files_to_save:
|
||||
comparison_file = target_dir / f"{base_filename}.comparison.html"
|
||||
try:
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
print(f" → 已保存: {file_path.relative_to(OUTPUT_DIR)}")
|
||||
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" → 保存文件 {file_path} 时出错: {e}")
|
||||
print(f" → 保存文件 {comparison_file} 时出错: {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):
|
||||
"""只处理单个页面"""
|
||||
|
|
|
|||
Loading…
Reference in New Issue