Files
skills-lottery-picker/final_check.py
T
2026-06-19 06:38:31 +00:00

86 lines
2.8 KiB
Python

import os, re
bases = {
"A-内卷": "/app/working/workspaces/default/novels/r2-xi-tong-nei-juan",
"B-替身": "/app/working/workspaces/default/novels/r2-quan-ji-di-ti-shen",
"C-考研": "/app/working/workspaces/default/novels/r2-quan-ban-kao-yan",
"D-修脚": "/app/working/workspaces/default/novels/r2-ai-xiu-jiao",
}
def get_num(f):
m = re.search(r"第(\\d+)章", f)
return int(m.group(1)) if m else 99
print("=" * 70)
print("第二轮4部短故事 -- 最终质量验证")
print("=" * 70)
for name, base in bases.items():
files = sorted(
[f for f in os.listdir(base) if f.endswith(".md") and f != "README.md"],
key=get_num
)
all_text = "".join(open(os.path.join(base, f)).read() for f in files)
sizes = [len(open(os.path.join(base, f)).read().encode("utf-8")) for f in files]
hanzi = len(re.findall(r"[\\u4e00-\\u9fff]", all_text))
# AI味
r = len(re.findall(r"燃点|【燃|(燃", all_text))
w = len(re.findall(r"第[一二三四五六七八九十百]+章.*完", all_text))
s = len(re.findall(r"深吸一口气|深呼一口气", all_text))
wo = len(re.findall(r"握紧|攥紧|捏紧", all_text))
d = len(re.findall(r"^\\s*——+\\s*$", all_text, re.MULTILINE))
m = len(re.findall(r"不对.*系统|这不是.*小说|作者注", all_text))
q = len(re.findall(r"(全书完)|(全文完)", all_text))
print()
print("-" * 60)
print(name)
print("-" * 60)
avg = sum(sizes) // 15 if len(sizes) == 15 else 0
print(f" 汉字:~{hanzi} | 均:{avg}b | 最短:{min(sizes)}b | 最长:{max(sizes)}b")
print(f" 15章完整: {'OK' if len(files)==15 else 'ISSUE'}")
flags = []
if r: flags.append(f"燃点({r})")
if w: flags.append(f"章末标({w})")
if s >= 3: flags.append(f"深吸气({s})")
if wo >= 5: flags.append(f"握紧({wo})")
if d: flags.append(f"——行({d})")
if m: flags.append(f"meta自嘲({m})")
if q: flags.append(f"全书完({q})")
if flags:
print(f" AI味残留: ⚠️ {' | '.join(flags)}")
else:
print(f" AI味残留: ✅ 零残留")
if min(sizes) < 1200:
print(f" 章节完整度: ⚠️ 最短仅{min(sizes)}b")
else:
print(f" 章节完整度: ✅ 全部>=1200b")
score = 100
score -= r * 15
score -= w * 15
if s >= 3: score -= 10
if wo >= 5: score -= 10
score -= d * 5
score -= m * 10
score -= q * 15
if min(sizes) < 1200: score -= 5
print(f" 最终评分: {max(score, 0)}/100")
if score >= 90:
print(" 评级: S -- 可直接投番茄")
elif score >= 75:
print(" 评级: A -- 微调后可投")
elif score >= 60:
print(" 评级: B -- 需要修改")
else:
print(" 评级: C -- 不建议投")
print()
print("=" * 70)
print("验证完成")
print("=" * 70)