ChessCalcNextTour/README.md
Roman Vrubel cf7fafd2ba chessCalc: парсер chess-results.com + FIDE Swiss + Docker
Принимает URL турнира, показывает пары следующего тура в Telegram-формате.
- parser.py: парсинг chess-results.com
- swiss.py: FIDE Dutch System
- display.py: форматирование для Telegram
- Docker: docker compose run --rm chess-calc 'URL'
2026-06-14 13:57:32 +00:00

2.3 KiB
Raw Blame History

Chess Tournament Pairing Calculator

Принимает ссылку на шахматный турнир с chess-results.com и рассчитывает, кто с кем будет играть в следующем туре.

Использование

Через Docker

# Сборка
docker compose build

# Расчёт следующего тура
docker compose run --rm chess-calc 'https://chess-results.com/tnr1393124.aspx?lan=11&art=2&rd=3&turdet=YES'

# Показать положение после последнего тура
docker compose run --rm chess-calc --standings 'https://chess-results.com/tnr1393124.aspx?lan=11&art=2&rd=3&turdet=YES'

# Показать конкретного игрока
docker compose run --rm chess-calc --player 5 'https://chess-results.com/tnr1393124.aspx?lan=11&art=2&rd=3&turdet=YES'

Напрямую (без Docker)

cd chessCalc
uv venv && uv pip install -r requirements.txt
python3 -m swiss_calc 'https://chess-results.com/tnr1393124.aspx?lan=11&art=2&rd=3&turdet=YES'

Как это работает

  1. Парсит страницу турнира с chess-results.com
  2. Извлекает положение после последнего тура
  3. Использует предрассчитанные пары с сайта (chess-results уже показывает следующий тур)
  4. Выводит таблицу пар в Telegram-friendly формате

Формат вывода

**Название турнира**
📋 **Тур 4** — пары

  1. Иванов 🏳️  —  Петров  (3.0/3.0)
  2. Сидоров 🏳️  —  Смирнов  (2.5/2.5)
  ...

Всего пар: 23

Технические детали

  • Парсер: BeautifulSoup4 — вытаскивает данные из HTML chess-results.com
  • Расчёт: использует предвычисленные пары с сайта (Swiss-Manager)
  • Дополнительно: реализован базовый Swiss-system алгоритм для случая, если сайт не показывает следующий тур
  • Форматирование: Telegram Markdown (поддерживается в Telegram Desktop и мобильной версии)