Skip to content

Latest commit

 

History

History
68 lines (49 loc) · 4 KB

README.md

File metadata and controls

68 lines (49 loc) · 4 KB

SportHub Parser

License: MIT Python versions Poetry Ruff

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

Note

Разработано в рамках окружного этапа Чемпионата России по спортивному программированию в дисциплине «программирование продуктовое» командой Код 418 из Донецкой Народной Республики, по итогам соревнований занявшей 2 место среди команд Новых регионов и 3 место в общем зачёте команд России. 🖤💙❤️

Особенности разработки

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

Стек

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

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

  1. Клонируйте репозиторий, перейдите в его папку и создайте в ней файл .env на основе .env.template.

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

  1. Установите и настройте Docker.
  2. Из папки проекта выполните сборку образа:
docker build -t sporthub-parser .
  1. Теперь запускать проект можно командой:
docker run -it -d -p 3000:3000 sporthub-parser

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

  1. Установите Poetry.
  2. Из папки проекта выполните установку зависимостей:
poetry install
  1. Теперь запускать проект можно командой:
poetry run python -m src.main