新增: DeepSeek 全部 33 篇官方论文(原文 PDF 走 Git LFS + 中文精读笔记与索引)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
"""Per-paper completion report.
|
||||
|
||||
Usage: python status_report.py <plan.json> <base_dir>
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
plan = json.load(open(sys.argv[1], encoding='utf-8'))
|
||||
base = sys.argv[2]
|
||||
SECS = ['一、', '二、', '三、', '四、', '五、', '六、']
|
||||
|
||||
rows = []
|
||||
incomplete = []
|
||||
for p in plan:
|
||||
pdf = os.path.join(base, p['pdf_path'])
|
||||
md = os.path.join(base, p['md_path'])
|
||||
pdf_ok = os.path.exists(pdf) and open(pdf, 'rb').read(4) == b'%PDF' and os.path.getsize(pdf) > 20000
|
||||
md_ok = os.path.exists(md)
|
||||
cjk = 0
|
||||
miss = []
|
||||
link_ok = False
|
||||
if md_ok:
|
||||
t = open(md, encoding='utf-8').read()
|
||||
cjk = len(re.findall(r'[\u4e00-\u9fff]', t))
|
||||
for s in SECS:
|
||||
if '## ' + s not in t:
|
||||
miss.append(s[0])
|
||||
m = re.search(r'\]\(\./([^)]+\.pdf)\)', t)
|
||||
if m:
|
||||
link_ok = os.path.exists(os.path.join(os.path.dirname(md), m.group(1)))
|
||||
if md_ok and not miss and link_ok and pdf_ok:
|
||||
pass
|
||||
else:
|
||||
incomplete.append((p['id'], p['stem'], pdf_ok, md_ok, miss, link_ok))
|
||||
rows.append((p['dir'], p['stem'], pdf_ok, md_ok, cjk, ''.join(miss) or '-', link_ok))
|
||||
|
||||
print('%-16s %-46s %-6s %-6s %-7s %-8s %s' % ('类别', '文件前缀', 'PDF', 'MD', '汉字', '缺章节', 'PDF链接'))
|
||||
print('-' * 120)
|
||||
for d, stem, po, mo, cjk, miss, lo in rows:
|
||||
print('%-16s %-46s %-6s %-6s %-7d %-8s %s' % (
|
||||
d, stem, 'OK' if po else 'MISSING', 'OK' if mo else 'MISSING',
|
||||
cjk, miss, 'OK' if lo else 'BROKEN'))
|
||||
print('-' * 120)
|
||||
print('总计 %d 篇;未完成 %d 篇' % (len(rows), len(incomplete)))
|
||||
for i in incomplete:
|
||||
print(' ! 未完成:', i)
|
||||
Reference in New Issue
Block a user