fix: 修复错位BUG

This commit is contained in:
wdjwxh 2025-12-19 16:56:05 +08:00
parent 0e1294d833
commit 8959124a15
1 changed files with 6 additions and 28 deletions

32
sync.py
View File

@ -1392,7 +1392,7 @@ def create_diff_html(title, en_diff, en_old_lines, en_new_lines, cn_content=None
return html return html
def save_files(title, diff_html, diff_text, full_text, timestamp, note="", revid=None, cn_content=None, old_full_text=None): def save_files(title, diff_text, full_text, timestamp, note="", revid=None, cn_content=None, old_full_text=None):
global CURRENT_OUTPUT_DIR global CURRENT_OUTPUT_DIR
# 确保本次执行的输出目录已经创建 # 确保本次执行的输出目录已经创建
@ -1410,7 +1410,7 @@ def save_files(title, diff_html, diff_text, full_text, timestamp, note="", revid
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}"
# 判断是否为新页面 # 判断是否为新页面
is_new_page = diff_text.startswith("新创建页面") is_new_page = diff_text and diff_text.startswith("新创建页面")
if is_new_page: if is_new_page:
# 新页面:只保存完整内容到 new_pages 目录 # 新页面:只保存完整内容到 new_pages 目录
@ -1466,15 +1466,6 @@ def save_files(title, diff_html, diff_text, full_text, timestamp, note="", revid
except Exception as e: except Exception as e:
print(f" → 保存文件 {comparison_file} 时出错: {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: if diff_text:
text_diff_file = files_dir / f"{base_filename}.diff.txt" text_diff_file = files_dir / f"{base_filename}.diff.txt"
@ -1509,7 +1500,6 @@ def process_single_page(title, since_time, update_timestamp=False):
old_revid = get_old_revid(title, since_time) old_revid = get_old_revid(title, since_time)
# 初始化变量 # 初始化变量
diff_html = None
diff_text = None diff_text = None
old_content = None old_content = None
cn_content = None cn_content = None
@ -1524,9 +1514,11 @@ def process_single_page(title, since_time, update_timestamp=False):
print(f" 生成了文本diff ({len(diff_text)} 字符)") print(f" 生成了文本diff ({len(diff_text)} 字符)")
else: else:
print(f" 无法获取历史版本内容") print(f" 无法获取历史版本内容")
diff_text = "新创建页面"
else: else:
# 新页面 # 新页面
print(" 这是新创建的页面") print(" 这是新创建的页面")
diff_text = "新创建页面"
# 搜索对应的中文页面 # 搜索对应的中文页面
print(" 搜索中文翻译...") print(" 搜索中文翻译...")
@ -1541,22 +1533,8 @@ def process_single_page(title, since_time, update_timestamp=False):
else: else:
print(" 未找到对应的中文翻译页面") print(" 未找到对应的中文翻译页面")
# 获取官方diff可选
if old_revid:
diff_params = {
"action": "compare",
"fromrev": old_revid,
"torev": latest_revid,
"format": "json"
}
try:
diff_resp = SESSION_EN.get(WIKI_API_URL_EN, params=diff_params).json()
diff_html = diff_resp.get("compare", {}).get("*", "")
except Exception as e:
print(f" 获取官方HTML diff时出错: {e}")
# 保存所有文件 # 保存所有文件
save_files(title, diff_html, diff_text, latest_content, latest_ts, "", latest_revid, cn_content, old_content) save_files(title, diff_text, latest_content, latest_ts, "", latest_revid, cn_content, old_content)
if update_timestamp: if update_timestamp:
save_last_timestamp(latest_ts) save_last_timestamp(latest_ts)