Skip to content

Repository files navigation

ReSave

ReSave

Видео, музыка и фото — по ссылке в Telegram.

Открыть @ReSafeBot

Python 3.11+ aiogram 3 Apache 2.0

Возможности · Запуск · Настройки


Ссылка → формат → файл

Пришлите ссылку на публикацию, выберите качество или формат и получите файл в том же чате.

Возможности

Формат Возможности
Видео Выбор разрешения или лучшего качества
Аудио Извлечение MP3
Фото Обложки видео и фотоальбомы TikTok
GIF Конвертация роликов до 30 секунд
Субтитры Обычные и автоматически созданные
Плейлисты Добавление видео в очередь с лимитом
Оформление Rich Messages, цветные кнопки и анимированные эмодзи

YouTube · TikTok · Instagram · X / Twitter · Vimeo · Reddit

И другие источники, поддерживаемые yt-dlp. Доступность зависит от сайта и прав доступа к публикации.

В личном чате доступен выбор формата. В группах бот скачивает автоматически, с ориентиром на 720p.

Команды
Команда Действие
/start Главное меню
/help Инструкция и лимиты
/status Текущие загрузки
/cancel Отмена проверки ссылки и загрузок до отправки
/stats Личная статистика
/admin Управление ботом
/broadcast Рассылка с подтверждением и остановкой
/stats_global Общая статистика

Последние три команды доступны администраторам в личном чате.

Рассылка: пришлите пост → проверьте его точную копию → подтвердите отправку. До отправки пост можно заменить, во время — остановить рассылку. Отчёт отдельно показывает ошибки и сообщения без подтверждения Telegram.

Запуск

Нужны: Python 3.11+, FFmpeg и ffprobe.

git clone https://github.com/ReNothingg/ReSave.git
cd ReSave

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
cp .env.example .env

Вставьте токен бота в .env:

BOT_TOKEN=ваш_токен

Запустите:

.venv/bin/python main.py

Настройки

Все параметры — в .env.example. Относительные пути считаются от корня проекта.

Параметр Назначение
ADMIN_IDS ID администраторов через запятую
MAX_CONCURRENT_DOWNLOADS Параллельные загрузки · по умолчанию 2
MAX_TASKS_PER_USER Задачи одного пользователя · 10
MAX_PLAYLIST_ITEMS Видео из одного плейлиста · 25
MAX_FILE_SIZE Максимальный размер файла в байтах
COOKIES_FILE Файл cookies для публикаций с ограниченным доступом

Лимит очереди пользователя действует и на плейлисты. Фактический размер файла ограничен выбранным Bot API.

Большие файлы: локальный Bot API

Для файлов больше облачного лимита используется локальный Telegram Bot API.

Добавьте в .env:

BOT_API_BASE_URL=http://127.0.0.1:8081
BOT_API_IS_LOCAL=true
BOT_API_USE_FILE_URI=false

TELEGRAM_API_ID=ваш_api_id
TELEGRAM_API_HASH=ваш_api_hash

MAX_FILE_SIZE=2097152000
SEND_AS_DOC_LIMIT=2097152000

Запустите API через Docker, затем бота:

docker compose up -d telegram-bot-api
.venv/bin/python main.py

BOT_API_USE_FILE_URI=true нужен только при общей файловой системе бота и API. Для Docker оставьте false.

Cookies и хранение данных
  • Cookies в формате Netscape — cookies.txt. Бот использует временные копии.
  • Статистика — database.db (SQLite).
  • Временные файлы — temp_downloads/.
  • Очередь и меню хранятся в памяти: после перезапуска незавершённые запросы нужно отправить снова.
Для разработки

Оформление включено по умолчанию: RICH_MESSAGES_ENABLED=true, CUSTOM_EMOJI_ENABLED=true. Эмодзи взяты из набора Telegram Topics и проверены как анимированные. Для их использования нужен Premium у владельца бота либо дополнительный username с Fragment. Если API отклоняет эмодзи, бот сохраняет Rich Messages и цветные кнопки, заменяя иконки на обычные. Для API без Rich Messages предусмотрено HTML-оформление.

.venv/bin/python -m pip install 'ruff>=0.9,<1'
.venv/bin/python -m ruff check .
.venv/bin/python -m compileall -q main.py config.py src
Путь Ответственность
main.py Запуск и сборка сервисов
src/handlers/ Команды, меню и административные действия
src/core/ Очередь, скачивание, обработка и отправка
src/utils/ Форматирование текста и работа с файлами

Основные зависимости закреплены в requirements.txt. После их обновления проверяйте скачивание с нужных сайтов.


About

Telegram-бот для скачивания видео и медиаконтента.

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages