make_rootlist.py: секционный подзаголовок v2 — 2 строки с явными лейблами: 'N книг (все NEW / X NEW + Y cross-ref)' + 'RU-издание: ✅.. найдено · 🔶.. частично · ❌.. нет — EN-оригинал скачан: a/b — RU-перевод скачан: c/d — файлов: N (EN/RU/other)'. Xref-детект по карточке -xref.md (раньше не работал — все секции показывались 'all NEW' в метриках). RU-перевод скачан = NEW-items с ≥1 RU-файлом из найденных (✅+🔶); EN = NEW-items с ≥1 EN-файлом из всех NEW.
This commit is contained in:
parent
2432fa1180
commit
a6886652dd
2 changed files with 47 additions and 18 deletions
|
|
@ -39,7 +39,7 @@ def parse_index(sec):
|
|||
m = re.match(r'^\|\s*(\d{2})\s*\|\s*([^|]*)\|\s*([^|]*)\s*\|\s*([^|]*)\s*\|\s*([^|]+?)\s*\|\s*([^|]+)\|', line)
|
||||
if m:
|
||||
num, grp, title, author, status, card = m.groups()
|
||||
is_xref = status.strip().startswith("xref")
|
||||
is_xref = status.strip().startswith("xref") or card.strip().endswith("-xref.md")
|
||||
em = re.search(r'[✅🔶❌⬜]', status)
|
||||
items[num] = dict(title=title.strip(), author=author.strip(),
|
||||
status=(em.group(0) if em else status.strip()),
|
||||
|
|
@ -206,15 +206,32 @@ def main():
|
|||
mf = manifs[sec]
|
||||
ddir = dldir(sec)
|
||||
n = int(sec[:2])
|
||||
dfiles_n = len([f for f in os.listdir(os.path.join(BASE, "downloads", ddir)) if f != "MANIFEST.md"])
|
||||
dfiles = [f for f in os.listdir(os.path.join(BASE, "downloads", ddir)) if f != "MANIFEST.md"]
|
||||
dfiles_n = len(dfiles)
|
||||
f_en = sum(1 for f in dfiles if "-en-" in f)
|
||||
f_ru = sum(1 for f in dfiles if "-ru-" in f)
|
||||
f_other = dfiles_n - f_en - f_ru
|
||||
stat = {e: 0 for e in "✅🔶❌"}
|
||||
for it in items.values():
|
||||
if it.get("is_xref"):
|
||||
continue # xref items are counted in their canonical section
|
||||
new_items = [it for it in items.values() if not it.get("is_xref")]
|
||||
for it in new_items:
|
||||
stat[it["status"]] = stat.get(it["status"], 0) + 1
|
||||
en_dl = ru_dl = 0
|
||||
for num, it in items.items():
|
||||
if it.get("is_xref"):
|
||||
continue
|
||||
fns = [f[0] for f in mf.get(num, {"files": []}).get("files", [])]
|
||||
if any("-en-" in f for f in fns): en_dl += 1
|
||||
if any("-ru-" in f for f in fns): ru_dl += 1
|
||||
xref_n = len(items) - len(new_items)
|
||||
comp = " (все NEW)" if xref_n == 0 else f": {len(new_items)} NEW + {xref_n} cross-ref"
|
||||
ru_found = stat["✅"] + stat["🔶"]
|
||||
ru_dl_s = f"{ru_dl} из {ru_found}" if ru_found else "—"
|
||||
out.append(f"## {n}. {name}")
|
||||
out.append("")
|
||||
out.append(f"_{len(items)} items — ✅ {stat.get('✅',0)} / 🔶 {stat.get('🔶',0)} / ❌ {stat.get('❌',0)} · файлов в секции: {dfiles_n}_")
|
||||
out.append(f"_{len(items)} книг{comp}_")
|
||||
out.append(f"_RU-издание: ✅ {stat['✅']} найдено · 🔶 {stat['🔶']} частично · ❌ {stat['❌']} нет — "
|
||||
f"EN-оригинал скачан: {en_dl} из {len(new_items)} — RU-перевод скачан: {ru_dl_s} — "
|
||||
f"файлов: {dfiles_n} (EN {f_en} / RU {f_ru} / other {f_other})_")
|
||||
out.append("")
|
||||
out.append("| # | Book | Author | RU edition | Files |")
|
||||
out.append("|---|------|--------|------------|-------|")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue