asyncyt


Nameasyncyt JSON
Version 1.4.0 PyPI version JSON
download
home_pageNone
SummaryA fully asynchronous media downloader for 1000+ websites, powered by yt-dlp and FFmpeg
upload_time2025-07-28 06:10:38
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseMIT
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

![PyPI - Version](https://img.shields.io/pypi/v/asyncyt?style=for-the-badge)
![Downloads](https://img.shields.io/pypi/dm/asyncyt?style=for-the-badge)
![License](https://img.shields.io/pypi/l/asyncyt?style=for-the-badge)

**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![PyPI - Version](https://img.shields.io/pypi/v/asyncyt?style=for-the-badge)\n![Downloads](https://img.shields.io/pypi/dm/asyncyt?style=for-the-badge)\n![License](https://img.shields.io/pypi/l/asyncyt?style=for-the-badge)\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"
}
        
Elapsed time: 1.60487s