Files
twitchStreamVision/README.md
2026-03-05 10:37:56 +01:00

63 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Twitch Stream Vision Analyzer
Программа в реальном времени анализирует Twitch-стрим: периодически захватывает кадры и отправляет их в Gemini Vision API, получая текстовое описание происходящего.
```
Twitch HLS → streamlink → ffmpeg (кадр каждые N сек) → Gemini Vision API → консоль + лог
```
## Требования
- Python 3.10+
- ffmpeg (установлен в системе)
- API ключ [Google AI Studio](https://aistudio.google.com/apikey)
## Установка
```bash
git clone https://git.animeenigma.ru/NANDI/twitchStreamVision.git
cd twitchStreamVision
pip install -r requirements.txt
```
## Настройка
Скопируй `.env.example` в `.env` и укажи API ключ:
```bash
cp .env.example .env
```
```env
GEMINI_API_KEY=your-api-key-here
# Опционально: Cloudflare AI Gateway
# GEMINI_BASE_URL=https://gateway.ai.cloudflare.com/v1/account/gateway/google-ai-studio
```
## Запуск
```bash
python3 main.py --channel xqc --interval 15 --quality 480p
```
### Аргументы
| Аргумент | По умолчанию | Описание |
|---|---|---|
| `--channel` | (обязательный) | Имя Twitch-канала |
| `--interval` | `15` | Интервал захвата кадров (секунды) |
| `--quality` | `480p` | Качество стрима (`480p`, `720p`, `1080p`, `best`) |
| `--lang` | `ru` | Язык описаний (`ru` / `en`) |
| `--log-file` | `stream_log.txt` | Путь к лог-файлу |
## Как это работает
1. **streamlink** подключается к Twitch-каналу и получает HLS-поток
2. **ffmpeg** извлекает JPEG-кадры с заданным интервалом (без записи на диск)
3. **Gemini Vision API** анализирует каждый кадр и возвращает краткое описание
4. Результат выводится в консоль (через rich) и записывается в лог-файл
Для связности описаний контекст предыдущего ответа передаётся в следующий запрос.
Остановка — `Ctrl+C`.