From a6c062344f70f61e29895d851d98ff2e8a02f01b Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Tue, 8 Sep 2026 22:28:09 +0300 Subject: [PATCH] =?UTF-8?q?AGENTS/CONTEXT:=20new=20sources=20(cogito=20per?= =?UTF-8?q?son=20pages,=20livelib=20author=20pages),=20verified=20RU=20edi?= =?UTF-8?q?tions=20(Franz,=20Jaff=C3=A9/Man&HisSymbols,=20L=C3=BCscher,=20?= =?UTF-8?q?Kandinsky,=20Kast,=20Schaverien)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 11 ++++++++++- CONTEXT.md | 27 ++++++++++++++++++++++++--- tools/rsl.py | 16 ++++++++++++++-- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index da1e7fd..126c21e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -77,11 +77,20 @@ sections/0N-/ # one .md per BOOK (chapter-level list items are merged int - en-wiki for the EN bibliography (identity anchor: 3–5 flagship titles). ### 6. livelib.ru author pages — all RU works of a known author -- e.g. `livelib.ru/author/-` lists every RU edition. +- e.g. `livelib.ru/author/-` lists every RU edition (server-rendered, scrapable). +- Author ID: find via SearXNG `site:livelib.ru `. The /search page is JS-only (nope). + +### 7. cogito-shop person pages — shop stock per author +- `cogito-shop.com/person/_/` (transliterated, first-name first, + e.g. `/person/mariya_luiza_fon_frants/`, `/person/yaffe_aniela/`). +- Slug discoverable from the shop's search page (results contain person links) or guessable. +- Lists every edition the shop carries (title variants!). Product pages lack full + metadata in HTML (JS-rendered) — use RSL/livelib for publisher/year/ISBN. ### Not usable / low value - libgen biblioservice worldcat/googlebooks/isbndb/udc (broken on this mirror) - imaton.com (МААП educational publisher, not translations) +- bookmate.com (403 bot protection), gtmarket.ru (JS app, no HTML content) - other libgen mirrors (libgen.lol → error page; .vg works with browser UA) ## Identity check protocol (MANDATORY before trusting a hit) diff --git a/CONTEXT.md b/CONTEXT.md index a5ba95d..82cc77b 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -20,9 +20,30 @@ also «Умирающий пациент в психотерапии. Желания. Сновидения. Индивидуация» (labirint, ISBN 5-89353-170-1). - **Kast, V.** in the reading list = **Verena Kast** («Верена Каст», has RU books, e.g. «Я, которое ищет себя» — litres id 73865487). NOT "Werner Kast". -- **M.-L. von Franz** has a RU «Собрание сочинений» (cogito-shop: toms 1, 3, 6, 8 seen — - «Архетипические символы в волшебных сказках», «Видения Николая из Флюэ и святой Перпетуи», - «Толкование волшебных сказок… том 8»). Number and Time may be inside it — to verify. +- **M.-L. von Franz** RSL name: «Франц, Мария Луиза фон [1915-1998]». RU books (RSL): «Алхимия: введение в символизм и психологию» (Б.С.К. 1997 / Городец 2017), «Толкование волшебных сказок» (ИОИ 2020), «Прорицание и синхрония» (Азбука 2009), «Вечный юноша Puer aeternus» (Класс 2009), «Фемининность в волшебных сказках» (Класс 2010), «Мотив искупления» (Добросвет 2016), «Избавление от колдовства» (Класс 2007), «Феномены Тени и зла» (Класс 2010), «Архетипические паттерны» (Класс 2007), «Кошка» (Класс 2007), «Архетипическое измерение психики» (Касталия 2017). + **Number and Time = «Число и время»** — NOT in RSL as standalone, but sold by cogito-shop + (two entries: «Число и время. Рассуждения, направленные на объединение глубинной психологии + и физики» and «Число и время», both out of stock). Person page: /person/mariya_luiza_fon_frants/. + Also: RU «Собрание сочинений» (cogito: toms 1–3, 6, 8 — «Архетипические символы в волшебных + сказках», «Видения Николая из Флюэ и святой Перпетуи», «Толкование волшебных сказок… том 8»). + РГБ series record: «Франц, Мария Луиза фон — [Труды], СПб: Б.С.К., 1997-____». +- **Jaffé** — RSL surname search pulls many wrong Яффе (Zionist Л.Б. Яффе, painter М.Е. Яффе…); + her relevant RU presence = «Человек и его символы» (below). livelib author id 475269. +- **Man and his Symbols = «Человек и его символы»** — RSL: Серебряные нити/АСТ 1997 (367с., + ISBN 5-89163-003-6, серия «Классики зарубежной психологии», пер. Сиренко С.Н. и др.), + Серебряные нити 2002 (296с., ISBN 5-89613-003-6). Contains Jaffé's visual-arts chapter. +- **Lüscher** RSL name: «Люшер, Макс [1923-2017]». RU: «Цветовой тест Люшера» (ЭКСМО-Пресс 2002, + Эксмо 2004, АСТ/Сова 2005 — пер. А. Никонова), «Какого цвета ваша жизнь» (Hippo 2003), + «Сигналы личности» (МОДЭК 1993), «Анализ конфликтов» (ИМАТОН 2017), «Цвет вашего характера» (РИПОЛ 1997). +- **Kandinsky** — «О духовном в искусстве» editions (RSL): БукСМарт 2020 (полное критическое изд., + 2 т., ред. Н. Подземская, ISBN 978-5-907043-58-9/…59-6), АСТ 2018/2019/2021, Азбука 2020, + Э (Эксмо) 2016/2020, РИПОЛ 2016, Архимед 1992, URSS 2019, Междунар. лит. содружество 1967 (пер. А. Лисовского). +- **Verena Kast** RSL name: «Каст, Верена». RU (RSL): «Отцы — дочери. Матери — сыновья» (2016), + «Сизиф об удержании и отпускании в середине жизни» (2017), «Горевание фазы и возможности + психического процесса» (2017). «Динамика символов» (The Dynamics of Symbols) — NOT in RSL. +- **Schaverien** RSL name: «Шаверен, Джой». RU (RSL): «Умирающий пациент в психотерапии: + желания. Сновидения. Индивидуация» (Когито-Центр 2006, 316с., ISBN 5-89353-170-1, пер. Ю.М. Донца). + «Выявляющий образ» — NOT in RSL (title search 0), but listed on koob.ru as RU book. ## Environment / tooling quirks diff --git a/tools/rsl.py b/tools/rsl.py index c4918e6..58406cb 100644 --- a/tools/rsl.py +++ b/tools/rsl.py @@ -19,18 +19,28 @@ def fetch(url, tries=3): def main(): q = sys.argv[1] - maxpages = int(sys.argv[2]) if len(sys.argv) > 2 else 4 + maxpages = int(sys.argv[2]) if len(sys.argv) > 2 else 2 + seen = set() for page in range(1, maxpages + 1): url = "https://libgen.vg/biblioservice.php?" + urllib.parse.urlencode( {"value": q, "type": "rsl", "format": "json", "page": page}) - d = json.loads(fetch(url)) + try: + d = json.loads(fetch(url)) + except SystemExit: + print("(fetch failed)") + break recs = {k: v for k, v in d.items() if k != "error"} if not recs: if page == 1: print("(no records)") break + new = 0 for k in sorted(recs, key=int): r = recs[k] + if r["id"] in seen: + continue + seen.add(r["id"]) + new += 1 title = " ".join(r.get("title", [])) + ( (" : " + r["title_add"]) if r.get("title_add") else "") author = "; ".join(r.get("author", [])) @@ -43,6 +53,8 @@ def main(): print(f"[{r['id']}] {title}") print(f" {author}") print(f" {city} : {pub}, {year} | {pages} | {isbn}" + (f" | серия: {series}" if series else "")) + if new == 0: + break time.sleep(3) if __name__ == "__main__":