Парсер PDF-файла Единого календарного плана мероприятий Министерства спорта России для извлечения данных о мероприятиях за год в формате JSON
Note
Разработано в рамках окружного этапа Чемпионата России по спортивному программированию в дисциплине «программирование продуктовое» командой Код 418 из Донецкой Народной Республики, по итогам соревнований занявшей 2 место среди команд Новых регионов и 3 место в общем зачёте команд России. 🖤💙❤️
- готов к изменению ссылки на файл на странице Минспорта (см. пример страницы, содержащей ссылку / II часть ЕКП / 2024)
- проверяет актуальность файла по HTTP-запросу и, если ссылка на него была обновлена, запускает парсинг
- мгновенно извлекает сырой текст из файла PDF (см. пример файла)
- парсит релевантные данные через самописный алгоритм, основанный на текстовых паттернах и состояниях
- отправляет извлечённые данные на целевой сервер в формате JSON по частям
- Python — язык программирования
- Poetry — пакетный менеджер
- PyMuPDF — высокопроизводительный парсер PDF
- FastAPI — высокопроизводительный веб-фреймворк для создания API
- HTTPX — асинхронный HTTP-клиент
- Uvicorn — высокопроизводительный ASGI сервер
- Ruff — инструмент для форматирования и анализа кода
- Клонируйте репозиторий, перейдите в его папку и создайте в ней файл
.env
на основе.env.template
.
- Установите и настройте Docker.
- Из папки проекта выполните сборку образа:
docker build -t sporthub-parser .
- Теперь запускать проект можно командой:
docker run -it -d -p 3000:3000 sporthub-parser
- Установите Poetry.
- Из папки проекта выполните установку зависимостей:
poetry install
- Теперь запускать проект можно командой:
poetry run python -m src.main