#!/usr/bin/env python3 """ 从正文中移除爽点分析内容 将爽点分析提取到单独的注释部分 """ import os import re CHAPTERS_DIR = "/root/.openclaw/workspace/projects/末日重生_囤货/chapters" def remove_shuangdian_from_content(content): """ 从正文中移除爽点分析内容 """ # 1. 移除正文中的爽点分析句子 patterns_to_remove = [ r'展现重生者的先知优势[,。]?', r'利用未来信息获取利益[,。]?', r'展现主角的[^,。]+[,。]?', r'体现[^,。]+的[^,。]+[,。]?', r'突出[^,。]+的[^,。]+[,。]?', ] for pattern in patterns_to_remove: content = re.sub(pattern, '', content) # 2. 移除正文中的AI分析标记 ai_patterns = [ r'【[^】]+】', # 移除【爽点分析】等标记 r'\[[^\]]+\]', # 移除[分析]等标记 r'「[^」]+」', # 移除「分析」等标记 ] for pattern in ai_patterns: # 但保留章节标题中的【爽点X:XXX】 lines = content.split('\n') cleaned_lines = [] for line in lines: if line.startswith('# 第'): # 保留章节标题 cleaned_lines.append(line) else: # 移除正文中的分析标记 cleaned_line = re.sub(pattern, '', line) cleaned_lines.append(cleaned_line) content = '\n'.join(cleaned_lines) # 3. 提取爽点分析部分(如果存在) shuangdian_sections = [] main_content_lines = [] lines = content.split('\n') in_shuangdian_section = False current_shuangdian = [] for line in lines: # 检测爽点部分开始 if re.search(r'【爽点[一二三四五六七八九十]?[::]', line): in_shuangdian_section = True current_shuangdian.append(line) elif in_shuangdian_section: if line.strip() and not line.startswith('#') and not re.search(r'【爽点[一二三四五六七八九十]?[::]', line): current_shuangdian.append(line) else: # 爽点部分结束 if current_shuangdian: shuangdian_sections.append('\n'.join(current_shuangdian)) current_shuangdian = [] in_shuangdian_section = False if line.strip(): main_content_lines.append(line) else: main_content_lines.append(line) # 处理最后一个爽点部分 if current_shuangdian: shuangdian_sections.append('\n'.join(current_shuangdian)) # 4. 重新组合内容 result = '\n'.join(main_content_lines) # 5. 清理重复的爽点标题 # 移除正文中重复的爽点标题部分 result_lines = result.split('\n') cleaned_result_lines = [] i = 0 while i < len(result_lines): line = result_lines[i] # 检查是否是重复的爽点内容 if '谈判桌上,陈末掌握着对手的所有底牌' in line: # 跳过这几行 i += 3 # 跳过这一行和后面的两行 continue cleaned_result_lines.append(line) i += 1 result = '\n'.join(cleaned_result_lines) # 6. 清理多余的空白行 result = re.sub(r'\n{3,}', '\n\n', result) # 7. 如果有爽点分析,添加到末尾作为注释 if shuangdian_sections: result += '\n\n' return result.strip() def main(): print("从正文中移除爽点分析内容...") chapter_files = [f for f in os.listdir(CHAPTERS_DIR) if f.endswith('.md')] fixed_count = 0 for filename in sorted(chapter_files): filepath = os.path.join(CHAPTERS_DIR, filename) print(f"处理: {filename}") with open(filepath, 'r', encoding='utf-8') as f: content = f.read() # 检查是否需要修复 needs_fix = False if '展现重生者的先知优势' in content: needs_fix = True if re.search(r'【爽点[一二三四五六七八九十]?[::]', content): needs_fix = True if '谈判桌上,陈末掌握着对手的所有底牌' in content: needs_fix = True if not needs_fix: print(f" ✓ 无需修复") continue # 创建备份 backup_path = filepath + '.shuangdian.bak' with open(backup_path, 'w', encoding='utf-8') as f: f.write(content) # 修复内容 fixed_content = remove_shuangdian_from_content(content) # 检查是否有变化 if content != fixed_content: with open(filepath, 'w', encoding='utf-8') as f: f.write(fixed_content) print(f" ✓ 已移除爽点分析内容") fixed_count += 1 else: print(f" ✓ 无需修复") print(f"\n修复完成!共处理了 {len(chapter_files)} 个文件,修复了 {fixed_count} 个文件的爽点分析问题。") if __name__ == '__main__': main()