diff --git a/READING-LIST.md b/READING-LIST.md index b28f37b..4d5f294 100644 --- a/READING-LIST.md +++ b/READING-LIST.md @@ -8,7 +8,8 @@ ## 1. Fundamentals -_55 items — ✅ 38 / 🔶 2 / ❌ 15 · файлов в секции: 118_ +_55 книг (все NEW)_ +_RU-издание: ✅ 38 найдено · 🔶 2 частично · ❌ 15 нет — EN-оригинал скачан: 45 из 55 — RU-перевод скачан: 26 из 40 — файлов: 118 (EN 67 / RU 42 / other 9)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -70,7 +71,8 @@ _55 items — ✅ 38 / 🔶 2 / ❌ 15 · файлов в секции: 118_ ## 2. Dreams -_57 items — ✅ 23 / 🔶 5 / ❌ 29 · файлов в секции: 60_ +_57 книг (все NEW)_ +_RU-издание: ✅ 23 найдено · 🔶 5 частично · ❌ 29 нет — EN-оригинал скачан: 38 из 57 — RU-перевод скачан: 9 из 28 — файлов: 60 (EN 42 / RU 18 / other 0)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -134,7 +136,8 @@ _57 items — ✅ 23 / 🔶 5 / ❌ 29 · файлов в секции: 60_ ## 3. Myths & Fairy Tales -_68 items — ✅ 40 / 🔶 0 / ❌ 28 · файлов в секции: 155_ +_68 книг (все NEW)_ +_RU-издание: ✅ 40 найдено · 🔶 0 частично · ❌ 28 нет — EN-оригинал скачан: 55 из 68 — RU-перевод скачан: 28 из 40 — файлов: 155 (EN 92 / RU 50 / other 13)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -209,7 +212,8 @@ _68 items — ✅ 40 / 🔶 0 / ❌ 28 · файлов в секции: 155_ ## 4. Pictures -_39 items — ✅ 12 / 🔶 1 / ❌ 26 · файлов в секции: 43_ +_39 книг (все NEW)_ +_RU-издание: ✅ 12 найдено · 🔶 1 частично · ❌ 26 нет — EN-оригинал скачан: 21 из 39 — RU-перевод скачан: 8 из 13 — файлов: 43 (EN 28 / RU 14 / other 1)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -255,7 +259,8 @@ _39 items — ✅ 12 / 🔶 1 / ❌ 26 · файлов в секции: 43_ ## 5. Ethnology & Psychology -_29 items — ✅ 17 / 🔶 0 / ❌ 12 · файлов в секции: 37_ +_29 книг (все NEW)_ +_RU-издание: ✅ 17 найдено · 🔶 0 частично · ❌ 12 нет — EN-оригинал скачан: 18 из 29 — RU-перевод скачан: 7 из 17 — файлов: 37 (EN 25 / RU 7 / other 5)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -291,7 +296,8 @@ _29 items — ✅ 17 / 🔶 0 / ❌ 12 · файлов в секции: 37_ ## 6. Religion & Psychology -_28 items — ✅ 19 / 🔶 1 / ❌ 8 · файлов в секции: 40_ +_28 книг (все NEW)_ +_RU-издание: ✅ 19 найдено · 🔶 1 частично · ❌ 8 нет — EN-оригинал скачан: 15 из 28 — RU-перевод скачан: 12 из 20 — файлов: 40 (EN 22 / RU 12 / other 6)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -326,7 +332,8 @@ _28 items — ✅ 19 / 🔶 1 / ❌ 8 · файлов в секции: 40_ ## 7. Theory of Complexes & the Association Experiment -_27 items — ✅ 4 / 🔶 0 / ❌ 23 · файлов в секции: 21_ +_27 книг (все NEW)_ +_RU-издание: ✅ 4 найдено · 🔶 0 частично · ❌ 23 нет — EN-оригинал скачан: 16 из 27 — RU-перевод скачан: 1 из 4 — файлов: 21 (EN 19 / RU 1 / other 1)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -360,7 +367,8 @@ _27 items — ✅ 4 / 🔶 0 / ❌ 23 · файлов в секции: 21_ ## 8. Developmental Psychology -_48 items — ✅ 20 / 🔶 1 / ❌ 27 · файлов в секции: 44_ +_48 книг: 43 NEW + 5 cross-ref_ +_RU-издание: ✅ 15 найдено · 🔶 1 частично · ❌ 27 нет — EN-оригинал скачан: 30 из 43 — RU-перевод скачан: 13 из 16 — файлов: 44 (EN 30 / RU 13 / other 1)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -415,7 +423,8 @@ _48 items — ✅ 20 / 🔶 1 / ❌ 27 · файлов в секции: 44_ ## 9. Comparison of Psychodynamic Concepts -_38 items — ✅ 22 / 🔶 1 / ❌ 15 · файлов в секции: 43_ +_38 книг: 20 NEW + 18 cross-ref_ +_RU-издание: ✅ 11 найдено · 🔶 1 частично · ❌ 8 нет — EN-оригинал скачан: 20 из 20 — RU-перевод скачан: 10 из 12 — файлов: 43 (EN 27 / RU 16 / other 0)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -460,7 +469,8 @@ _38 items — ✅ 22 / 🔶 1 / ❌ 15 · файлов в секции: 43_ ## 10. Psychopathology & Psychiatry -_37 items — ✅ 5 / 🔶 0 / ❌ 27 · файлов в секции: 30_ +_37 книг: 32 NEW + 5 cross-ref_ +_RU-издание: ✅ 5 найдено · 🔶 0 частично · ❌ 27 нет — EN-оригинал скачан: 20 из 32 — RU-перевод скачан: 3 из 5 — файлов: 30 (EN 24 / RU 6 / other 0)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -504,7 +514,8 @@ _37 items — ✅ 5 / 🔶 0 / ❌ 27 · файлов в секции: 30_ ## 11. The Individuation Process -_22 items — ✅ 6 / 🔶 1 / ❌ 0 · файлов в секции: 10_ +_22 книг: 7 NEW + 15 cross-ref_ +_RU-издание: ✅ 6 найдено · 🔶 1 частично · ❌ 0 нет — EN-оригинал скачан: 4 из 7 — RU-перевод скачан: 3 из 7 — файлов: 10 (EN 6 / RU 4 / other 0)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| @@ -533,7 +544,8 @@ _22 items — ✅ 6 / 🔶 1 / ❌ 0 · файлов в секции: 10_ ## 12. Practical Case -_35 items — ✅ 14 / 🔶 1 / ❌ 20 · файлов в секции: 35_ +_35 книг: 23 NEW + 12 cross-ref_ +_RU-издание: ✅ 6 найдено · 🔶 1 частично · ❌ 16 нет — EN-оригинал скачан: 17 из 23 — RU-перевод скачан: 7 из 7 — файлов: 35 (EN 27 / RU 7 / other 1)_ | # | Book | Author | RU edition | Files | |---|------|--------|------------|-------| diff --git a/tools/make_rootlist.py b/tools/make_rootlist.py index 5edf76f..7599e0e 100644 --- a/tools/make_rootlist.py +++ b/tools/make_rootlist.py @@ -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("|---|------|--------|------------|-------|")