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'
This commit is contained in:
commit
cf7fafd2ba
10 changed files with 1093 additions and 0 deletions
56
README.md
Normal file
56
README.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# 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 и мобильной версии)
|
||||
Loading…
Add table
Add a link
Reference in a new issue