init commit

This commit is contained in:
2025-09-28 09:18:03 +09:00
commit a8076bc9d0
78 changed files with 11035 additions and 0 deletions

261
README.md Normal file
View 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