# Chess Tournament Pairing Calculator Принимает ссылку на шахматный турнир с chess-results.com и рассчитывает, кто с кем будет играть в следующем туре. ## Использование ### Через Docker ```bash # Сборка 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) ```bash 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 и мобильной версии)