A fully asynchronous media downloader for 1000+ websites, powered by yt-dlp and FFmpeg
Project description
AsyncYT
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-dlpandffmpegfor 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
🤝 Contributing
Contributions are welcome! Feel free to open an issue or pull request.
📜 License
MIT © MahiroX36
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7853b0863a72502c621fd6349529166899a71fcb4daa13701260f9f4aa8d7042
|
|
| MD5 |
c9085397ca3c786f9befb55c2905defd
|
|
| BLAKE2b-256 |
08c61fa005335fe9fb14b3e10ba5adeb7a2968a4dc5ed2d59577ccf82f4bf1ac
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
927c61c860829d430b897497a0710211f16e56b2d52beaf33eeebd2178cbdcd9
|
|
| MD5 |
e93c28f929e17a51cad9456aa98f1057
|
|
| BLAKE2b-256 |
bd5d0504988a86643f1ae57255142427bba2b7d2ba900fc044e7f58beb0af6cb
|