215 lines
6.4 KiB
Markdown
215 lines
6.4 KiB
Markdown
# YouTube Downloader
|
||
|
||
Мощное приложение для скачивания видео с YouTube с использованием Python и yt-dlp.
|
||
|
||
## 🚀 Возможности
|
||
|
||
- ✅ Скачивание видео в различных разрешениях (360p, 480p, 720p, 1080p, best)
|
||
- ✅ Скачивание только аудио в формате MP3/AAC
|
||
- ✅ Поддержка плейлистов
|
||
- ✅ Прогресс-бар загрузки с цветным выводом
|
||
- ✅ Настраиваемая конфигурация
|
||
- ✅ Валидация URL
|
||
- ✅ Пакетная загрузка из файла
|
||
- ✅ История загрузок
|
||
- ✅ CLI интерфейс с множеством опций
|
||
- ✅ Поддержка субтитров
|
||
|
||
## 📦 Установка
|
||
|
||
1. Клонируйте репозиторий:
|
||
```bash
|
||
git clone <your-repo-url>
|
||
cd youtube_downloader
|
||
```
|
||
|
||
2. Установите зависимости:
|
||
```bash
|
||
make install
|
||
# или
|
||
pip3 install -r requirements.txt
|
||
```
|
||
|
||
## 🎯 Быстрый старт
|
||
|
||
```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
|
||
```
|
||
|
||
## 📋 Использование 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
|
||
# Настроить параметры по умолчанию
|
||
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 # Установить зависимости
|
||
make config # Настроить конфигурацию по умолчанию
|
||
make show-config # Показать текущие настройки
|
||
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
|
||
pip3 install --upgrade yt-dlp
|
||
```
|
||
|
||
### Проблемы с ffmpeg
|
||
Установите ffmpeg:
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo apt install ffmpeg
|
||
|
||
# macOS
|
||
brew install ffmpeg
|
||
|
||
# Windows
|
||
# Скачайте с https://ffmpeg.org/
|
||
```
|
||
|
||
## 📄 Лицензия
|
||
|
||
Проект создан для образовательных целей. Соблюдайте условия использования YouTube.
|
||
|
||
## 🤝 Вклад в проект
|
||
|
||
1. Форкните репозиторий
|
||
2. Создайте ветку для новой функции
|
||
3. Сделайте изменения
|
||
4. Отправьте Pull Request
|
||
|
||
---
|
||
|
||
**Автор:** GitHub Copilot
|
||
**Версия:** 1.0.0 |