- Скачивает видео по ссылке с популярных платформ через
yt-dlp. - Работает в
inline-режиме (можно отправлять ссылку прямо из поля ввода). - Поддерживает работу в группах.
- Грузит видео в фоне и отправляет результат по готовности.
- Использует очередь и ограничения на пользователя.
- Хранит статистику в SQLite и автоматически мигрирует старый
user_stats.json. - Поддерживает админ-команды и базовую статистику.
pip install -r requirements.txtСкопируйте .env.example в .env и заполните нужные значения:
BOT_TOKEN=ваш_токен_бота
ADMIN_IDS=123456789
VIP_USERS=Если нужны авторизованные источники, добавьте cookies в cookies.txt.
python main.pyОсновные параметры находятся в config.py:
| Параметр | Назначение |
|---|---|
BOT_TOKEN |
Токен Telegram-бота (читается из .env) |
ADMIN_IDS, VIP_USERS |
ID админов и VIP-пользователей |
TEMP_DIR |
Временная директория для загрузок |
STATS_DB_PATH |
SQLite-файл со статистикой |
MAX_CONCURRENT_DOWNLOADS |
Лимит одновременных загрузок |
MAX_DOWNLOADS_PER_USER |
Лимит активных загрузок на пользователя |
MAX_FILE_SIZE, SEND_AS_DOC_LIMIT |
Ограничения по размеру и порог отправки как документа |
MAX_VIDEO_DURATION_FREE, MAX_VIDEO_DURATION_PREMIUM |
Лимит длительности для free/premium |
MAX_PLAYLIST_ITEMS_FREE, MAX_PLAYLIST_ITEMS_PREMIUM |
Лимит элементов плейлиста для free/premium |
LOG_LEVEL |
Уровень логирования (INFO, DEBUG, ...) |
main.py- точка входа.src/- основная логика приложения.tests/- автоматические тесты.temp_downloads/- временные загруженные файлы.cookies.txt- cookies дляyt-dlp.database.db- SQLite-база со статистикой.bot.log- локальные логи.
python -m unittest discover -s tests -vВ репозитории также настроен GitHub Actions workflow CI, который компилирует исходники и запускает тесты на каждый push и pull request.
sudo systemctl start resave
sudo systemctl status resaveПолезные команды:
sudo systemctl restart resave
journalctl -u resave -f
sudo systemctl enable resave- Если
ffmpegне установлен, часть медиавозможностей может быть недоступна. - Бот больше не устанавливает зависимости на лету: перед запуском нужно явно выполнить
pip install -r requirements.txt. - Обычные плейлисты ставятся в очередь автоматически в среднем качестве, если пользователь укладывается в лимиты.
