Name | asyncyt JSON |
Version |
1.4.0
JSON |
| download |
home_page | None |
Summary | A fully asynchronous media downloader for 1000+ websites, powered by yt-dlp and FFmpeg |
upload_time | 2025-07-28 06:10:38 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.11 |
license | MIT |
keywords |
async
downloader
ffmpeg
python
youtube
yt-dlp
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# AsyncYT



**AsyncYT** is a fully async, high-performance media downloader for 1000+ websites powered by [yt-dlp](https://github.com/yt-dlp/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
```bash
pip install asyncyt
```
## 🚀 Quick Start
```py
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 →](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)
## 📖 Documentation
👉 [Read the Docs](https://github.com/mahirox36/AsyncYT/wiki)
## 🤝 Contributing
Contributions are welcome! Feel free to open an issue or pull request.
## 📜 License
MIT © **MahiroX36**
Raw data
{
"_id": null,
"home_page": null,
"name": "asyncyt",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "async, downloader, ffmpeg, python, youtube, yt-dlp",
"author": null,
"author_email": "MahiroX36 <mahiroc36@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/c6/ed/3757415694aab7d09e425f6b0194f9b6f5f48b20d64ea8b4195098510749/asyncyt-1.4.0.tar.gz",
"platform": null,
"description": "# AsyncYT\n\n\n\n\n\n**AsyncYT** is a fully async, high-performance media downloader for 1000+ websites powered by [yt-dlp](https://github.com/yt-dlp/yt-dlp) and `ffmpeg`. \nIt comes with auto binary setup, progress tracking, playlist support, search, and clean API models using `pydantic`.\n\n## \u2728 Features\n\n- \u2705 **Fully Async Architecture** \u2013 every operation is non\u2011blocking and `await`\u2011ready.\n- \ud83c\udfa5 **Video, Audio, and Playlist Support** \u2013 download any media you throw at it.\n- \ud83c\udf10 **Automatic Tool Management** \u2013 will grab `yt-dlp` and `ffmpeg` for you if not installed.\n- \ud83c\udf9b **Advanced FFmpeg Configuration** \u2013 control codecs, bitrates, CRF, presets, and more via strongly\u2011typed enums.\n- \ud83d\udce1 **Real\u2011Time Progress Tracking** \u2013 both download and FFmpeg processing progress, perfect for UI updates or WebSockets.\n- \ud83e\udde9 **Standalone AsyncFFmpeg** \u2013 use the FFmpeg engine by itself for your own media workflows (no downloading required).\n- \ud83d\udd0d **Media Inspection** \u2013 get detailed file info (resolution, duration, codecs, etc.) through `AsyncFFmpeg.get_file_info()`.\n- \u2699\ufe0f **Asynchronous FFmpeg Processing** \u2013 run FFmpeg jobs with `AsyncFFmpeg.process()` without blocking your app.\n- \ud83c\udfac **Video & Audio Codec Enums** \u2013 pick codecs safely with built\u2011in enums.\n- \u26a1 **Presets for Performance** \u2013 quickly switch between `ultrafast`, `fast`, `medium`, and more with type\u2011safe presets.\n- \ud83d\udcda **Inline Documentation** \u2013 every public method is documented and typed for easy discoverability.\n- \ud83d\udd17 **Codec Compatibility Helpers** \u2013 utilities to check which formats and codecs pair nicely.\n\n## \ud83d\udccb Requirements\n\n- Python 3.11+\n- Cross-platform \u2013 Windows, macOS, Linux\n- Dependencies: pydantic (auto-installed)\n- Optional: yt-dlp and ffmpeg (auto-downloaded if not present)\n\n## \ud83d\udce6 Install\n\n```bash\npip install asyncyt\n```\n\n## \ud83d\ude80 Quick Start\n\n```py\nimport asyncio\nfrom asyncyt import AsyncYT, DownloadConfig, Quality\n\nasync def main():\n config = DownloadConfig(quality=Quality.HD_720P)\n downloader = AsyncYT()\n\n try:\n await downloader.setup_binaries()\n info = await downloader.get_video_info(\"https://www.youtube.com/watch?v=dQw4w9WgXcQ\")\n print(f\"Downloading: {info.title}\")\n filename = await downloader.download(info.url, config)\n print(f\"Downloaded to: {filename}\")\n except AsyncYTBase as e: # AsyncYTBase is the base for all exceptions in this library\"\n print(f\"Error: {e}\")\n\nasyncio.run(main())\n```\n\n## \ud83c\udf10 Supported Sites\n\nAsyncYT supports **1000+ websites** through yt-dlp, including:\n\n- YouTube, YouTube Music\n- Twitch, TikTok, Instagram\n- Twitter, Reddit, Facebook\n- Vimeo, Dailymotion, and many more\n\n[See full list of supported sites \u2192](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)\n\n## \ud83d\udcd6 Documentation\n\n\ud83d\udc49 [Read the Docs](https://github.com/mahirox36/AsyncYT/wiki)\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Feel free to open an issue or pull request.\n\n## \ud83d\udcdc License\n\nMIT \u00a9 **MahiroX36**\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A fully asynchronous media downloader for 1000+ websites, powered by yt-dlp and FFmpeg",
"version": "1.4.0",
"project_urls": {
"Documentation": "https://github.com/mahirox36/AsyncYT/wiki",
"Homepage": "https://github.com/mahirox36/AsyncYT"
},
"split_keywords": [
"async",
" downloader",
" ffmpeg",
" python",
" youtube",
" yt-dlp"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "341007f4ae70ebec4b01a96e7ab1b32e68a23f6261ac837e00abfc386f8e5609",
"md5": "139ad1160c9ecc3abd6cf0e9434c42ee",
"sha256": "155c66faacd470bb6b0c50398b659b62819ce846dfc89245de5d93411d5a020b"
},
"downloads": -1,
"filename": "asyncyt-1.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "139ad1160c9ecc3abd6cf0e9434c42ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 27808,
"upload_time": "2025-07-28T06:10:37",
"upload_time_iso_8601": "2025-07-28T06:10:37.351953Z",
"url": "https://files.pythonhosted.org/packages/34/10/07f4ae70ebec4b01a96e7ab1b32e68a23f6261ac837e00abfc386f8e5609/asyncyt-1.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c6ed3757415694aab7d09e425f6b0194f9b6f5f48b20d64ea8b4195098510749",
"md5": "9784a51ef2755e17f886b87b452bd9a8",
"sha256": "4443684c4f843e2ac35bb4383809de6fe1a7d8dc983d97dc9021c2565448c805"
},
"downloads": -1,
"filename": "asyncyt-1.4.0.tar.gz",
"has_sig": false,
"md5_digest": "9784a51ef2755e17f886b87b452bd9a8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 25541,
"upload_time": "2025-07-28T06:10:38",
"upload_time_iso_8601": "2025-07-28T06:10:38.245062Z",
"url": "https://files.pythonhosted.org/packages/c6/ed/3757415694aab7d09e425f6b0194f9b6f5f48b20d64ea8b4195098510749/asyncyt-1.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-28 06:10:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mahirox36",
"github_project": "AsyncYT",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "asyncyt"
}