8.6 KiB
8.6 KiB
YouTube Downloader
Мощное приложение для скачивания видео с YouTube с использованием Python и yt-dlp.
🚀 Возможности
- ✅ Скачивание видео в различных разрешениях (360p, 480p, 720p, 1080p, best)
- ✅ Скачивание только аудио в формате MP3/AAC
- ✅ Поддержка плейлистов
- ✅ Пакетная загрузка из файла со списком URL
- ✅ Загрузка нескольких URL через командную строку
- ✅ Продолжение загрузки при ошибках (--continue-on-error)
- ✅ Прогресс-бар загрузки с цветным выводом
- ✅ Настраиваемая конфигурация
- ✅ Валидация URL
- ✅ История загрузок
- ✅ CLI интерфейс с множеством опций
- ✅ Поддержка субтитров
- ✅ Автоматическое исправление ошибок 403/блокировок
📦 Установка
- Клонируйте репозиторий:
git clone <your-repo-url>
cd youtube_downloader
- Установите зависимости:
make install-fresh
# или
pip3 install -r requirements.txt
- Установите ffmpeg (для конвертации аудио):
make install-ffmpeg
# или вручную:
# Ubuntu/Debian: sudo apt install ffmpeg
# macOS: brew install ffmpeg
# Windows: скачайте с https://ffmpeg.org/
🎯 Быстрый старт
# Настройка конфигурации
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
Основные команды:
# Скачать видео в лучшем качестве
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
Пакетная загрузка:
# Создать шаблон файла со списком 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
Конфигурация:
# Настроить параметры по умолчанию
python3 main.py configure --output-dir downloads --video-quality 720p
# Показать текущие настройки
python3 main.py show-config
🔧 Дополнительные утилиты
# Создать шаблон для пакетной загрузки
python3 utils.py template
# Пакетная загрузка из файла
python3 utils.py batch --file urls.txt --quality 720p
# Показать историю загрузок
python3 utils.py history
# Очистить папку загрузок
python3 utils.py clean
🛠 Make команды
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:
{
"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
}
📝 Примеры
Базовое использование в коде:
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
)
Пакетная загрузка:
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, обновите до последней версии:
make update-ytdlp
# или
pip3 install --upgrade yt-dlp
HTTP Error 403: Forbidden
Приложение автоматически использует несколько стратегий обхода блокировок:
- Альтернативные User-Agent заголовки
- Повторные попытки с задержками
- Различные форматы загрузки
- Fallback настройки
Проблемы с ffmpeg
Установите ffmpeg для конвертации аудио:
make install-ffmpeg
# или вручную:
# Ubuntu/Debian: sudo apt install ffmpeg
# macOS: brew install ffmpeg
# Windows: Скачайте с https://ffmpeg.org/
Медленная загрузка
- Попробуйте скачать в более низком качестве:
--quality 480p - Используйте только аудио:
--audio-only - Проверьте интернет соединение
📄 Лицензия
Проект создан для образовательных целей. Соблюдайте условия использования YouTube.
🤝 Вклад в проект
- Форкните репозиторий
- Создайте ветку для новой функции
- Сделайте изменения
- Отправьте Pull Request
Автор: GitHub Copilot
Версия: 1.0.0