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.4.5.tar.gz (30.8 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.4.5-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: asyncyt-1.4.5.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for asyncyt-1.4.5.tar.gz
Algorithm Hash digest
SHA256 4fcd60215929dc68df3b6d5c279164bb527946ce9fdf1d70f8935981778a04fe
MD5 10b2e86f88d6fac158edc99f618441d8
BLAKE2b-256 ae063e67f6dd7a682495cfd3f782a91f507ce08bb2e213bac61b97fa64a0ca43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncyt-1.4.5-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for asyncyt-1.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3561e016e2d934edb20a3308a6890491a71de44a7eb9c4a5ca0776e666336db9
MD5 c7b61ea6f0843b4bc05bd879e15ba469
BLAKE2b-256 abed560901cf10106e1cba658c6c27103934079e1d30833643a3bb8424571b4f

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