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.1.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.1-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: asyncyt-1.5.1.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.1.tar.gz
Algorithm Hash digest
SHA256 5e9914f9eb2d5f1511516c713a1d03127b71d061ce6efed939ee9f45ea51f3ec
MD5 e78f2e12ab5c3c575fdd67d0ed52956f
BLAKE2b-256 a4a685a36743f280920e8ad686e72c2dfbd2a992222584135a94b78c7e9da5f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncyt-1.5.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25175af4657496f55ee845a285470732feff29efa6b99f8ca2df8554f2a2c288
MD5 2cbb3aabea2d445b90752dcd6c0869b8
BLAKE2b-256 b5cd218d36c414a89ff32f2e101998672775393d004e645b32b82714cd4abd32

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