Files
youtube_downloader/.history/README_20250928091647.md
2025-09-28 09:18:03 +09:00

261 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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