init commit
This commit is contained in:
261
README.md
Normal file
261
README.md
Normal file
@@ -0,0 +1,261 @@
|
||||
# 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 <your-repo-url>
|
||||
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
|
||||
Reference in New Issue
Block a user