# 🚀 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 Проект создан в учебных и практических целях.