71 lines
4.4 KiB
Markdown
71 lines
4.4 KiB
Markdown
# 🚀 DownloadSM 2.0 — Telegram Media Downloader
|
||
|
||
Telegram-бот для скачивания видео и аудио из различных источников (YouTube, TikTok, Instagram и др.) с поддержкой локального API, кэширования и автоматического сжатия.
|
||
|
||
## ✨ Особенности
|
||
- **Высокое качество:** Выбор качества видео (720p, 1080p и т.д.).
|
||
- **Конвертация в MP3:** Быстрое извлечение аудиодорожки.
|
||
- **Smart Compression:** Автоматическое сжатие видео через `FFmpeg`, если файл слишком тяжелый.
|
||
- **Local Telegram API:** Поддержка отправки файлов размером до 2 ГБ через локальный сервер API.
|
||
- **Кэширование:** Повторные запросы одной и той же ссылки обрабатываются мгновенно.
|
||
- **Dockerized Setup:** Простая установка и запуск всего стека через `docker-compose`.
|
||
|
||
## 🛠 Технологии
|
||
- [Python 3.11+](www.python.org)
|
||
- [Aiogram 3.x](docs.aiogram.dev) (Telegram Bot Framework)
|
||
- [yt-dlp](github.com) (Ядро загрузчика)
|
||
- [FFmpeg](ffmpeg.org) (Для обработки и сжатия медиа)
|
||
- [Docker](www.docker.com) & `docker-compose.yml` (Оркестрация)
|
||
- [WireGuard](www.wireguard.com) (VPN-туннель для локального API)
|
||
|
||
## 🔑 Получение `API_ID` и `API_HASH`
|
||
|
||
Для работы локального сервера Telegram API (который позволяет скачивать файлы размером >50 МБ) вам потребуются специальные ключи: `TELEGRAM_API_ID` и `TELEGRAM_API_HASH`.
|
||
|
||
1. **Авторизуйтесь** в своем аккаунте Telegram через веб-интерфейс: перейдите по ссылке [https://my.telegram.org](https://my.telegram.org).
|
||
2. Перейдите в раздел **"API development tools"** (Инструменты разработки API).
|
||
3. Заполните форму для создания нового приложения (App title, Short name могут быть любыми, например, "DownloadBot", "DSMBot"). Для поля Platform можете выбрать "Other" или "Desktop".
|
||
4. Нажмите **"Create application"**.
|
||
5. На открывшейся странице вы увидите сгенерированные значения `App api_id` и `App api_hash`. Скопируйте их.
|
||
6. Вставьте эти значения в ваш файл **`.env`** в корне проекта.
|
||
|
||
```dotenv
|
||
TELEGRAM_API_ID=ВАШ_СКОПИРОВАННЫЙ_ID
|
||
TELEGRAM_API_HASH=ВАШ_СКОПИРОВАННЫЙ_ХЭШ
|
||
```
|
||
|
||
|
||
🚀 Быстрый старт (Рекомендуемый способ)
|
||
Для запуска всех трех сервисов (VPN, Telegram API Server, Бот) используйте Docker Compose.
|
||
1. Клонирование репозитория
|
||
```bash
|
||
git clone github.com
|
||
cd DownloadSM_2.0
|
||
````
|
||
2. Настройка `.env` файла
|
||
```bash
|
||
cp .env.example .env
|
||
````
|
||
3. Запуск сервисов
|
||
```bash
|
||
docker compose up -d --build
|
||
````
|
||
Эта команда соберет образ бота, запустит контейнеры и свяжет их между собой через VPN-туннель.
|
||
4. Проверка
|
||
Вы можете проверить статус контейнеров командой:
|
||
```bash
|
||
docker compose ps
|
||
````
|
||
⚙️ Использование (После запуска)
|
||
Просто отправьте боту ссылку на поддерживаемый медиа-ресурс (YouTube, TikTok и т.д.), и он предложит выбрать формат загрузки.
|
||
📂 Структура проекта
|
||
main.py — Точка входа и логика хэндлеров.
|
||
downloader.py — Логика взаимодействия с yt-dlp.
|
||
info.py — Извлечение метаданных видео.
|
||
cache.py — Управление кэшированными файлами.
|
||
keyboards.py — Интерактивные меню бота.
|
||
🤝 Контакты
|
||
Автор: @smolkik-code
|
||
Проект создан в учебных и практических целях.
|
||
|