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
  • 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.2.tar.gz (32.6 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.2-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for asyncyt-1.5.2.tar.gz
Algorithm Hash digest
SHA256 7853b0863a72502c621fd6349529166899a71fcb4daa13701260f9f4aa8d7042
MD5 c9085397ca3c786f9befb55c2905defd
BLAKE2b-256 08c61fa005335fe9fb14b3e10ba5adeb7a2968a4dc5ed2d59577ccf82f4bf1ac

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncyt-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 927c61c860829d430b897497a0710211f16e56b2d52beaf33eeebd2178cbdcd9
MD5 e93c28f929e17a51cad9456aa98f1057
BLAKE2b-256 bd5d0504988a86643f1ae57255142427bba2b7d2ba900fc044e7f58beb0af6cb

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