StreamNest is a desktop media downloader built with Flet and yt-dlp. It supports single media downloads and playlist workflows across providers supported by yt-dlp.
Click the preview to open the full demo video.
- Welcome-first entry flow with one-click launch into the app
- Centered card-based UI with bottom navigation tabs: Single, Playlist, About
- Back-to-welcome action available from all app cards
- Unified app branding with official play-circle icon assets
- Device-theme aware styling:
- Follows system theme by default
- Live updates on platform brightness change (when supported)
- Optional Force dark theme override
- Startup FFmpeg detection with OS-specific install guidance in the UI
- One-click FFmpeg auto-install flow (Linux/macOS/Windows) with confirmation and privilege prompt support
- Live install/output log windows:
- FFmpeg installer command output
yt-dlpruntime logs for active downloads
- Manual FFmpeg re-check action from the UI
- Dynamic format loading before download
- Download modes:
- Video (MP4 remux)
- Audio (MP3 extract)
- Playlist workflow:
- Load playlist entries
- Select specific items
- Range support (
1-5,1,3,7-10) - Playlist-specific quality and save folder
- Live progress information:
- Progress bar
- Speed and ETA
- Current playlist file name
- Download result dialogs and session history panel
- See Changelog for release notes and ongoing updates.
- Python 3.11+
- FFmpeg (recommended for merge/remux/extract quality)
- Clone the repository:
git clone git@github.com:Sarwarhridoy4/StreamNest.git
cd StreamNest- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activateWindows (PowerShell):
python -m venv .venv
.venv\Scripts\Activate.ps1- Install dependencies:
pip install -r requirements.txt- Automatic install from the app:
- Click Install FFmpeg when prompted
- Review command preview and confirm
- Enter password (Linux privilege flow) when required
- Track progress in FFmpeg Install Log
- Manual install:
- Linux: install
ffmpegwith your package manager - macOS:
brew install ffmpeg - Windows: install FFmpeg and add it to
PATH(or use Winget)
- Linux: install
Verify:
ffmpeg -versionpython main.py- Paste a supported media URL (
http://orhttps://). - Click Load Formats.
- Select mode and quality.
- Choose save folder (optional).
- Click Download.
- Open the Playlist tab.
- Paste playlist URL.
- Optional: enter range (
1-5,1,3,7-10). - Click Load Playlist.
- Select items.
- Choose quality and save folder.
- Click Download Selected.
- App starts on the Welcome screen.
- Click Open StreamNest to enter the tabbed app UI.
- Use Back to Welcome to return to the welcome screen.
- Theme follows your system setting by default.
- Enable Force dark theme in Single tab to override system theme.
Install prerequisites first (Ubuntu/Debian):
sudo apt update
sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev desktop-file-utils dpkg-dev g++./scripts/build_linux_packages.sh auto-installs missing packaging dependencies, including concrete libstdc++-XX-dev packages and fallback installation of appimagetool when it is not available in apt repositories. It will also attempt to install lld-20 if /usr/lib/llvm-20/bin exists without a linker and stages CMake installs under build/ to avoid requiring write access to /usr/local.
Run packaging:
./scripts/build_linux_packages.sh 2.0.0 amd64Verbose mode (show full apt/pip/flet output live):
./scripts/build_linux_packages.sh 2.0.0 amd64 --verboseThe script:
- Runs
flet build --yes linux(with one retry using--clear-cache) - Builds
.deband.AppImagefrom the generated Linux bundle - Writes package checksums
- Supports
--verbose(or-v) to stream full command output; default mode is compact and styled
Output files in dist/:
streamnest_<version>_amd64.debStreamNest-<version>-x86_64.AppImagechecksums-<version>.sha256
Follow the official guide for environment setup (Java, Android SDK, Android command-line tools):
With this repo on the android branch:
- Install dependencies:
pip install -r requirements.txt- Build APK:
flet build apk- Optional release build:
flet build apk --releaseAndroid packaging metadata is configured in pyproject.toml under [tool.flet] and [tool.flet.android].
StreamNest/
├── main.py # App entry point and page bootstrapping
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── changelog.md # Project change history
├── LICENSE # MIT license
├── assets/ # Icons, demo media, screenshots
├── services/
│ ├── downloader.py # yt-dlp orchestration, hooks, progress
│ └── format_extractor.py # Format and playlist metadata extraction
├── state/
│ └── app_state.py # Shared UI state model
├── ui/
│ ├── components.py # Reusable UI helpers
│ ├── home_view.py # Compatibility wrapper exporting HomeView
│ └── home/ # Modular HomeView implementation
│ ├── home_view.py # Core HomeView shell/state and shared handlers
│ ├── control_layout_mixin.py
│ ├── view_layout_mixin.py
│ ├── download_mixin.py
│ ├── playlist_mixin.py
│ ├── history_mixin.py
│ └── ffmpeg_install_mixin.py
└── utils/
├── file_manager.py # Directory helpers + size/speed/eta formatters
└── validators.py # URL and input validation helpers
- Ensure dependencies are installed in the active virtual environment.
- Check terminal output for runtime exceptions.
- Some providers/streams do not expose stable throughput metrics.
- Keep
yt-dlpand FFmpeg updated.
- Confirm
ffmpegis available inPATH. - Verify with
ffmpeg -version.
- Install linker toolchain for LLVM 20:
sudo apt install lld-20 - Verify binary exists:
/usr/lib/llvm-20/bin/ld.lld - Re-run:
./scripts/build_linux_packages.sh 2.0.0 amd64
- Official Website: streamnest-puce.vercel.app
- Name: Sarwar Hossain
- GitHub: Sarwarhridoy4
This project is licensed under the MIT License. See LICENSE.
Use this software lawfully and in compliance with platform terms, copyright, and local regulations.





