novel-doomsday-resurgence/final_index_update.py
2026-04-06 22:06:30 +08:00

152 lines
5.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
更新章节索引文件确保inkos知道最新章节
"""
import json
import os
from datetime import datetime
def update_chapter_index():
"""更新章节索引"""
print("更新章节索引文件...")
# 章节文件目录
chapters_dir = "/root/.openclaw/workspace/tomato-novel/tomato-novel/books/末日重生-开局囤货十亿物资/chapters"
# 获取所有章节文件
chapter_files = []
for f in os.listdir(chapters_dir):
if f.endswith('.md') and f[0].isdigit():
chapter_files.append(f)
chapter_files.sort()
print(f"找到 {len(chapter_files)} 个章节文件")
# 创建索引数据
index_data = []
for filename in chapter_files:
try:
# 从文件名提取信息
# 格式: 0136_危机升级.md
parts = filename.split('_')
if len(parts) >= 2 and parts[0].isdigit():
chapter_num = int(parts[0])
title = parts[1].replace('.md', '')
# 读取文件内容统计字数
file_path = os.path.join(chapters_dir, filename)
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
word_count = len(content)
# 创建索引条目
index_entry = {
"number": chapter_num,
"title": title,
"status": "ready-for-review",
"wordCount": word_count,
"createdAt": datetime.now().isoformat() + 'Z',
"updatedAt": datetime.now().isoformat() + 'Z',
"auditIssues": [],
"lengthWarnings": [],
"lengthTelemetry": {
"target": 3000,
"softMin": 2591,
"softMax": 3409,
"hardMin": 2182,
"hardMax": 3818,
"countingMode": "zh_chars",
"writerCount": word_count,
"postWriterNormalizeCount": word_count,
"postReviseCount": 0,
"finalCount": word_count,
"normalizeApplied": False,
"lengthWarning": False
},
"tokenUsage": {
"promptTokens": 0,
"completionTokens": 0,
"totalTokens": 0
}
}
index_data.append(index_entry)
print(f" 添加第{chapter_num}章: {title} ({word_count}字)")
except Exception as e:
print(f" 处理文件 {filename} 时出错: {e}")
# 按章节号排序
index_data.sort(key=lambda x: x['number'])
# 保存索引文件
index_path = os.path.join(chapters_dir, "index.json")
with open(index_path, 'w', encoding='utf-8') as f:
json.dump(index_data, f, ensure_ascii=False, indent=2)
print(f"\n✅ 索引文件已更新: {index_path}")
print(f" 总章节数: {len(index_data)}")
if index_data:
print(f" 章节范围: 第{index_data[0]['number']}章 - 第{index_data[-1]['number']}")
# 显示最近5章
print("\n最近5章:")
for entry in index_data[-5:]:
print(f"{entry['number']}章: {entry['title']}")
def create_simple_book_json():
"""创建简单的book.json文件"""
print("\n创建简单book.json...")
book_data = {
"id": "末日重生-开局囤货十亿物资",
"title": "末日重生:开局囤货十亿物资",
"platform": "tomato",
"genre": "urban",
"language": "zh",
"targetChapters": 200,
"currentChapter": 143,
"status": "active",
"createdAt": datetime.now().isoformat() + 'Z',
"updatedAt": datetime.now().isoformat() + 'Z',
"settings": {
"wordCountPerChapter": {
"target": 3000,
"min": 2500,
"max": 3500
},
"quality": {
"enforcement": "none"
}
}
}
book_path = "/root/.openclaw/workspace/tomato-novel/tomato-novel/books/末日重生-开局囤货十亿物资/book.json"
os.makedirs(os.path.dirname(book_path), exist_ok=True)
with open(book_path, 'w', encoding='utf-8') as f:
json.dump(book_data, f, ensure_ascii=False, indent=2)
print(f"✅ book.json 已创建: {book_path}")
def main():
"""主函数"""
print("=" * 60)
print("更新章节索引和book.json文件")
print("=" * 60)
try:
update_chapter_index()
create_simple_book_json()
print("\n" + "=" * 60)
print("✅ 更新完成!")
print("=" * 60)
print("\ninkos现在应该知道有143章内容可以继续创作第144章了。")
except Exception as e:
print(f"\n❌ 更新失败: {e}")
if __name__ == "__main__":
main()