|
All checks were successful
CI/CD Pipeline / build-and-deploy (push) Successful in 13s
A bare mutex around games/user and user/activity wasn't enough: Lichess kept rejecting the shared LICHESS_APP_TOKEN with 429 "Please only run 1 request(s) at a time" even when calls were strictly sequential with only ~100-300ms between one finishing and the next starting (confirmed live on prod: near every request was getting 429'd right after the previous mutex fix went out). Track the last release time and force a minimum 6s gap before the next call is allowed to start. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| API_DOCUMENTATION.md | ||
| Dockerfile | ||
| lichess_client.py | ||
| main.py | ||
| models.py | ||
| rate_limiter.py | ||
| README.md | ||
| requirements.txt | ||
| stats_service.py | ||
Lichess Statistics API
REST API сервис для получения статистики игроков Lichess.org по играм и решению задач.
Возможности
- Получение статистики за сегодняшний день
- Получение статистики за вчерашний день
- Получение статистики за последние 7 дней
- Поддержка режимов игры: Bullet, Blitz, Rapid
- Статистика по решению задач (пазлов)
- Расчет изменения рейтинга
- Подсчет побед, поражений и ничьих
Запуск с Docker
1. Сборка и запуск контейнера
# Сборка образа
docker-compose build
# Запуск сервиса
docker-compose up -d
2. Проверка работы
Сервис будет доступен по адресу: http://localhost:8000
- Документация API: http://localhost:8000/docs
- Проверка здоровья: http://localhost:8000/health
API Endpoints
Получить статистику за сегодня
GET /stats/{username}/today
Получить статистику за вчера
GET /stats/{username}/yesterday
Получить статистику за неделю
GET /stats/{username}/week
Примеры использования
Статистика за сегодня
curl http://localhost:8000/stats/vrubelroman/today
Статистика за вчера
curl http://localhost:8000/stats/vrubelroman/yesterday
Статистика за неделю
curl http://localhost:8000/stats/vrubelroman/week
Формат ответа
{
"message": "Статистика за сегодняшний день",
"data": {
"username": "vrubelroman",
"tasks": {
"total": 28,
"solved": 25,
"unsolved": 3
},
"games": {
"bullet": {
"games_played": 7,
"rating_change": 30,
"final_rating": 2320,
"wins": 5,
"losses": 0,
"draws": 0
},
"blitz": {
"games_played": 5,
"rating_change": 32,
"final_rating": 2224,
"wins": 5,
"losses": 0,
"draws": 0
},
"rapid": {
"games_played": 2,
"rating_change": -10,
"final_rating": 2210,
"wins": 1,
"losses": 1,
"draws": 0
}
}
}
}
Остановка сервиса
docker-compose down
Логи
Для просмотра логов:
docker-compose logs -f