Stock Prices
Генератор MP4-видео с анимированными рыночными графиками. Можно запустить из CLI, встроить через Python API или держать постоянно работающего Telegram-бота в Docker или открыть Mini App для сборки запроса кнопками.
Что получится¶
Быстрый старт¶
Выберите вход, который нужен прямо сейчас. Для постоянного Telegram-бота удобнее Docker; для локальной проверки быстрее CLI.
copy .env.example .env
# Заполните TELEGRAM_BOT_TOKEN в .env
docker compose up -d --build
docker compose ps
После запуска откройте Telegram и отправьте боту /start.
python -m pip install -e .
python -m stock_prices --tickers "SBER|stock|shares" "LKOH|stock|shares" --start_date 2020-01-01 --end_date 2024-12-31 --currency RUB --duration 20 --fps 20
Готовый MP4 появится в animations/.
/start
/app
/shoot
/shorts
/shorts SBER LKOH за год
/queue
Бот не использует LLM: /app открывает Mini App, /shorts принимает ручной запрос, random и недельный план собираются из тикерной вселенной, а запрос с тикерами ставит в очередь конкретный ролик.
Куда идти дальше¶
Telegram без перегруза¶
| Хочу | Что отправить |
|---|---|
| Открыть Mini App | /app, затем кнопка Открыть Mini App |
| Открыть меню | /start или /menu |
| Случайная подборка | random mixed 1, random mixed 3, random drama 2, random stocks 2 |
| Недельный план | plan drama 5 days 2 tickers |
| Снять ролик по тикерам | /shorts SBER LKOH за год |
| Проверить рендер | /queue, статус или кнопка Очередь |
| Открыть справку | /help |
Обычные строки вроде LKOH, SBER LKOH 2020 2024 и AAPL global USD shorts тоже работают. Несколько роликов можно отправить одним сообщением: один запрос на строку.
Полный справочник лежит в разделе Telegram-запросы.
Как устроено¶
flowchart TD
User["Telegram / CLI / Python API"] --> Request["VideoRequest"]
Request --> Sources{"Источник данных"}
Sources --> Moex["MOEX: акции, фьючерсы, валюта"]
Sources --> Global["Yahoo Finance: акции, ETF, металлы, крипто"]
Moex --> Dataset["Единый датасет"]
Global --> Dataset
Dataset --> Render["Matplotlib renderer"]
Render --> Video["MP4 через ffmpeg"]
Video --> Output["Файл или ответ Telegram"]