Отвечает на "неужели больше нет библиотек" — добавлен четвёртый источник. PMC Open Access Subset (NCBI E-utilities) — крупнейший биомедицинский открытый архив, бесплатный API без обязательного ключа (NCBI_API_KEY — опционально, поднимает лимит 3→10 запросов/сек). В отличие от остальных источников отдаёт РЕАЛЬНЫЙ полный текст статьи (bodyJATS XML) прямо в ответе efetch — 17-53К символов на статью в проверке вживую, не аннотацию и не 700-символьный OCR- фрагмент. Никаких новых зависимостей — xml.etree.ElementTree (stdlib) + httpx, по образцу arxiv.py. - scripts/parsers/pmc.py: esearch (open access[filter]) → efetch (батчи по 20, JATS XML) → плоские словари → unified schema. Год-фильтр, свой User-Agent. - Зарегистрирован в index.run_parser (services/worker-indexer/app/tasks/index.py) и в CLI run_parser.py — доступен как source_type="pmc" наравне с остальными. - 7 юнит-тестов на реальных JATS XML-фрагментах (без сети): извлечение полей, фильтр contrib-type=author (не editor), пустой/битый XML, батч из 2 статей. Рассмотрены и НЕ добавлены: Semantic Scholar (общий rate-limit исчерпан без API-ключа, ключ — самостоятельная регистрация юзера) и CORE.ac.uk (обязателен ключ). Google Scholar/ResearchGate — намеренно не трогаем, скрейпинг нарушает ToS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.1 KiB
3.1 KiB