Skip to content

code-418-dpr/SportHub-parser

Repository files navigation

SportHub Parser

license release downloads code size

Ruff linter CodeQL (Python, GH Actions) Docker Build

Один из сервисов проекта SportHub. Парсер PDF-файла Единого календарного плана мероприятий Министерства спорта России для извлечения данных о мероприятиях за год.

Особенности реализации

  • готов к изменению ссылки на файл на странице Минспорта (см. пример страницы, содержащей ссылку / II часть ЕКП / 2025)
  • проверяет актуальность файла по HTTP-запросу и, если ссылка на него была обновлена, запускает парсинг
  • мгновенно извлекает сырой текст из файла PDF (см. пример файла)
  • парсит релевантные данные через самописный алгоритм, основанный на текстовых паттернах и состояниях
  • отправляет извлечённые данные на целевой сервер в формате JSON по частям

Стек

  • Python — язык программирования
  • uv — самый быстрый пакетный менеджер для Python
  • Ruff — быстрый линтер с большим количеством правил
  • Docker — платформа для контейнеризации
  • Seq — сервер для анализа логов и трассировки
  • PyMuPDF — высокопроизводительный парсер PDF
  • FastAPI — веб-фреймворк для создания API
  • HTTPX — асинхронный HTTP-клиент
  • Uvicorn — высокопроизводительный ASGI сервер

Установка и запуск

Warning

Для работы парсера не забудьте запустить сервер-приёмник, на который будут отправляться данные. Запуск парсера осуществляется отправкой пустого POST-запроса на единственный эндпоинт <адрес сервера парсера>/run-parser.

  1. Клонируйте репозиторий и перейдите в его папку.

Посредством Docker

  1. Установите и Docker.
  2. Создайте файл .env на основе .env.template и настройте все описанные там параметры.
  3. Запустите сборку образа:
docker build -t sporthub-parser .
  1. Теперь запускать проект можно командой:
docker run -d --name sporthub-parser-standalone -p 8000:8000 sporthub-parser

Без использования Docker

  1. Установите пакетный менеджер uv одним из способов. Например, для Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. Установите зависимости:
uv sync --frozen --no-dev
  1. Создайте файл .env на основе .env.template и настройте все описанные там параметры.

  2. Теперь запускать проект можно командой:

uv run -m src

Модификация

Если вы планируете модифицировать проект, установите все зависимости:

uv sync

Запустить линтинг кода (и автоисправление некоторых ошибок) можно через Ruff:

uv run ruff check --fix .

About

Парсер PDF-файла ЕКП Минспорта РФ для проекта SportHub

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •