# История изменений — scraper/ ## 001 — 2026-06-06: Начальная структура ### Создано - **scraper/core/** — общий слой, независимый от движка форума - `fetch.py` — HTTP GET с ретраями, автоопределение бана - `throttle.py` — координация задержек между потоками - `output.py` — запись JSONL, ротация по N тем - `state.py` — сохранение/восстановление состояния (пауза/продолжение) - `runner.py` — ThreadPoolExecutor, единый цикл обхода через адаптер - **scraper/forums/base.py** — абстрактный базовый класс адаптера форума - Единый интерфейс: `count_pages()`, `parse_topics()`, `parse_posts()`, `page_url()`, `topic_url()` - **scraper/forums/xenforo/** — адаптер для XenForo (vwts.ru) - `paginate.py` — `/page-N`, `div.pageNav` - `parse.py` — `div.structItem`, `article.message`, `li.tagItem` - `adapter.py` — подстановка параметров - **scraper/forums/phpbb/** — адаптер для phpBB (нива-лада.рф) - `paginate.py` — `?start=N`, `ul.pagination` - `parse.py` — `a.topictitle`, `div.postbody`, `b.postauthor` - `adapter.py` — подстановка параметров - **scraper/__main__.py** — точка входа CLI ### Принципы - `core/` ничего не знает про движок форума — работает через абстракцию `BaseAdapter` - Адаптер реализует только парсинг HTML и формирование URL — никакой логики обхода - Каждый адаптер — отдельный пакет, можно добавить новый движок создав один пакет - Все решения по вёрстке документированы в комментариях перед функциями --- ## 002 — 2026-06-06: Фикс sticky-тем phpBB **Проблема:** В phpBB закреплённые (sticky) темы видны на каждой странице раздела. При многопоточном парсинге (4 workers) все потоки одновременно хватают одну и ту же sticky-тему — скрипт зависает. **Решение:** В `parse_topics()` добавлен фильтр — перед добавлением темы проверяем, есть ли в родительском `` иконка `sticky_read.gif`. Sticky-темы пропускаются (не попадают в список). **Где:** `lada_scraper/parse.py` (на ВМ, через SSH) **Проверено:** sticky #331 и #477 не попадают в выдачу, обычные темы на месте. **Было/стало:** 28 тем → 24 темы на странице (4 sticky отфильтровано). ---