English / Russian
Small project with one main function - download a video from RuTube(it's a russian copy of YouTube).
- Simple way: Download executable file from Releases.
- Hard way: clone repo, install dependencies(poetry), run
main.py
- 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.
title | description |
---|---|
m3u8 | Used for playlist parsing |
aiohttp | Async http client |
aiofiles | async work with files |
PyInstaller | Create executable files |
- Looks like python installed by UV doesn't provide Tkinter support. So i've switched to poetry and pyenv python version.
- 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()
withloads(m3u8: str)
and download m3u8 async by aiohttp. - timeouts for download.
- Use only one
ClientSession
inDownloader
. - 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