Принимает URL турнира, показывает пары следующего тура в Telegram-формате. - parser.py: парсинг chess-results.com - swiss.py: FIDE Dutch System - display.py: форматирование для Telegram - Docker: docker compose run --rm chess-calc 'URL'
2.3 KiB
2.3 KiB
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'
Как это работает
- Парсит страницу турнира с chess-results.com
- Извлекает положение после последнего тура
- Использует предрассчитанные пары с сайта (chess-results уже показывает следующий тур)
- Выводит таблицу пар в 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 и мобильной версии)