diff --git a/sections/04-pictures/38-ottmann-color-symbolism.md b/sections/04-pictures/38-ottmann-color-symbolism.md index 67e6ccc..aa11ff6 100644 --- a/sections/04-pictures/38-ottmann-color-symbolism.md +++ b/sections/04-pictures/38-ottmann-color-symbolism.md @@ -3,21 +3,29 @@ **Author(s):** Klaus Ottmann (ed.) **Publisher (EN):** Spring Publications, 2005 (VE:E5) **Reading list item(s):** Ottmann -**Status:** ❌ no RU edition found (verified) +**Status:** ✅ RU edition found (castalia.ru, Phase 2b sweep 2026-07-09) ## Russian editions | RU title | Publisher | Year | Pages | Translator | ISBN | |----------|-----------|------|-------|------------|------| -| (none) | | | | | | +| Символизм цвета. Из архивов Эраноса 1972 | Клуб Касталия (М) | (2020s; not in RSL yet) | — | — | 978-5-90811-054-9 | ## RSL records ```json -// rsl.py "Оттманн" — no records; cogito «Оттманн» — nothing; sx — no hits +// rsl.py "Оттманн" / "9785908110549" — no records (Клуб Касталия lags RSL; publisher page is canonical) ``` ## Notes -- K. Ottmann (Eranos lectures on color symbolism, Spring 2005). No RU traces. - (Color symbolism in RU: Lüscher — see #32 — covers the popular side.) +- **FOUND via castalia.ru catalog sweep (Phase 2b).** Product page: + https://castalia.ru/product/simvolizm-tsveta-iz-arhivov-eranosa-1972 — in stock, 1 406 ₽. +- Publisher description: 1972 Ascona Eranos conference on color as deep symbol; the volume + «под редакцией Клауса Оттманна» unites lectures by G. Scholem, H. Corbin, E. Benz and others — + i.e. the SAME editor as the Spring Publications 2005 selection → this is the RU edition of + the Eranos 1972 color lectures (Kastalia's «Из архивов Эраноса» series, direct DE translation). +- (Color symbolism in RU: Lüscher — see #32 — covers the popular side.) +- Castalia «Из архивов Эраноса» series (8 vols): 1935 (vostochno-zapadnyy-simvolizm), 1937 + (formirovanie-idei-spaseniya), 1947 ×2 (chelovek; drevnie-kulty-solntsa), 1972 (tsvet), + mif-i-vechnost, chelovek-i-vremya, vostochno-zapadnaya-simvolika — future-section gold. diff --git a/sections/04-pictures/INDEX.md b/sections/04-pictures/INDEX.md index 2f3333a..a1aae8b 100644 --- a/sections/04-pictures/INDEX.md +++ b/sections/04-pictures/INDEX.md @@ -43,7 +43,7 @@ Status: ⬜ not searched · 🔎 in progress · ✅ found · 🔶 partial · ❌ | 35 | mcniff-integrating-the-arts-in-therapy.md | Integrating the Arts in Therapy | McNiff | ❌ нет (проверено) | | 36 | moon-encyclopedia-of-archetypal-symbolism-vol-1.md | Encyclopedia of Archetypal Symbolism Vol. 1 | Moon | ❌ нет (проверено) | | 37 | neumann-the-archetypal-world-of-henry-moore.md | The Archetypal World of Henry Moore | Neumann | ❌ нет (но его сборник эссе «Искусство и творч. бессознательное» переведён — libgen «Сборник статей» 3449787) | -| 38 | ottmann-color-symbolism.md | Color Symbolism: The Eranos Lectures | Ottmann | ❌ нет (проверено) | +✅ «Символизм цвета. Из архивов Эраноса 1972» (Касталия, ISBN 978-5-90811-054-9) нет (проверено) | | 39 | peiry-art-brut.md | Art Brut | Peiry | ❌ нет (проверено) | ## Notes diff --git a/tools/crw.py b/tools/crw.py new file mode 100644 index 0000000..589f052 --- /dev/null +++ b/tools/crw.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +"""CRW (fastcrw.com) — local Firecrawl-compatible JS renderer. + +Usage: + crw.py # markdown + crw.py --html # raw HTML + crw.py --wait 5000 # waitFor ms for late-loading content + +Endpoint: POST http://localhost:3000/v1/scrape +Payload: {"url": ..., "formats": ["markdown"] | ["html"], "waitFor": ms} + +Use for JS-heavy sites curl can't parse (e.g. soznanie.ast-academy.ru — +rendered fine, it's the Intermodal Art Therapy festival site). +Note: Insales shops (castalia.ru) work with curl (JSON-LD), no CRW needed. +""" +import json +import sys +import urllib.request + + +def scrape(url, fmt="markdown", wait=None, timeout=120): + payload = {"url": url, "formats": [fmt]} + if wait: + payload["waitFor"] = wait + req = urllib.request.Request( + "http://localhost:3000/v1/scrape", + data=json.dumps(payload).encode(), + headers={"Content-Type": "application/json"}, + method="POST", + ) + with urllib.request.urlopen(req, timeout=timeout) as r: + d = json.load(r) + if not d.get("success"): + raise RuntimeError("CRW failed: " + str(d)[:300]) + return d["data"] + + +if __name__ == "__main__": + args = sys.argv[1:] + if not args: + print(__doc__) + sys.exit(1) + url = args[0] + fmt = "html" if "--html" in args else "markdown" + wait = int(args[args.index("--wait") + 1]) if "--wait" in args else None + try: + d = scrape(url, fmt, wait) + print(d.get("markdown") or d.get("html", "")) + except Exception as e: + print("ERROR:", e) + sys.exit(2)