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

View File

@@ -0,0 +1,126 @@
#!/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}")