Metadata-Version: 2.3
Name: async_rutube_downloader
Version: 1.3.0
Summary: download video from RuTube
Author: Miron Sadykov
Author-email: MironSadykov@yandex.ru
Requires-Python: >=3.12,<3.13
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Provides-Extra: dev
Requires-Dist: aiofiles (>=24.1.0,<25.0.0)
Requires-Dist: aiohttp (>=3.11.6,<4.0.0)
Requires-Dist: coveralls (>=4.0.1,<5.0.0) ; extra == "dev"
Requires-Dist: customtkinter (>=5.2.2,<6.0.0)
Requires-Dist: m3u8 (>=6.0.0,<7.0.0)
Requires-Dist: pre-commit (>=4.1.0,<5.0.0) ; extra == "dev"
Requires-Dist: pyinstaller (>=6.11.1,<7.0.0) ; extra == "dev"
Requires-Dist: pytest (>=8.3.3,<9.0.0) ; extra == "dev"
Requires-Dist: pytest-asyncio (>=0.24.0,<1.0.0) ; extra == "dev"
Requires-Dist: pytest-cov (>=6.0.0,<7.0.0) ; extra == "dev"
Requires-Dist: pytest-mock (>=3.14.0,<4.0.0) ; extra == "dev"
Requires-Dist: python-slugify (>=8.0.4,<9.0.0)
Requires-Dist: ruff (>=0.7.4,<1.0.0) ; extra == "dev"
Requires-Dist: types-aiofiles (>=24.1.0.20240626,<25.0.0) ; extra == "dev"
Requires-Dist: types-m3u8 (>=6.0.0.20241002,<7.0.0) ; extra == "dev"
Description-Content-Type: text/markdown

[![release](https://img.shields.io/github/release/Reagent992/async_rutube_downloader.svg)](https://github.com/Reagent992/async_rutube_downloader/releases/latest)
[![tests](https://github.com/Reagent992/async_rutube_downloader/actions/workflows/tests.yml/badge.svg)](https://github.com/Reagent992/async_rutube_downloader/actions/workflows/tests.yml)
[![Coverage Status](https://coveralls.io/repos/github/Reagent992/async_rutube_downloader/badge.svg?branch=main)](https://coveralls.io/github/Reagent992/async_rutube_downloader?branch=main)
[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/Reagent992/async_rutube_downloader/total?label=release%20downloads)](https://github.com/Reagent992/async_rutube_downloader/releases/latest)


English / [Russian](./README_RU.md)
# What is it?

Small project with one main function - download a video from RuTube(it's a russian copy of YouTube).

## How to use it?
### UI
- Download executable file from [Releases](https://github.com/Reagent992/async_rutube_downloader/releases/latest).

![screen_cast](screen_cast.gif)

### [Source code](./dev.md)

# About
This project was created for learning purposes and was inspired by a similar synchronous library and a book about async.

## Technical Features
- TKinter UI
- `argparse`(stdlib) CLI
- The honest progress bar shows the actual download progress.
- UI and loading work in different threads.
- UI localization.
- The async version allows you to use the full speed of your internet connection.

# Used libs

| title                                                           | description                      |
| --------------------------------------------------------------- | -------------------------------- |
| [m3u8](https://github.com/globocom/m3u8/)                       | Used for playlist parsing        |
| [aiohttp](https://github.com/aio-libs/aiohttp)                  | Async http client                |
| [aiofiles](https://github.com/Tinche/aiofiles)                  | async work with files            |
| [PyInstaller](https://github.com/pyinstaller/pyinstaller)       | Create executable files          |
| [slugify ](https://github.com/un33k/python-slugify)             | Convert video title to file name |
| [CustomTkinter](https://github.com/TomSchimansky/CustomTkinter) | Better TKinter UI                |

