content audit sec01-06: fixes (audit_content.py + 12 file/card corrections)

- tools/audit_content.py: per-file vs item-title triage (SUSPECT/SMALL/NO-TEXT/NO-CYR)
- sec01: .part removed; 10 files restored .pdf ext (LFS rename); #04/#19/#27 verify notes
- sec02 #16: corrupted double-encoded txt -> clean flib fb2 b/844509; #17/#22 doc verified via catdoc
- sec03 #11: -b epub = Spanish von Franz (Paidós 1983, forged EN OPF) -> bonus label
- sec03 #42: КАРО 2012 'Irish Tales' = EN reader (not RU, not the listed book) -> bonus rename
- sec03 #56: Onians b/c/d/e = Cambridge 24-87KB previews -> labeled
- sec06 #18: filename 1981->1989 (Perera 'Descent to the Goddess' 1989; 1981 = other book)
- sec06 #28: ia Zimmer OCR layer = foreign Devanagari text; images = RKP (p.100 verified)
- sec04 #30: buksmart 2020 = RU/FR bilingual w/ VeryPDF watermarks -> note
- linter: azw3/mobi ext + underscore in fname regex; manifest cross-check ignores off-disk rows;
  8 legacy cards section-order fixed (CR before DL)
- AGENTS.md: 'Content audit (2026-09-25)' lessons section
- check-md: 0/219
This commit is contained in:
Dmitry Kokorin 2026-09-26 01:32:02 +03:00
parent 85c41acd3c
commit f5cb34195e
44 changed files with 20976 additions and 83 deletions

20766
- Normal file

File diff suppressed because it is too large Load diff

View file

@ -531,6 +531,30 @@ sections/0N-<name>/ # one .md per BOOK (chapter-level list items are merged int
queue bash (dual-queue downloads corrupt the cookie jar). AA (annas-archive.gl) = 403 bot-wall
for anon downloads from this box; i2p not worth the router setup.
## Content audit (2026-09-25) — what the full-file vs item-title sweep found
Tool: `tools/audit_content.py <sec>...` (samples first/mid pages of every file, scores title
overlap, flags SUSPECT/SMALL/NO-TEXT/NO-CYR). Ran on all sections 01–06 (sec05: fix the
per-item header parse first — sec05 uses «— ✅» not «— N files»). Findings (commits
`85c41ac` + follow-ups):
1. **Mislinked whole files caught:** sec01 #29 RU fb2 = fantasy novel; sec01 #47 two review
clippings (1950 «About Books»); sec03 #11 `-b` epub = Spanish von Franz (Paidós 1983) with
forged EN OPF title; sec03 #42 «КАРО 2012» = English reader (Irish Tales), not the listed
book and not a RU translation; sec02 #16 bosnak .txt = double-encoded mojibake (replaced by
clean flib fb2 b/844509).
2. **Foreign OCR layer (file OK, text layer wrong):** sec06 #28 ia Zimmer = all-Devanagari OCR
(Lal Bahadur Shastri Academy stamp); images verified = RKP «Philosophies of India» (p.100
«PART II Philosophies of Time»). Keep; the twin lg file is the clean copy.
3. **Previews/fragments labeled as editions:** sec03 #56 Onians b/c/d/e = Cambridge 24–87 KB
chapter previews (marked ПРЕВЬЮ in MANIFEST); sec01 #12 was a 23-pp PagePlace preview (→ full).
4. **False positives to expect:** windows-1251/UTF-16/KOI8 fb2/txt (decoding, not corruption),
image scans without OCR (NO-TEXT/NO-CYR — verify by rendering pages: pdftoppm/ddjvu +
imagemagick), spaced-out OCR titles («T H C T F»), library stamps (Cornell/India/Claremont),
VeryPDF watermark pages (sec04 #30 buksmart — watermark + FR part, legit 2020 ed.).
5. **Bonus rule in practice:** different-but-related books stay as bonus files with
`Бонус: ДРУГАЯ книга (...)` note, status unchanged; rename file to drop the false lang/year
label. Same for wrong-year filename (sec06 #18 «1981» → 1989, Perera had two «Descent…» books).
## Catalog caching convention
Processed/scraper-unfriendly catalogs are cached under `data/catalogs/` (committed, with source

Binary file not shown.

Binary file not shown.

BIN
downloads/01-fundamentals/29-map-soul-ru-cogito-2010.pdf (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -36,7 +36,7 @@
| 04-cw9-archetypes-en-princeton-1980-b.pdf | 49 MB | lg f/92459383 (из sec04) | Princeton 2nd ed ✓ |
| 04-cw9-archetypes-en-princeton-1977-a.pdf | 9 MB | lg f/100688964 (из sec04) | 2nd ed, R.F.C. Hull tr. ✓ |
| 04-cw9-archetypes-en-princeton-1977-b.pdf | 10 MB | lg f/113262694 (из sec04) | 2nd ed ✓ |
| 04-cw9-archetypes-ru-ast-2019.pdf | 5 MB | lg f/93867354 (из sec04) | АСТ 2019 |
| 04-cw9-archetypes-ru-ast-2019.pdf | 5 MB | lg f/93867354 (из sec04) | АСТ 2019 (виз. 2026-09-25: p.12 «Архетипы коллективного бессознательного» ✓; в начале англ. Princeton-обложка) |
| 04-cw9-archetypes-ru-ast-2020.pdf | 1 MB | lg f/94039510 (из sec04) | АСТ 2020 |
### 05 — Aion (CW 9/II), Chaps. I-IV — 2 files
@ -139,7 +139,7 @@
| file | size | source | verify |
|---|---|---|---|
| 19-psychology-cg-jung-ru-praktika-1996.chm | 364 KB | lg f/3319346 | 19 — Психологическое учение К.Г. Юнга, Практика 1996 (Якоби) |
| 19-psychology-cg-jung-ru-praktika-1996.chm | 364 KB | lg f/3319346 | 19 — Психологическое учение К.Г. Юнга (7z/7z-экстракшн 2026-09-25: лекции о Psyche/Seele, Psychologische Typen — контент ✓) |
| 19-psychology-cg-jung-en-routledge-1942.pdf | 57.5 MB | lg f/98020440 | 19 — Jacobi, The Psychology of C.G. Jung (Routledge 1942) |
### 20 — Complex / Archetype / Symbol — 3 files
@ -199,7 +199,7 @@
| file | size | source | verify |
|---|---|---|---|
| 27-jung-postjungians-ru.doc | 1.9 MB | lg f/92805478 | 27 — Самуэлс, Юнг и постъюнгианцы (doc) |
| 27-jung-postjungians-ru.doc | 1.9 MB | lg f/92805478 | 27 — Самуэлс, Юнг и постъюнгианцы (catdoc 2026-09-25: «Эндрю Самуэлс, Юнг и постъюнгианцы» ✓) |
| 27-jung-post-jungians-en-1985.pdf | 2.0 MB | lg f/91626916 | 27 — Samuels, Jung and the Post-Jungians (1985) |
### 28 — A Critical Dictionary of Jungian Analysis — 2 files
@ -213,7 +213,7 @@
| file | size | source | verify |
|---|---|---|---|
| 29-jungs-map-of-soul-ru-2010.fb2 | 1.3 MB | lg f/2978758 | 29 — Стайн, Юнговская карта души, Когито 2010 |
| 29-map-soul-ru-cogito-2010.pdf | 1.3 MB | flib b/565290 (rescue 2026-09-25: lg f/2978758 оказался чужим файлом — фэнтези «Шпага Рианона») | ✅ 256 pp, «ЮНГОВСКАЯ КАРТА ДУШИ» |
| 29-map-soul-en-open-court-1998.pdf | 1.4 MB | lg f/114436024 | 29 — Hopcke, Jung's Map of the Soul (Open Court 1998) |
### 30 — The Symbolic Quest — 2 files

BIN
downloads/02-dreams/16-bosnak-ru-v-mire-snovideniy-1991.fb2 (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

View file

@ -91,13 +91,13 @@
| file | size | source | verify |
|---|---|---|---|
| 16-bosnak-ru-v-mire-snovideniy-1991.txt | 81 KB | flib b/642290 | 16 — В мире сновидений (Древо Жизни 1991; единственный формат = txt) |
| 16-bosnak-ru-v-mire-snovideniy-1991.fb2 | 363 KB | flib b/844509 | 16 — В мире сновидений (1991); чистая fb2 (старый txt был двойной mojibake-коррупт, audit 2026-09-25) |
### 17 — Methods in Analytical Psychology (Chiron 1991, Chap. 8) — 1 file
| file | size | source | verify |
|---|---|---|---|
| 17-dieckmann-ru-metody-2001.doc | 1.1 MB | flib b/570955 (native doc) | 17 — Методы в аналитической психологии (2001; единственный формат = doc) |
| 17-dieckmann-ru-metody-2001.doc | 1.1 MB | flib b/570955 (native doc) | 17 — Методы в аналитической психологии (2001; catdoc 2026-09-25: «Ханс Дикманн, МЕТОДЫ В АНАЛИТИЧЕСКОЙ ПСИХОЛОГИИ» ✓) |
### 18 — Jungian Psychotherapy (Wiley 1978, Chap. III «Dreams») — 1 file
@ -119,7 +119,7 @@
|---|---|---|---|
| 22-jungian-dream-interpretation-en-inner-city-1983.pdf | 899 KB | lg f/92651991 | 22 — Hall, Jungian Dream Interpretation (Inner City 1983, 128 pp) — 2026-09-21 |
| 22-yungianskoe-tolkovanie-ru-1996.pdf | 1.1 MB | lg f/97660601 ed 141660793 (2026-09-25 rescue) | ✅ «Джеймс Холл, Юнгианское толкование сновидений. Практич. руководство, СПб: Б.С.К. 1996, 168 с.» (сжатый скан 54 стр., полный текст 41k слов) |
| 22-yungianskoe-tolkovanie-ru-doc.doc | 1.1 MB | lg f/3319250 ed 3479391 (2026-09-25 rescue) | ✅ тот же текст (43k слов, полный) |
| 22-yungianskoe-tolkovanie-ru-doc.doc | 1.1 MB | lg f/3319250 ed 3479391 (2026-09-25 rescue) | ✅ тот же текст (43k слов, полный; catdoc подтвердил RU-контент) |
### 24 — The Dream and the Underworld (Harper & Row 1979) — 1 file

View file

@ -73,7 +73,7 @@
|---|---|---|---|
| 11-motiv-iskupleniya-ru-2016.pdf | 32.7 MB | — | — |
| 11-motiv-iskupleniya-ru-b.doc | 0.7 MB | — | — |
| 11-redemption-motifs-en-b.epub | 0.1 MB | — | — |
| 11-redemption-motifs-en-b.epub | 0.1 MB | — | Бонус: ДРУГАЯ книга (von Franz, Paidós 1983, исп.; OPF-заголовок подделан под EN) |
| 11-redemption-motifs-en.epub | 0.2 MB | — | — |
### 16 — The Grail Legend (Princeton 1998) — 3 files
@ -216,8 +216,8 @@ free-файл не найден (flib/libgen 0, verified 2026-09-25, sec06 sweep
| file | size | source | verify |
|---|---|---|---|
| 42-irlandskie-skazki-en-karo-2012-b.pdf | 0.9 MB | — | — |
| 42-irlandskie-skazki-en-karo-2012.azw3 | 0.3 MB | — | — |
| 42-jacobs-irish-tales-en-karo-2012-bonus.pdf | 0.9 MB | — | Бонус: ДРУГАЯ книга (Джейкобс, «Irish Tales», КАРО 2012, англ. текст) — не Celtic Fairy Tales; оригинал Leopard 1995 отсутствует |
| 42-jacobs-irish-tales-en-karo-2012-bonus.azw3 | 0.3 MB | — | Бонус (тот же КАРО 2012) |
### 43 — Indian Fairy Tales (Jacobs) — 2 files (rescue 2026-09-25)
@ -290,10 +290,10 @@ free-файл не найден (flib/libgen 0, verified 2026-09-25, sec06 sweep
|---|---|---|---|
| 56-na-kolenyah-bogov-ru-1999.djvu | 11.1 MB | — | — |
| 56-onians-origins-en-a.pdf | 10.3 MB | — | — |
| 56-onians-origins-en-b.pdf | 0.1 MB | — | — |
| 56-onians-origins-en-c.pdf | 0.0 MB | — | — |
| 56-onians-origins-en-d.pdf | 0.0 MB | — | — |
| 56-onians-origins-en-e.pdf | 0.1 MB | — | — |
| 56-onians-origins-en-b.pdf | 0.1 MB | — | ПРЕВЬЮ (Cambridge, фрагмент) |
| 56-onians-origins-en-c.pdf | 0.0 MB | — | ПРЕВЬЮ (Cambridge, Part I, ~24 KB) |
| 56-onians-origins-en-d.pdf | 0.0 MB | — | ПРЕВЬЮ (Cambridge, Part II, ~24 KB) |
| 56-onians-origins-en-e.pdf | 0.1 MB | — | ПРЕВЬЮ (Cambridge, TOC) |
### 60 — The Mother: Archetypal Image in Fairy Tales (Inner City 1988) — 3 files

View file

@ -74,7 +74,7 @@
|---|---|---|---|
| 30-kandinsky-spiritual-ru-arhimed-1992.pdf | 2 MB | lg f/3418650 | scanned, rendered p1 ✓ |
| 30-kandinsky-spiritual-en-floating-press-2008.pdf | 554 KB | lg f/91677950 | pdftext: Sadler tr., Floating Press 2008, complete (ends w/ Dalcroze passage) ✓ |
| 30-kandinsky-spiritual-ru-buksmart-2020-t1.pdf | 146 MB | lg f/94051405 | trailer intact ✓ |
| 30-kandinsky-spiritual-ru-buksmart-2020-t1.pdf | 146 MB | lg f/94051405 | trailer intact ✓; VeryPDF-водяные знаки (audit 2026-09-25) |
| 30-kandinsky-spiritual-ru-buksmart-2020-t2.pdf | 154 MB | lg f/94051663 | trailer intact ✓ |
### 31 — The Tree Test — 1 file — 1 file (flagged), EN absent

View file

@ -97,7 +97,7 @@ RU: ПЛАТНО (castalia.ru PDF).
### 18 — Descent to the Goddess (Perera) — 1 file
| file | size | source | verify |
|---|---|---|---|
| 18-perera-descent-en-1981.epub | 296 KB | lg f/2867673 ed 3301655 | ✅ Inner City 1981, ISBN 0-919123-05-8 |
| 18-perera-descent-to-goddess-en-1989.epub | 296 KB | lg f/2867673 ed 3301655 | ✅ Inner City, Descent to the Goddess (1989; в старом имени ошибочно 1981 — год другой книги Перера) |
RU: ПЛАТНО (castalia.ru PDF, Касталия 2024).
@ -158,7 +158,7 @@ EN: NOT FOUND (ia CDL; libgen 0; на ia есть open-скан ИСПАНСКО
### 28 — Philosophies of India (Zimmer) — 2 files
| file | size | source | verify |
|---|---|---|---|
| 28-zimmer-philosophies-en.pdf | 80 MB | ia philosophiesofindiazimmer_202003_922_e | ✅ 709 pp, RKP, Editor's Foreword |
| 28-zimmer-philosophies-en.pdf | 80 MB | ia philosophiesofindiazimmer_202003_922_e | ✅ 709 pp; ⚠ OCR-слой чужого Devanagari-текста, изображения = RKP (проверено p.100 «PART II Philosophies of Time», audit 2026-09-25) |
| 28-zimmer-philosophies-en-b.pdf | 32.5 MB | lg f/91845308 ed 136551982 | ✅ «HEINRICH ZIMMER PHILOSOPHIES OF INDIA, edited by Joseph Campbell, RKP» |
## Not downloadable (verified 2026-09-25)

View file

@ -20,6 +20,7 @@
| lang | file | size | source |
|------|------|------|--------|
| EN | 12-ego-jungian-theory-en-preview.pdf | 303 KB | api.pageplace.de |
| EN | 12-ego-jungian-theory-en-routledge-2016.pdf | 1.4 MB | lg f/94099546 ed 138892780 (rescue 2026-09-25, user) |
## Catalog records

View file

@ -21,7 +21,7 @@
| lang | file | size | source |
|------|------|------|--------|
| RU | 29-jungs-map-of-soul-ru-2010.fb2 | 1.3 MB | lg f/2978758 |
| RU | 29-map-soul-ru-cogito-2010.pdf | 1.3 MB | flib b/565290 (2026-09-25: lg-файл был чужим — фэнтези; заменён) |
| EN | 29-map-soul-en-open-court-1998.pdf | 1.4 MB | lg f/114436024 |
## Catalog records

View file

@ -21,7 +21,7 @@
| lang | file | size | source |
|------|------|------|--------|
| RU | 16-bosnak-ru-v-mire-snovideniy-1991.txt | 81 KB | flib b/642290 |
| RU | 16-bosnak-ru-v-mire-snovideniy-1991.fb2 | 363 KB | flib b/844509 |
## Catalog records

View file

@ -17,18 +17,18 @@
|----------|-----------|------|-------|------------|------|
| Понимание Сновидений | Касталия (М.) | 2020 | 372 | И. Ерзин (ред. А. Корнякова) | 978-5-521-15789-1 |
## Catalog records
```
РГБ 0 · МГУ 0 (verified 2026-09-21; = #38 «Понимание сновидений» М. Мэйтун, Касталия 2020 — малотиражное; данные: chitai-gorod/Castalia)
```
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 39-understanding-dreams-en-1984.pdf | 11.5 MB | lg f/93921252 (2026-09-25 rescue; Mattoon, Spring 1984) |
## Catalog records
```
РГБ 0 · МГУ 0 (verified 2026-09-21; = #38 «Понимание сновидений» М. Мэйтун, Касталия 2020 — малотиражное; данные: chitai-gorod/Castalia)
```
## Notes
- Same book as item 38 (Mattoon, *Understanding Dreams*).

View file

@ -25,7 +25,7 @@ Legend: **✅** ISBN found; **⚠** published but no ISBN (not stated / new ed.
| 13 | MDR | ⚠ | ✅ (sec01) | — | sec01: 1 pdf | sec01: 1 fb2 |
| 14 | MHS ch. | ✅ 9780691216393 | 🔶 ch. in «Человек и его символы» | — | sec04: 4 pdf (полная MHS) | sec01: 2 fb2 |
| 15 | The Living Symbol | ⚠ | ❌ | — | — (restricted) | — |
| 16 | A Little Course in Dreams | ⚠ | ✅ | ✅ 5-02-017581-1 | — (restricted) | 1 txt (flib) |
| 16 | A Little Course in Dreams | ⚠ | ✅ | ✅ 5-02-017581-1 | — (restricted) | 1 fb2 (flib) |
| 17 | Methods in Analytical Psych. | ⚠ (DE) | ✅ | — | — (EN original absent) | 1 doc (flib) |
| 18 | Jungian Psychotherapy | ✅ 9780429476365 | ❌ | — | 1 pdf (Maresfield 1990) | — |
| 19 | Dreams (von Franz) | ⚠ | ❌ | — | 3 epub (Shambhala 1991/1998) | — |

View file

@ -9,18 +9,18 @@
— нет (verified 2026-09-20, gate: MISSING.md §24)
## Catalog records
```
no records (verified 2026-09-20)
```
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 24-myth-and-reality-en-1963.pdf | 2.5 MB | lg f/92483894 (2026-09-25 rescue; Harper & Row 1963, 217 pp, «World Perspectives vol. 31») |
## Catalog records
```
no records (verified 2026-09-20)
```
## Notes
*Myth and Reality* (1963) — RSG 0 («Элиаде Миф» = только «Миф о вечном возвращении»), trade 0 (user: с таким названием не нашёл). Возможно, другое RU-название — открыт вопрос.

View file

@ -9,18 +9,18 @@
— нет (verified 2026-09-20, gate: MISSING.md §30)
## Catalog records
```
no records (verified 2026-09-20)
```
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 30-heroes-of-the-greeks-en-1959.pdf | 115 MB | ia heroes-of-the-greeks-carl-kerenyi (2026-09-25 rescue; «Myth and Man: The Heroes of the Greeks», Thames & Hudson, OCR) |
## Catalog records
```
no records (verified 2026-09-20)
```
## Notes
*The Heroes of the Greeks* — castalia 404, SearXNG 0, livelib Керени (168402) без неё, chitai-gorod author page без неё (user: не находится, 2026-09-20).

View file

@ -15,8 +15,8 @@
| lang | file | size | source |
|------|------|------|--------|
| EN | 42-irlandskie-skazki-en-karo-2012-b.pdf | 0.9 MB | — |
| EN | 42-irlandskie-skazki-en-karo-2012.azw3 | 0.3 MB | — |
| EN | 42-jacobs-irish-tales-en-karo-2012-bonus.pdf | 0.9 MB | — (бонус: ДРУГАЯ книга, Jacobs «Irish Tales» КАРО 2012, англ. текст) |
| EN | 42-jacobs-irish-tales-en-karo-2012-bonus.azw3 | 0.3 MB | — (бонус, тот же КАРО 2012) |
## Catalog records
@ -42,4 +42,4 @@ no records (verified 2026-09-20)
- (was Verdict: **❌ RU-перевода нет** (проверено: RSL + MGU + libgen + alib + flibusta, оба написания 2026-09-20).
Смежная находка: **«Ирландские сказки»** (КАРО 2012, 9785992507867) — сборник ирландских
сказок Джейкобса в изд-ве КАРО, **английский текст** (книга для чтения), не перевод в RU.
Скачано: 42-irlandskie-skazki-en-karo-2012.azw3 + -b.pdf (libgen 151275073).)
Скачано: 42-jacobs-irish-tales-en-karo-2012-bonus.azw3 + -bonus.pdf (libgen 151275073; переименовано 2026-09-25: текст книги = английский, не перевод).)

View file

@ -11,12 +11,6 @@
|----------|-----------|------|-------|------------|------|
| (see Verdict below) | | | | | |
## Catalog records
```
no records (verified 2026-09-20)
```
## Downloads
| lang | file | size | source |
@ -24,6 +18,12 @@ no records (verified 2026-09-20)
| EN | 43-indian-fairy-tales-en-2004.epub | 3.4 MB | lg f/112792701 (2026-09-25 rescue; Project Gutenberg, ill.) |
| EN | 43-indian-fairy-tales-en-se-2021.epub | 0.65 MB | lg f/113903507 (2026-09-25 rescue; Standard Ebooks 2021) |
## Catalog records
```
no records (verified 2026-09-20)
```
## Notes
*Indian Fairy Tales* (Jacobs) — св. #42.

View file

@ -11,12 +11,6 @@
|----------|-----------|------|-------|------------|------|
| (see Verdict below) | | | | | |
## Catalog records
```
no records (verified 2026-09-20)
```
## Downloads
| lang | file | size | source |
@ -24,6 +18,12 @@ no records (verified 2026-09-20)
| EN | — (cross-ref sec03: 41-jacobs-english-ft-en-1968.pdf) | — | sec03 file (dedup 2026-09-25: дубликат md5-идентичен) |
| EN | 44-more-english-fairy-tales-en-abcclio-2002.pdf | 7.9 MB | lg f/91731102 (2026-09-25 rescue; ABC-CLIO 2002, серия Zipes) |
## Catalog records
```
no records (verified 2026-09-20)
```
## Notes
*More English Fairy Tales* (Jacobs) — св. #42.

View file

@ -9,18 +9,18 @@
— нет (verified 2026-09-20, gate: MISSING.md §66)
## Catalog records
```
no records (verified 2026-09-20)
```
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 66-homeric-gods-en-thames-hudson.pdf | 4.9 MB | ia 4448_20260112 (2026-09-25 rescue; Otto, Thames & Hudson, OCR) |
## Catalog records
```
no records (verified 2026-09-20)
```
## Notes
Otto, *The Homeric Gods* (1954) — RSG 0, castalia 0, SearXNG 0. flib «Греческие боги» (2019, per. О. С. Ракитянская, 378 с.) = *The Greek Religion in Its Classical Period* (TOC-verified: I. Введение / II. Религия и миф доисторической древности / III. Образы олимпийских богов) — bonus find, NOT this book.

View file

@ -28,7 +28,7 @@
| EN | 09-eliade-hri-t2-en-1976.pdf | 44 MB | ia mircea-eliade-a-history-of-religious-ideas-volume-2 |
| EN | 09-eliade-hri-t3-en-1988.epub | 0.9 MB | lg f/113631296 (t3, UCP 1988; rescue 2026-09-25) |
| RU | 09-eliade-hri-t1-ru-2002.fb2 | 2.2 MB | flib b/122503 |
| RU | 09-eliade-hri-t1-ru-2002-scan-фрагмент.pdf | 4.6 MB | flib b/640158 (⚠ фрагмент) |
| RU | 09-eliade-hri-t1-ru-2002-scan-fragment.pdf | 4.6 MB | flib b/640158 (⚠ фрагмент) |
| RU | 09-eliade-hri-t2-ru-2002.fb2 | 2.4 MB | flib b/860620 |
| RU | 09-eliade-hri-t3-ru-2002.fb2 | 1.7 MB | flib b/123000 |

View file

@ -18,16 +18,16 @@
| Путь Ра через Дуат. Толкование древнеегипетской «Амдуат» | Касталия (М.) | 2022 | | И. Ветринский | 978-5-521-18582-5 |
| Путь Ра через Дуат. Толкование древнеегипетской Амдуат (PDF) | Касталия (castalia.ru) | | | | PDF |
## Catalog records
chitai-gorod: product 2929597 (Год 2022, Касталия, пер. Ветринский И., ISBN 978-5-521-18582-5)
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 13-schweizer-sungod-en.pdf | 15 MB | lg f/93205766 (key-vs-f_id rescue 2026-09-25; 247 pp, Cornell 2010) |
## Catalog records
chitai-gorod: product 2929597 (Год 2022, Касталия, пер. Ветринский И., ISBN 978-5-521-18582-5)
## Notes
- **RESCUE (2026-09-24, user oracle):** chitai-gorod 2929597 + OZON 647372588 + castalia.ru

View file

@ -17,17 +17,17 @@
|----------|-----------|------|-------|------------|------|
| Бог и бессознательное. Трансформация богообраза. Комментарии к книге Юнга «Ответ Иову» | Клуб Касталия (М.) | 2016 | 386 | — | — (nikbook: «под заказ», твёрдый переплёт) |
## Catalog records
livelib: book 1002608123 (Клуб Касталия, 2016, 386 стр., 18+)
nikbook: product/edinger-ef-bog-i-bessoznatelnoe-...
## Downloads
| lang | file | size | source |
|------|------|------|--------|
| EN | 17-edinger-god-image-en.epub | 544 KB | lg f/91722137 (key-vs-f_id rescue 2026-09-25; scan-epub, Inner Light 1992) |
## Catalog records
livelib: book 1002608123 (Клуб Касталия, 2016, 386 стр., 18+)
nikbook: product/edinger-ef-bog-i-bessoznatelnoe-...
## Notes
- **RESCUE (2026-09-24, user oracle):** nikbook + livelib 1002608123.

View file

@ -27,4 +27,4 @@ esxatos.com/perera-nishozhdenie-k-bogine: «Касталия», 2024, 168 с., I
- Другое RU изд. Перера: «Комплекс козла отпущения» (Класс 2009, 978-5-86375-164-1).
- Двойник A.3=B консолидирован сюда.
Downloads (2026-09-25): EN 1 epub (lg f/2867673, Inner City 1981). RU: paid (castalia PDF). MANIFEST: ../../downloads/06-religion/MANIFEST.md
Downloads (2026-09-25): EN 1 epub (lg f/2867673, Inner City 1989 — «Descent to the Goddess»; в старом имени файла ошибочно 1981). RU: paid (castalia PDF). MANIFEST: ../../downloads/06-religion/MANIFEST.md

View file

@ -21,7 +21,9 @@
| lang | file | size | source |
|------|------|------|--------|
| RU | (запланировано download-фаза) | 1060K | flib b/426514 (fb2+epub+mobi) |
| EN | 27-suzuki-zen-en-1949.pdf | 56 MB | ia anintroductiontozenbuddhism (изд. 1964) |
| EN | 27-suzuki-zen-en-b.epub | 185 KB | lg f/93890296 ed 138700015 |
| RU | 27-suzuki-zen-ru-1991.fb2 | 1.9 MB | flib b/426514 |
## Catalog records

103
tools/audit_content.py Normal file
View file

@ -0,0 +1,103 @@
#!/usr/bin/env python3
"""audit_content.py — content-triage of ALL downloaded files vs their item title.
For each file NN-... in downloads/0N-*/: expected title = per-item header
'### NN — <title>' of that section's MANIFEST. Extract a text sample
(pdf pdftotext -l 3 / fb2 body / epub first xhtml / djvu djvutxt / doc strings)
and score title-token overlap. Flags: SUSPECT (0 overlap), SMALL, NO-TEXT.
RU files (name contains '-ru') get a light check (Cyrillic present, non-empty).
Run: python3 tools/audit_content.py [sec] (sec = 01..06, default all)
"""
import os, re, sys, subprocess, json, html
BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DL = os.path.join(BASE, 'downloads')
STOP = {'the','and','for','with','from','into','upon','about','its','his','her','vol','vols','chaps','ch','part','study','essays','essay','selected','works','collected','complete','book','pages','original','edition','second','first'}
def tokens(title):
t = re.sub(r'\(.*?\)', ' ', title)
t = re.sub(r'[^a-zа-яё0-9 ]', '', t.lower())
return [w for w in t.split() if len(w) >= 4 and w not in STOP]
def item_titles(sec_dir):
mf = os.path.join(DL, sec_dir, 'MANIFEST.md')
t = open(mf, encoding='utf8').read()
part = t.split('## Not downloadable')[0]
out = {}
for m in re.finditer(r'^### (\d+) — (.+?) — (.+)$', part, re.M):
out[m.group(1)] = m.group(2).strip()
# items with '0 files' headers too (no local files, skip)
return out
def sample(path):
ext = path.rsplit('.', 1)[-1].lower()
try:
if ext == 'pdf':
r = subprocess.run(['pdftotext', '-l', '3', path, '-'], capture_output=True, timeout=120)
txt = r.stdout.decode('utf8', errors='ignore')
if not txt.strip():
r = subprocess.run(['pdftotext', path, '-'], capture_output=True, timeout=300)
txt = r.stdout.decode('utf8', errors='ignore')[:3000]
return txt[:3000]
if ext == 'fb2':
raw = open(path, encoding='utf8', errors='ignore').read()
body = re.search(r'<body>(.*)', raw, re.S)
txt = re.sub(r'<[^>]+>', ' ', body.group(1) if body else raw[:50000])
return re.sub(r'\s+', ' ', txt)[:3000]
if ext == 'epub':
import zipfile
z = zipfile.ZipFile(path)
names = [n for n in z.namelist() if re.search(r'\.(x?html?|htm)$', n) and 'nav' not in n.lower()]
txt = ''
for n in names[:8]:
txt += z.read(n).decode('utf8', errors='ignore')
if len(txt) > 4000: break
return re.sub(r'<[^>]+>', ' ', txt)[:3000]
if ext == 'djvu':
r = subprocess.run(['djvutxt', path, '-'], capture_output=True, timeout=300)
txt = r.stdout.decode('utf8', errors='ignore')
return txt[:3000]
if ext in ('doc', 'txt', 'html', 'mobi'):
r = subprocess.run(['strings', '-n', '6', path], capture_output=True, timeout=60)
return r.stdout.decode('utf8', errors='ignore')[:3000]
except Exception as e:
return f"__ERR__ {e}"
return ''
def main():
secs = sys.argv[1:] or sorted(d for d in os.listdir(DL) if re.match(r'^0\d-', d))
results = []
for sec in secs:
titles = item_titles(sec)
files = [f for f in os.listdir(os.path.join(DL, sec)) if f != 'MANIFEST.md' and re.match(r'^\d\d-', f)]
for f in sorted(files):
num = f[:2]
title = titles.get(num, '')
if not title:
results.append((sec, f, 'NO-TITLE', 0, 0, ''))
continue
tok = tokens(title)
is_ru = '-ru' in f or re.search(r'-(t\d-ru|ru-)', f)
size = os.path.getsize(os.path.join(DL, sec, f))
s = sample(os.path.join(DL, sec, f))
low = s.lower()
hits = sum(1 for w in tok if w in low) if tok else 0
score = hits / len(tok) if tok else 0
flags = []
if s.startswith('__ERR__'):
flags.append('ERR')
elif is_ru:
if not re.search(r'[а-яё]', s): flags.append('NO-CYR')
else:
if not s.strip(): flags.append('NO-TEXT')
elif score == 0 and tok: flags.append('SUSPECT')
if size < 200000 and f.endswith('.pdf'): flags.append('SMALL')
if size < 80000 and not f.endswith('.pdf'): flags.append('SMALL')
if flags:
results.append((sec, f, ','.join(flags), round(score, 2), size, s[:150].replace('\n', ' ')))
for sec, f, fl, sc, sz, snip in results:
print(f"{sec}/{f}\t{fl}\tscore={sc}\t{sz}\t{snip[:80]}")
print(f"\nTOTAL flagged: {len(results)}", file=sys.stderr)
if __name__ == '__main__':
main()

View file

@ -63,9 +63,9 @@ def lint_card(path, manifest_files):
# Downloads table cross-check
dm = re.search(r'^## Downloads\n(.*?)(?=^## |\Z)', c, re.M | re.S)
if dm:
rows = re.findall(r'^\|\s*(EN|RU\??|\?)\s*\|\s*([0-9]{2}-[a-zA-Z0-9\.\-]+)\s*\|', dm.group(1), re.M)
rows = re.findall(r'^\|\s*(EN|RU\??|\?)\s*\|\s*([0-9]{2}-[a-zA-Z0-9_\.\-]+)\s*\|', dm.group(1), re.M)
disk = set(os.path.basename(f) for f in glob.glob(f"downloads/{sec_of(path)}/*"))
manifest = set(f for f, _, _ in manifest_files.get(num, []))
manifest = set(f for f, _, _ in manifest_files.get(num, []) if f in disk) # skip legacy/renamed rows
for lang, fname in rows:
if fname not in disk:
issues.append(f'Downloads file not on disk: {fname}')

View file

@ -19,7 +19,7 @@ def parse_manifest_files(manifest_path):
if not os.path.exists(manifest_path):
return items
c = open(manifest_path, encoding='utf-8').read()
fname_re = r'([0-9]{2}-[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9]+)*\.(?:pdf|fb2|epub|doc|docx|chm|djvu|txt|zip))'
fname_re = r'([0-9]{2}-[a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9]+)*\.(?:pdf|fb2|epub|doc|docx|chm|djvu|txt|zip|mobi|azw3))'
# sec01/02: table rows | file | size | source | note |
for m in re.finditer(r'^\|\s*' + fname_re + r'\s*\|\s*([^|]+)\|\s*([^|]+)\|', c, re.M):
f, size, src = m.group(1), m.group(2).strip(), m.group(3).strip()