Files
youtube_downloader/examples.py
2025-09-28 09:18:03 +09:00

126 lines
5.1 KiB
Python
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.

#!/usr/bin/env python3
"""
Примеры использования YouTube Downloader
"""
from downloader import YouTubeDownloader
from config import Config
from colorama import Fore, Style
def example_download_video():
"""Пример загрузки одного видео"""
print(f"{Fore.CYAN}=== Пример загрузки видео ==={Style.RESET_ALL}")
# URL тестового видео (короткое видео с YouTube)
url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" # Rick Roll для теста
config = Config()
downloader = YouTubeDownloader(config)
# Получение информации о видео
print(f"{Fore.YELLOW}Получение информации о видео...{Style.RESET_ALL}")
info = downloader.get_video_info(url)
if info:
print(f"Название: {info['title']}")
print(f"Автор: {info['uploader']}")
print(f"Длительность: {info['duration']} сек")
# Показать доступные форматы
print(f"\n{Fore.YELLOW}Доступные форматы:{Style.RESET_ALL}")
formats = downloader.get_available_formats(url)
for fmt in formats[:5]: # Показываем только первые 5 форматов
print(f"{fmt['quality']} ({fmt['ext']})")
return url
def example_download_audio():
"""Пример загрузки только аудио"""
print(f"\n{Fore.CYAN}=== Пример загрузки аудио ==={Style.RESET_ALL}")
url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
config = Config()
downloader = YouTubeDownloader(config)
print("Для загрузки только аудио используйте параметр audio_only=True")
print("Пример: downloader.download_video(url, audio_only=True)")
def show_cli_examples():
"""Показать примеры использования CLI"""
print(f"\n{Fore.CYAN}=== Примеры использования CLI ==={Style.RESET_ALL}")
examples = [
"# Скачать видео в лучшем качестве",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID",
"",
"# Скачать видео в 720p",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID --quality 720p",
"",
"# Скачать только аудио",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID --audio-only",
"",
"# Скачать в определенную папку",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID --output /path/to/downloads/",
"",
"# Скачать плейлист",
"python main.py https://www.youtube.com/playlist?list=PLAYLIST_ID --playlist",
"",
"# Показать информацию о видео",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID --info",
"",
"# Показать доступные форматы",
"python main.py https://www.youtube.com/watch?v=VIDEO_ID --formats",
"",
"# Настроить конфигурацию по умолчанию",
"python main.py configure --output-dir downloads --video-quality 720p",
"",
"# Показать текущие настройки",
"python main.py show-config"
]
for example in examples:
if example.startswith("#"):
print(f"{Fore.GREEN}{example}{Style.RESET_ALL}")
elif example == "":
print()
else:
print(f"{Fore.WHITE}{example}{Style.RESET_ALL}")
def test_url_validation():
"""Тест валидации URL"""
print(f"\n{Fore.CYAN}=== Тест валидации URL ==={Style.RESET_ALL}")
downloader = YouTubeDownloader()
test_urls = [
("https://www.youtube.com/watch?v=dQw4w9WgXcQ", True),
("https://youtu.be/dQw4w9WgXcQ", True),
("https://youtube.com/watch?v=dQw4w9WgXcQ", True),
("https://www.youtube.com/playlist?list=PLrAXtmRdnEQy6nuLMt6VEY", True),
("https://example.com/video", False),
("not_a_url", False),
]
for url, expected in test_urls:
result = downloader.validate_url(url)
status = "" if result == expected else ""
color = Fore.GREEN if result == expected else Fore.RED
print(f"{color}{status} {url} -> {result}{Style.RESET_ALL}")
if __name__ == "__main__":
print(f"{Fore.CYAN}YouTube Downloader - Примеры использования{Style.RESET_ALL}")
print("=" * 60)
# Тест валидации URL
test_url_validation()
# Примеры загрузки
test_url = example_download_video()
example_download_audio()
# Примеры CLI
show_cli_examples()
print(f"\n{Fore.GREEN}Все примеры показаны. Для реальной загрузки используйте main.py{Style.RESET_ALL}")
print(f"{Fore.YELLOW}Для начала работы установите зависимости: pip install -r requirements.txt{Style.RESET_ALL}")