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

8.6 KiB
Raw Permalink Blame History

YouTube Downloader

Мощное приложение для скачивания видео с YouTube с использованием Python и yt-dlp.

🚀 Возможности

  • Скачивание видео в различных разрешениях (360p, 480p, 720p, 1080p, best)
  • Скачивание только аудио в формате MP3/AAC
  • Поддержка плейлистов
  • Пакетная загрузка из файла со списком URL
  • Загрузка нескольких URL через командную строку
  • Продолжение загрузки при ошибках (--continue-on-error)
  • Прогресс-бар загрузки с цветным выводом
  • Настраиваемая конфигурация
  • Валидация URL
  • История загрузок
  • CLI интерфейс с множеством опций
  • Поддержка субтитров
  • Автоматическое исправление ошибок 403/блокировок

📦 Установка

  1. Клонируйте репозиторий:
git clone <your-repo-url>
cd youtube_downloader
  1. Установите зависимости:
make install-fresh
# или
pip3 install -r requirements.txt
  1. Установите 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.

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Сделайте изменения
  4. Отправьте Pull Request

Автор: GitHub Copilot
Версия: 1.0.0