# YouTube Downloader Мощное приложение для скачивания видео с YouTube с использованием Python и yt-dlp. ## 🚀 Возможности - ✅ Скачивание видео в различных разрешениях (360p, 480p, 720p, 1080p, best) - ✅ Скачивание только аудио в формате MP3/AAC - ✅ Поддержка плейлистов - ✅ **Пакетная загрузка из файла со списком URL** - ✅ **Загрузка нескольких URL через командную строку** - ✅ **Продолжение загрузки при ошибках (--continue-on-error)** - ✅ Прогресс-бар загрузки с цветным выводом - ✅ Настраиваемая конфигурация - ✅ Валидация URL - ✅ История загрузок - ✅ CLI интерфейс с множеством опций - ✅ Поддержка субтитров - ✅ Автоматическое исправление ошибок 403/блокировок ## 📦 Установка 1. Клонируйте репозиторий: ```bash git clone cd youtube_downloader ``` 2. Установите зависимости: ```bash make install-fresh # или pip3 install -r requirements.txt ``` 3. Установите ffmpeg (для конвертации аудио): ```bash make install-ffmpeg # или вручную: # Ubuntu/Debian: sudo apt install ffmpeg # macOS: brew install ffmpeg # Windows: скачайте с https://ffmpeg.org/ ``` ## 🎯 Быстрый старт ```bash # Настройка конфигурации make config # Скачать видео python3 main.py https://www.youtube.com/watch?v=VIDEO_ID # Скачать только аудио python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --audio-only # Скачать плейлист python3 main.py https://www.youtube.com/playlist?list=PLAYLIST_ID --playlist # Пакетная загрузка из файла python3 main.py --batch batch_urls.txt --audio-only # Загрузка нескольких URL python3 main.py --urls URL1 URL2 URL3 --quality 720p ``` ## 📋 Использование CLI ### Основные команды: ```bash # Скачать видео в лучшем качестве python3 main.py https://www.youtube.com/watch?v=VIDEO_ID # Скачать в определенном качестве python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --quality 720p # Скачать только аудио python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --audio-only # Указать папку для загрузки python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --output downloads/ # Скачать плейлист python3 main.py https://www.youtube.com/playlist?list=PLAYLIST_ID --playlist # Показать информацию о видео python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --info # Показать доступные форматы python3 main.py https://www.youtube.com/watch?v=VIDEO_ID --formats ``` ### Пакетная загрузка: ```bash # Создать шаблон файла со списком URL make create-batch-template # Загрузка из файла со списком URL python3 main.py --batch urls.txt --quality 720p --continue-on-error # Загрузка нескольких URL через командную строку python3 main.py --urls URL1 URL2 URL3 --audio-only # Продолжить загрузку при ошибках python3 main.py --batch urls.txt --continue-on-error ``` ### Конфигурация: ```bash # Настроить параметры по умолчанию python3 main.py configure --output-dir downloads --video-quality 720p # Показать текущие настройки python3 main.py show-config ``` ## 🔧 Дополнительные утилиты ```bash # Создать шаблон для пакетной загрузки python3 utils.py template # Пакетная загрузка из файла python3 utils.py batch --file urls.txt --quality 720p # Показать историю загрузок python3 utils.py history # Очистить папку загрузок python3 utils.py clean ``` ## 🛠 Make команды ```bash make install-fresh # Установить с обновлением yt-dlp make install-ffmpeg # Установить ffmpeg для аудио make config # Настроить конфигурацию по умолчанию make show-config # Показать текущие настройки make update-ytdlp # Обновить yt-dlp до последней версии make test # Простой тест валидации URL make demo-info # Информация о тестовом видео make demo-formats # Форматы тестового видео make run-examples # Запустить примеры make clean # Очистить временные файлы make usage # Показать справку по Makefile ``` ## 📁 Структура проекта ``` youtube_downloader/ ├── main.py # Основное CLI приложение ├── downloader.py # Класс загрузчика YouTube ├── config.py # Управление конфигурацией ├── utils.py # Дополнительные утилиты ├── examples.py # Примеры использования ├── requirements.txt # Зависимости Python ├── Makefile # Автоматизация задач ├── README.md # Документация ├── config.json # Файл конфигурации (создается автоматически) └── urls.txt # Шаблон для пакетной загрузки ``` ## ⚙ Конфигурация Настройки сохраняются в `config.json`: ```json { "output_directory": "downloads", "video_quality": "best", "audio_format": "mp3", "video_format": "mp4", "create_subdirs": true, "add_metadata": true, "subtitle_languages": ["ru", "en"], "download_subtitles": false } ``` ## 📝 Примеры ### Базовое использование в коде: ```python from downloader import YouTubeDownloader from config import Config # Создание загрузчика config = Config() downloader = YouTubeDownloader(config) # Загрузка видео success = downloader.download_video( url="https://www.youtube.com/watch?v=VIDEO_ID", quality="720p", audio_only=False ) ``` ### Пакетная загрузка: ```python from utils import BatchDownloader batch = BatchDownloader() batch.download_from_file("urls.txt", quality="best", audio_only=False) ``` ## 🚨 Требования - Python 3.7+ - Интернет соединение - ffmpeg (для конвертации аудио) ## 🔍 Troubleshooting ### Ошибки yt-dlp Если возникают ошибки с yt-dlp, обновите до последней версии: ```bash make update-ytdlp # или pip3 install --upgrade yt-dlp ``` ### HTTP Error 403: Forbidden Приложение автоматически использует несколько стратегий обхода блокировок: - Альтернативные User-Agent заголовки - Повторные попытки с задержками - Различные форматы загрузки - Fallback настройки ### Проблемы с ffmpeg Установите ffmpeg для конвертации аудио: ```bash make install-ffmpeg # или вручную: # Ubuntu/Debian: sudo apt install ffmpeg # macOS: brew install ffmpeg # Windows: Скачайте с https://ffmpeg.org/ ``` ### Медленная загрузка - Попробуйте скачать в более низком качестве: `--quality 480p` - Используйте только аудио: `--audio-only` - Проверьте интернет соединение ## 📄 Лицензия Проект создан для образовательных целей. Соблюдайте условия использования YouTube. ## 🤝 Вклад в проект 1. Форкните репозиторий 2. Создайте ветку для новой функции 3. Сделайте изменения 4. Отправьте Pull Request --- **Автор:** GitHub Copilot **Версия:** 1.0.0