An open API service indexing awesome lists of open source software.

https://github.com/misha-mayskiy/lootbox_analytics

Lootbox Analytics: Your personal dashboard for tracking and analyzing lootbox/gacha opening statistics from popular games. Currently supports Genshin Impact with detailed Pity/luck analysis. (Python, Flask, SQLAlchemy)
https://github.com/misha-mayskiy/lootbox_analytics

chartjs data-visualization flask gacha game-analytics genshin-impact pity-tracker python sqlalchemy statistics

Last synced: 2 months ago
JSON representation

Lootbox Analytics: Your personal dashboard for tracking and analyzing lootbox/gacha opening statistics from popular games. Currently supports Genshin Impact with detailed Pity/luck analysis. (Python, Flask, SQLAlchemy)

Awesome Lists containing this project

README

          

# Lootbox Analytics

**Lootbox Analytics** — это веб-приложение, предназначенное для отслеживания и анализа статистики открытий лутбоксов, кейсов и молитв в популярных онлайн-играх. Пользователи могут импортировать свои данные и получать детальную статистику по своей "удачливости", отслеживать системы гарантий (pity) и многое другое.

На данный момент реализована полная поддержка для игры **Genshin Impact**.

## ✨ Ключевые Возможности

* **Импорт данных из Genshin Impact:** Легкий импорт истории молитв с помощью предоставленного PowerShell скрипта и URL из игры.
* **Детальная статистика по Genshin Impact:**
* Общее количество молитв и распределение по редкости (3★, 4★, 5★).
* Точные Pity-трекеры для 5★ и 4★ артефактов/персонажей для всех основных групп баннеров (ивентовые персонажные, стандартный, оружейный).
* Анализ и отображение статуса 50/50 для ивентовых баннеров персонажей.
* История всех 5★ дропов с указанием pity, на котором они выпали, и статуса 50/50.
* Расширенные показатели "удачливости":
* Процент выигрышей 50/50.
* Средний Pity для получения 5★ предметов.
* Распределение 5★ дропов по зонам Pity (рано, в зоне soft-pity, на hard-pity).
* **Визуализация данных:** Интерактивные графики и диаграммы (распределение редкости, история Pity и т.д.) с использованием Chart.js.
* **Пользовательские аккаунты:** Регистрация, вход (стандартный Email/Password и через Steam OAuth).
* **Персональный дашборд:** Обзор подключенных игр и доступ к статистике.
* **Кастомизируемый интерфейс:** Переключатель между светлой и темной темами оформления с сохранением выбора.
* **API для импорта:** Защищенный API-эндпоинт для импорта данных (в текущей реализации не используется напрямую пользователем, но демонстрирует возможность).

## 🛠️ Использованные Технологии

* **Бэкенд:**
* Python 3.x
* Flask (веб-фреймворк)
* SQLAlchemy (ORM)
* SQLite (база данных на этапе разработки)
* Flask-Login (аутентификация)
* Flask-OpenID / Authlib (для Steam OAuth)
* Flask-Migrate (Alembic для миграций БД)
* Flask-WTF (формы и CSRF-защита)
* **Фронтенд:**
* HTML5, CSS3
* JavaScript (Vanilla JS)
* Chart.js (для графиков)
* Bootstrap 5
* **Инструменты и Другое:**
* Git, GitHub
* PowerShell (для клиентского скрипта импорта Genshin Impact)
* Виртуальное окружение Python (`venv`)
* `requests` (для HTTP-запросов на стороне сервера)

## 🚀 Установка и Запуск Локально

1. **Клонируйте репозиторий:**
```bash
git clone https://github.com/Misha-Mayskiy/lootbox_analytics.git
cd lootbox_analytics
```

2. **Создайте и активируйте виртуальное окружение:**
```bash
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
```

3. **Установите зависимости:**
```bash
pip install -r requirements.txt
```

4. **Настройте переменные окружения:**
* Создайте файл `.env` в корневой директории проекта.
* Скопируйте в него содержимое из примера или добавьте следующие обязательные переменные:
```env
FLASK_APP=run.py # Имя вашего главного запускаемого файла
SECRET_KEY='your_very_secret_random_long_key_for_sessions_and_csrf'
DATABASE_URL='sqlite:///app.db'
STEAM_API_KEY='ВАШ_STEAM_API_KEY'
```
**Примечание:**
* `SECRET_KEY` должен быть действительно случайным и длинным.
* `STEAM_API_KEY` создайте через ваш api_key по ссылке: https://steamcommunity.com/dev/apikey

5. **Примените миграции базы данных:**
```bash
flask db upgrade
```
Это создаст файл базы данных `app.db` (если SQLite) со всеми необходимыми таблицами.

6. **(Опционально, но рекомендуется) Заполните начальные данные:**
* Запустите Flask shell:
```bash
flask shell
```
* Внутри shell выполните команды для добавления поддерживаемых игр и типов лутбоксов (особенно для Genshin Impact):
```python
from app import db
from app.models import Game, LootboxType

# Добавление игры Genshin Impact
genshin = Game.query.filter_by(slug='genshin').first()
if not genshin:
genshin = Game(name='Genshin Impact', slug='genshin')
db.session.add(genshin)
db.session.commit()
print("Игра Genshin Impact добавлена.")

# Добавление типов лутбоксов для Genshin
if genshin:
lootbox_types_data = [
{'game_specific_id': '100', 'name': 'Баннер новичка'},
{'game_specific_id': '200', 'name': 'Стандартный баннер'},
{'game_specific_id': '301', 'name': 'Ивентовый баннер персонажа'},
{'game_specific_id': '400', 'name': 'Ивентовый баннер персонажа (параллельный)'},
{'game_specific_id': '302', 'name': 'Баннер оружия (Воплощение божества)'}
]
for lt_data in lootbox_types_data:
existing_lt = LootboxType.query.filter_by(game_id=genshin.id, game_specific_id=lt_data['game_specific_id']).first()
if not existing_lt:
new_lt = LootboxType(game_id=genshin.id, game_specific_id=lt_data['game_specific_id'], name=lt_data['name'])
db.session.add(new_lt)
db.session.commit()
print("Типы лутбоксов для Genshin Impact добавлены/проверены.")
exit()
```

7. **Запустите Flask development server:**
```bash
flask run
```
Или если используете `run.py`:
```bash
python run.py
```
Приложение будет доступно по адресу `http://127.0.0.1:5000/`.

## 📖 Как Пользоваться

1. **Регистрация/Вход:**
* Зарегистрируйтесь, используя Email и пароль, или войдите через Steam.
* При обычной регистрации для вас будет автоматически сгенерирован API-ключ (отображается в Дашборде), который ранее предназначался для прямого импорта скриптом, но в текущей реализации импорт Genshin происходит через вставку URL.

2. **Импорт Данных Genshin Impact:**
* Перейдите в Дашборд, затем на страницу "Импорт Genshin".
* Следуйте инструкциям на странице:
1. Откройте Genshin Impact на ПК и зайдите в историю молитв.
2. Скопируйте предоставленную команду PowerShell.
3. Вставьте и выполните команду в окне Windows PowerShell. Ссылка на вашу историю молитв будет скопирована в буфер обмена.
4. Вернитесь на сайт и вставьте эту ссылку в текстовое поле.
5. Нажмите "Импортировать данные".
* Сервер обработает вашу историю и сохранит данные.

3. **Просмотр Статистики:**
* После импорта перейдите на страницу статистики Genshin Impact из Дашборда.
* Изучайте свои Pity, шансы, историю дропов и другие показатели удачливости, представленные в текстовом виде и на графиках.

4. **Переключение Темы:**
* Используйте переключатель в навигационной панели для выбора между светлой и темной темой оформления. Ваш выбор будет сохранен.

## 🛣️ Планы на Будущее

* Поддержка других игр (CS2, Honkai: Star Rail, Hearthstone и др.).
* Реализация ROI-аналитики для игр с рыночной стоимостью предметов (например, CS2).
* Более продвинутые метрики "Удачи" (например, Z-score).
* Симуляторы открытия лутбоксов (Monte-Carlo).
* Общий "Индекс Удачи" пользователя по всем играм.
* Социальные функции: сравнение статистики с друзьями, публичные анонимные рейтинги.
* Улучшенное отслеживание Epitomized Path для оружейного баннера Genshin Impact.

## Авторы
Проект разработан @Misha-Mayskiy.

Специальная благодарность моему AI-ассистенту Gemini за помощь в брейншторме и решении технических вопросов.

## 📄 Лицензия

Этот проект распространяется под лицензией GPL-3.0. Подробнее см. файл `LICENSE`.