AsyncYT Documentation

PyPI Version Downloads License

Welcome to the AsyncYT documentation! This site provides a comprehensive guide to using AsyncYT, a fully async, high-performance media downloader for 1000+ websites powered by yt-dlp and ffmpeg.

AsyncYT is a fully async, high-performance media downloader for 1000+ websites powered by yt-dlp and ffmpeg.

It comes with auto binary setup, progress tracking, playlist support, search, and clean API models using pydantic.

Features

  • Fully Async Architecture – every operation is non‑blocking and await‑ready

  • 🎥 Video, Audio, and Playlist Support – download any media you throw at it

  • 🌐 Automatic Tool Management – will grab yt-dlp and ffmpeg for you if not installed

  • 🎛 Advanced FFmpeg Configuration – control codecs, bitrates, CRF, presets, and more via strongly‑typed enums

  • 📡 Real‑Time Progress Tracking – both download and FFmpeg processing progress, perfect for UI updates or WebSockets

  • 🧩 Standalone AsyncFFmpeg – use the FFmpeg engine by itself for your own media workflows (no downloading required)

  • 🔍 Media Inspection – get detailed file info (resolution, duration, codecs, etc.) through AsyncFFmpeg.get_file_info()

  • ⚙️ Asynchronous FFmpeg Processing – run FFmpeg jobs with AsyncFFmpeg.process() without blocking your app

  • 🎬 Video & Audio Codec Enums – pick codecs safely with built‑in enums

  • Presets for Performance – quickly switch between ultrafast, fast, medium, and more with type‑safe presets

  • 📚 Inline Documentation – every public method is documented and typed for easy discoverability

  • 🔗 Codec Compatibility Helpers – utilities to check which formats and codecs pair nicely

📋 Requirements

  • Python 3.11+

  • Cross-platform – Windows, macOS, Linux

  • Dependencies: pydantic (auto-installed)

  • Optional: yt-dlp and ffmpeg (auto-downloaded if not present)

📦 Installation

pip install asyncyt

🚀 Quick Start

import asyncio
from asyncyt import AsyncYT, DownloadConfig, Quality

async def main():
    config = DownloadConfig(quality=Quality.HD_720P)
    downloader = AsyncYT()

    try:
        await downloader.setup_binaries()
        info = await downloader.get_video_info("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
        print(f"Downloading: {info.title}")

        filename = await downloader.download(info.url, config)
        print(f"Downloaded to: {filename}")

    except AsyncYTBase as e:  # AsyncYTBase is the base for all exceptions in this library
        print(f"Error: {e}")

asyncio.run(main())

🌐 Supported Sites

AsyncYT supports 1000+ websites through yt-dlp, including:

  • YouTube, YouTube Music

  • Twitch, TikTok, Instagram

  • Twitter, Reddit, Facebook

  • Vimeo, Dailymotion, and many more

See full list of supported sites →

Contents: