This commit is contained in:
parent
00c45a870f
commit
3e72dde44d
|
|
@ -1,7 +1,9 @@
|
||||||
{
|
{
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"allow": [
|
"allow": [
|
||||||
"Bash(python:*)"
|
"Bash(python:*)",
|
||||||
|
"Bash(tree:*)",
|
||||||
|
"Bash(dir:*)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
119
sync.py
119
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_time_str = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
CURRENT_OUTPUT_DIR = OUTPUT_DIR / current_time_str
|
CURRENT_OUTPUT_DIR = OUTPUT_DIR / current_time_str
|
||||||
CURRENT_OUTPUT_DIR.mkdir(exist_ok=True)
|
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}")
|
print(f"创建本次执行的输出目录: {CURRENT_OUTPUT_DIR}")
|
||||||
|
|
||||||
safe_title = "".join(c if c.isalnum() or c in " -_." else "_" for c in title)
|
safe_title = "".join(c if c.isalnum() or c in " -_." else "_" for c in title)
|
||||||
time_str = timestamp[:19].replace("-", "").replace(":", "").replace("T", "_")
|
time_str = timestamp[:19].replace("-", "").replace(":", "").replace("T", "_")
|
||||||
base_filename = f"{safe_title}-{time_str}-{revid}" if revid else f"{safe_title}-{time_str}"
|
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
|
if is_new_page:
|
||||||
diff_file = CURRENT_OUTPUT_DIR / f"{base_filename}.diff.html"
|
# 新页面:只保存完整内容到 new_pages 目录
|
||||||
if diff_html:
|
target_dir = CURRENT_OUTPUT_DIR / "new_pages"
|
||||||
files_to_save.append((diff_file, diff_html))
|
print(f" 检测到新页面,只保存完整内容")
|
||||||
|
|
||||||
# 2. 文本格式的diff
|
# 保存最新完整内容
|
||||||
text_diff_file = CURRENT_OUTPUT_DIR / f"{base_filename}.diff.txt"
|
full_file = target_dir / f"{base_filename}.full.txt"
|
||||||
if diff_text:
|
if full_text:
|
||||||
files_to_save.append((text_diff_file, diff_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. 最新完整内容
|
else:
|
||||||
full_file = CURRENT_OUTPUT_DIR / f"{base_filename}.full.txt"
|
# 变更页面:保存主要文件到 changed_pages 目录,其他文件到 files 目录
|
||||||
if full_text:
|
target_dir = CURRENT_OUTPUT_DIR / "changed_pages"
|
||||||
files_to_save.append((full_file, full_text))
|
files_dir = target_dir / "files"
|
||||||
|
files_dir.mkdir(exist_ok=True)
|
||||||
|
|
||||||
# 4. 历史版本内容(如果存在)
|
# 1. 保存最新完整内容(主文件)
|
||||||
if old_full_text:
|
full_file = target_dir / f"{base_filename}.full.txt"
|
||||||
old_full_file = CURRENT_OUTPUT_DIR / f"{base_filename}.old.txt"
|
if full_text:
|
||||||
files_to_save.append((old_full_file, old_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. 中文翻译内容(如果存在)
|
# 2. 保存中文翻译内容(主文件)
|
||||||
if cn_content:
|
if cn_content:
|
||||||
cn_file = CURRENT_OUTPUT_DIR / f"{base_filename}.cn.txt"
|
cn_file = target_dir / f"{base_filename}.cn.txt"
|
||||||
files_to_save.append((cn_file, cn_content))
|
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页面
|
# 3. 创建双语对比HTML页面(主文件)
|
||||||
if cn_content:
|
en_new_lines = full_text.splitlines() if full_text else []
|
||||||
# 为文本diff准备行
|
en_old_lines = old_full_text.splitlines() if old_full_text else []
|
||||||
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_html = create_diff_html(title, diff_text, en_old_lines, en_new_lines, cn_content)
|
comparison_file = target_dir / f"{base_filename}.comparison.html"
|
||||||
comparison_file = CURRENT_OUTPUT_DIR / f"{base_filename}.comparison.html"
|
try:
|
||||||
files_to_save.append((comparison_file, comparison_html))
|
with open(comparison_file, "w", encoding="utf-8") as f:
|
||||||
print(f" → 已保存: {comparison_file.relative_to(OUTPUT_DIR)} (双语对比页面)")
|
f.write(comparison_html)
|
||||||
|
print(f" → 已保存: {comparison_file.relative_to(OUTPUT_DIR)} (双语对比页面)")
|
||||||
|
except Exception as e:
|
||||||
|
print(f" → 保存文件 {comparison_file} 时出错: {e}")
|
||||||
|
|
||||||
# 写入所有文件
|
# 保存参考文件到 files 目录
|
||||||
for file_path, content in files_to_save:
|
if diff_html:
|
||||||
try:
|
diff_file = files_dir / f"{base_filename}.diff.html"
|
||||||
with open(file_path, "w", encoding="utf-8") as f:
|
try:
|
||||||
f.write(content)
|
with open(diff_file, "w", encoding="utf-8") as f:
|
||||||
print(f" → 已保存: {file_path.relative_to(OUTPUT_DIR)}")
|
f.write(diff_html)
|
||||||
except Exception as e:
|
print(f" → 已保存: {diff_file.relative_to(OUTPUT_DIR)} (官方diff - 参考)")
|
||||||
print(f" → 保存文件 {file_path} 时出错: {e}")
|
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):
|
def process_single_page(title, since_time, update_timestamp=False):
|
||||||
"""只处理单个页面"""
|
"""只处理单个页面"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue