Skip to content

Reagent992/async_rutube_downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English / Russian

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?

  • Simple way: Download executable file from Releases.
  • Hard way: clone repo, install dependencies(poetry), run main.py

screen_cast

About

  • This project was created for learning purposes and was inspired by a similar synchronous library and a book about async.
  • The async version allows you to use the full speed of your internet connection.

Used libs

title description
m3u8 Used for playlist parsing
aiohttp Async http client
aiofiles async work with files
PyInstaller Create executable files

Dev notes

  • Looks like python installed by UV doesn't provide Tkinter support. So i've switched to poetry and pyenv python version.

TODO:

  • Make a download stable.
  • basic refactoring.
  • test speed with processing. no improvements.
  • Update Downloader to work with UI.
  • UI by Tkinter. To make a responsive UI - Tkinter should be in main thread, when asyncio event loop should be in separate thread.
  • Check m3u8 didn't make sync connections. link looks like we need swap load() with loads(m3u8: str) and download m3u8 async by aiohttp.
  • timeouts for download.
  • Use only one ClientSession in Downloader.
  • fix "invalid url" with http://
  • long video title breaks UI
  • printable video title and safe-file-name title must be different
  • fix "Unclosed connector"
  • tests
  • add video thumbnail in UI
  • russian ui.
  • cli client("in process" and quality choose.).
  • Mass download support.
  • Cancel download (method and button for ui)
  • Make the UI less ugly.
  • pypi library.
  • shorts support

About

Fast downloader for RuTube with UI

Resources

License

Stars

Watchers

Forks

Languages