Раньше это были четыре .bat-файла, которые приходилось править блокнотом.
Теперь одно приложение на четырёх платформах — и ставить к нему ничего не нужно.
Полное описание, скриншоты и решение проблем — на сайте проекта. Готовые сборки — на странице релизов.
| Система | Файл | Требования |
|---|---|---|
| Windows | *-windows-x64.exe |
10 и новее, один файл |
| Linux | *-linux-x64.tar.gz |
Ubuntu 20.04+, Debian 11+ |
| macOS | *-macos-universal.zip |
11 и новее |
| Android | *-android-arm64-v8a.apk |
6.0 и новее |
Четыре режима: Best, 1080p, 720p и MP3 с обложкой.
Это не баги, а вещи, которые обойти нельзя.
Windows 7 и 8.1 не поддерживаются. Движок yt-dlp требует Python 3.10+, а он на эти системы не ставится. Официальные сборки yt-dlp тоже давно требуют Windows 10.
ffmpeg обязателен для видео. YouTube отдаёт картинку и звук раздельными потоками — проверено на живом ролике: 32 потока без звука, 11 без картинки, ни одного совмещённого. Во все сборки, включая Android, ffmpeg и QuickJS уже вшиты — ставить ничего не нужно.
На Android есть APK только под arm64 и arm32. Под x86_64 бинарники для телефона не кладутся, поэтому в эмуляторе склейка и MP3 не работают. На настоящих телефонах это не мешает: там почти всегда arm64.
git clone https://github.com/Ratio0-sys/Downloader3000.git
cd Downloader3000
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux / macOS
pip install -e "src[dev]"
python tools/fetch_quickjs.py
python src/main.py
# Windows — через PyInstaller, один самодостаточный файл
flet pack src/main.py --name Downloader3000 --icon tools/app.ico \
--distpath build_exe --add-data "src/assets;assets" \
"--pyinstaller-build-args=--collect-all=imageio_ffmpeg" -y
flet build apk src --split-per-abi
flet build linux src
flet build macos src
Windows собирается через flet pack, а не flet build windows: второй
требует Visual Studio с компонентом C++. Все четыре платформы разом
собирает workflow.
docs/ сайт проекта и скриншоты
src/ код приложения
├── app/theme.py палитры и размеры
├── app/engine.py обёртка над yt-dlp
├── app/i18n.py локализация
├── app/platform_paths.py различия платформ
└── app/ui/ интерфейс
tools/ скрипты разработки и проверки
Код прокомментирован по-русски: открываете любой файл и понимаете, что там происходит и почему именно так.
Правки приветствуются — CONTRIBUTING.md. Об ошибках пишите в issues.
MIT. Сделано для личного использования. Эльфы не несут ответственности за нарушение авторских прав.