Skip to main content

A fully asynchronous media downloader for 1000+ websites, powered by yt-dlp and FFmpeg

Project description

AsyncYT

PyPI - Version Downloads License

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)

📦 Install

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 →

📖 Documentation

👉 Read the Docs

🤝 Contributing

Contributions are welcome! Feel free to open an issue or pull request.

📜 License

MIT © MahiroX36

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncyt-1.5.0.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asyncyt-1.5.0-py3-none-any.whl (32.7 kB view details)

Uploaded Python 3

File details

Details for the file asyncyt-1.5.0.tar.gz.

File metadata

  • Download URL: asyncyt-1.5.0.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for asyncyt-1.5.0.tar.gz
Algorithm Hash digest
SHA256 dac40246f97c24e2693bb90ae52e5016e701ecfb92a1f7bd08f46dfd4730885a
MD5 05e1002d287854968a6b1131e794701f
BLAKE2b-256 0419896dc53d1b2fcec1c2e93b6f7c912f89bf6398da9394cbc9ca5fccbed86d

See more details on using hashes here.

File details

Details for the file asyncyt-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: asyncyt-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 32.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for asyncyt-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6641cfdaea02d7de592745abd23ee29e3778e4bdc83413caa1a9b2253b5665f4
MD5 ac2d08da076855a9dd9c1bfaf4f85fe2
BLAKE2b-256 99e589c2b47427817e7c340ea46c91e8241251efe020e381a091105c0ab53ade

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page