counters: is_en/is_ru понимают legacy-суффиксы (-en.<ext>, -ru.<ext>, -ru.b.<ext>) — 30 файлов по всем секциям больше не падают в 'other'; totals-строки всех 12 MANIFEST пересчитаны по диску (sec01 47/71/0, sec03 52/103/0, sec04 EN+1, sec05 +0.1MB, sec02 +0.4MB — ручные цифры были неточны); rootlist==MANIFEST==disk по всем 12 секциям; legacy-имена задокументированы в CONTEXT.md как долг (не ренейм, FINAL-секции)

This commit is contained in:
Dmitry Kokorin 2026-10-01 10:04:36 +03:00
parent 5974ebb87d
commit 33979959fa
15 changed files with 51 additions and 33 deletions

View file

@ -228,3 +228,15 @@ canonical spelling as the PRIMARY query (variants only as follow-up).
- `git diff`/`git show` на `downloads/*/MANIFEST.md` печатает «Binary files differ», хотя контент = чистый UTF-8 без NUL (проверено: `git diff --no-index` на тех же blob = обычный text diff; blob-to-blob `git diff <a> <b>` = text).
- Пре-экзистентно (виден уже в старых коммитах, не наш сессии-баг).
- Рабочее решение для просмотра: `git diff --text downloads/<sec>/MANIFEST.md`. Блобы хранятся нормально (mode 100644, не LFS).
## Legacy file naming — технический долг (2026-10-01)
30 файлов не соответствуют конвенции `NN-slug-lang-edition.ext` (используют `-en.<ext>` / `-ru.<ext>` / `-ru.b.<ext>` без дефиса и издания). Счётчики `make_rootlist.py` (is_en/is_ru) оба паттерна понимают, так что counts корректны; RENAME не сделан (FINAL-секции, LFS-churn). Список:
- sec01: 01-cw6-psychological-types-en.pdf, 07-memories-dreams-reflections-en.pdf, 07-memories-dreams-reflections-ru.b.fb2, 13-psychotherapy-inferior-function-ru.b.fb2, 23-origins-history-consciousness-ru.b.fb2, 27-jung-postjungians-ru.doc, 32-cw12-psych-alchemy-en.pdf, 42-freud-unconscious-ru.b.fb2, 49-personality-individuation-en.epub
- sec03: 02-cw13-spirit-mercurius-en.pdf, 09-golden-ass-en.epub, 11-redemption-motifs-en.epub, 16-grail-legend-en.pdf, 23-uses-enchantment-en.epub, 29-gods-greeks-en.pdf, 39-bogi-egiptjan-ru.pdf, 40-iliada-odisseya-ru.pdf, 48-masks-god-v1-primitive-en.epub, 48-masks-god-v2-oriental-en.epub, 48-masks-god-v3-occidental-en.epub, 60-mother-en.pdf, 62-estes-wolves-en.pdf
- sec04: 02-cw15-spirit-in-man-art-and-literature-en.pdf
- sec05: 08-eliade-eternal-return-ru.fb2, 11-eliade-sacred-profane-ru.fb2, 12-eliade-myth-reality-ru.fb2, 20-benedict-patterns-of-culture-en.pdf, 22-czaplicka-aboriginal-siberia-en.pdf
- sec07: 18-krieger-complexes-iaap-en.pdf
- sec08: 19-freud-se-complete-works-en.pdf
- sec12: 29-hanna-vstrechi-s-dushoy-ru.pdf
Легитимные non-EN/RU (не чинить): 23-kerenyi-dionysos-de-1956.pdf (sec06, DE-оригинал, бонус) — единственный «other» во всём репо.

View file

@ -10,9 +10,9 @@
55 книг (все NEW)\
RU-издание: ✅ 38 найдено · 🔶 2 частично · ❌ 15 нет\
EN-оригинал скачан: 45 из 55\
RU-перевод скачан: 26 из 40\
Файлов: 118 (EN 67 / RU 42 / other 9)
EN-оригинал скачан: 49 из 55\
RU-перевод скачан: 30 из 40\
Файлов: 118 (EN 71 / RU 47 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -144,9 +144,9 @@ RU-перевод скачан: 9 из 28\
68 книг (все NEW)\
RU-издание: ✅ 40 найдено · 🔶 0 частично · ❌ 28 нет\
EN-оригинал скачан: 55 из 68\
RU-перевод скачан: 28 из 40\
Файлов: 155 (EN 92 / RU 50 / other 13)
EN-оригинал скачан: 58 из 68\
RU-перевод скачан: 30 из 40\
Файлов: 155 (EN 103 / RU 52 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -225,7 +225,7 @@ RU-перевод скачан: 28 из 40\
RU-издание: ✅ 12 найдено · 🔶 1 частично · ❌ 26 нет\
EN-оригинал скачан: 21 из 39\
RU-перевод скачан: 8 из 13\
Файлов: 43 (EN 28 / RU 14 / other 1)
Файлов: 43 (EN 29 / RU 14 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -273,9 +273,9 @@ RU-перевод скачан: 8 из 13\
29 книг (все NEW)\
RU-издание: ✅ 17 найдено · 🔶 0 частично · ❌ 12 нет\
EN-оригинал скачан: 18 из 29\
RU-перевод скачан: 7 из 17\
Файлов: 37 (EN 25 / RU 7 / other 5)
EN-оригинал скачан: 19 из 29\
RU-перевод скачан: 10 из 17\
Файлов: 37 (EN 27 / RU 10 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -313,7 +313,7 @@ RU-перевод скачан: 7 из 17\
28 книг (все NEW)\
RU-издание: ✅ 19 найдено · 🔶 1 частично · ❌ 8 нет\
EN-оригинал скачан: 19 из 28\
EN-оригинал скачан: 20 из 28\
RU-перевод скачан: 12 из 20\
Файлов: 40 (EN 27 / RU 12 / other 1)
@ -352,9 +352,9 @@ RU-перевод скачан: 12 из 20\
27 книг (все NEW)\
RU-издание: ✅ 4 найдено · 🔶 0 частично · ❌ 23 нет\
EN-оригинал скачан: 16 из 27\
EN-оригинал скачан: 17 из 27\
RU-перевод скачан: 1 из 4\
Файлов: 21 (EN 19 / RU 1 / other 1)
Файлов: 21 (EN 20 / RU 1 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -390,9 +390,9 @@ RU-перевод скачан: 1 из 4\
48 книг: 43 NEW + 5 cross-ref\
RU-издание: ✅ 15 найдено · 🔶 1 частично · ❌ 27 нет\
EN-оригинал скачан: 30 из 43\
EN-оригинал скачан: 31 из 43\
RU-перевод скачан: 13 из 16\
Файлов: 44 (EN 30 / RU 13 / other 1)
Файлов: 44 (EN 31 / RU 13 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|
@ -580,8 +580,8 @@ RU-перевод скачан: 3 из 7\
35 книг: 23 NEW + 12 cross-ref\
RU-издание: ✅ 6 найдено · 🔶 1 частично · ❌ 16 нет\
EN-оригинал скачан: 17 из 23\
RU-перевод скачан: 7 из 7\
Файлов: 35 (EN 27 / RU 7 / other 1)
RU-перевод скачан: 8 из 7\
Файлов: 35 (EN 27 / RU 8 / other 0)
| # | Book | Author | RU edition | Files |
|---|------|--------|------------|-------|

View file

@ -2,7 +2,7 @@
## Totals
118 files, 1576.7 MB — RU 41 / EN 67 / other 10
118 files, 1576.7 MB — RU 47 / EN 71 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
60 files, 823.6 MB — RU 18 / EN 42 (sweep 01-06: +1 EN; user files 2026-09-30: +5 EN; user zip 1.zip: +6 EN; user zip 2.zip: +8 EN; EN sweep: +1 EN)
60 files, 824.0 MB — RU 18 / EN 42 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
155 files, 2094.4 MB — RU 48 / EN 91 / other 16 (user zip 2.zip: +11 EN, вкл. 2 partial/bonus)
155 files, 2094.4 MB — RU 52 / EN 103 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
43 files, 1327.1 MB — RU 14 / EN 28 / other 1
43 files, 1327.1 MB — RU 14 / EN 29 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
37 files, 407.9 MB — RU 10 / EN 27 / other 0 (lg 26 + flib 9 + user 2)
37 files, 408.0 MB — RU 10 / EN 27 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
40 files, 893.4 MB — RU 12 / EN 27 / other 1 (lg 21 + ia 8 + flib 8 + user 2)
40 files, 893.4 MB — RU 12 / EN 27 / other 1
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
21 files, 89.5 MB — RU 1 / EN 20 / other 0 (lg 15 + ia 2 + flib 0)
21 files, 89.5 MB — RU 1 / EN 20 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
44 files, 332.5 MB — RU 13 / EN 31 / other 0 (lg 35 + ia 2 + flib 7)
44 files, 332.5 MB — RU 13 / EN 31 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
43 files, 365.3 MB — RU 16 / EN 27 / other 0 (lg 39 + ia 0 + flib 2)
43 files, 365.3 MB — RU 16 / EN 27 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
30 files, 267.8 MB — RU 6 / EN 24 / other 0 (lg 28 + ia 1 + flib 1)
30 files, 267.8 MB — RU 6 / EN 24 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
10 files, 127.5 MB — RU 4 / EN 6 / other 0 (lg 7 + ia 1 + flib 2)
10 files, 127.5 MB — RU 4 / EN 6 / other 0
## Files (per item)

View file

@ -2,7 +2,7 @@
## Totals
35 files, 183.7 MB — RU 8 / EN 27 / other 0 (lg 29 + ia 1 + flib 3)
35 files, 183.7 MB — RU 8 / EN 27 / other 0
## Files (per item)

View file

@ -9,6 +9,12 @@ sections/NN/NN-*.md cards (RU title). Regenerable, no manual edits.
"""
import os, re, sys, datetime
def is_en(f):
return "-en-" in f or re.search(r"-en(\.b)?\.\w{2,4}$", f) is not None
def is_ru(f):
return "-ru-" in f or re.search(r"-ru(\.b)?\.\w{2,4}$", f) is not None
BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DL_DIR = {"09-comparison-of-psychodynamic-concepts": "09-comparison",
"10-psychopathology-psychiatry": "10-psychopathology"}
@ -208,8 +214,8 @@ def main():
n = int(sec[:2])
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_en = sum(1 for f in dfiles if is_en(f))
f_ru = sum(1 for f in dfiles if is_ru(f))
f_other = dfiles_n - f_en - f_ru
stat = {e: 0 for e in "✅🔶❌"}
new_items = [it for it in items.values() if not it.get("is_xref")]
@ -220,8 +226,8 @@ def main():
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
if any(is_en(f) for f in fns): en_dl += 1
if any(is_ru(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["🔶"]