DBase Video & Music Downloader

DBase Video & Music Downloader is a Flutter app for downloading video and audio
from user-provided URLs. The canonical app/package identifier is
rs.in.dbase.downloader.
The app ships for Android, Windows, and Linux. The UI is Flutter; the
media backend is platform-specific:
- Android: Kotlin Platform Channels, youtubedl-android, yt-dlp, FFmpeg,
foreground service, and MediaStore.
- Windows and Linux: Flutter desktop UI with a shared backend that runs
user-provided yt-dlp and FFmpeg binaries (resolved from PATH or Settings).
macOS and iPhone/iOS are out of scope (see PLAN.md): they require a macOS
development machine, and iOS additionally has yt-dlp/FFmpeg packaging,
background-execution, and distribution constraints. The shared Dart service
contracts keep a future port possible.
flowchart TD
A["Flutter interface"] --> B["Platform Channel"]
B --> C["Platform backend"]
C --> D["yt-dlp"]
D --> E["FFmpeg"]
E --> F["MP3, M4A, MP4, or original file"]
📥 Install
All builds are produced and signed automatically by CI for every release:
latest release
(all releases).
The app checks for new versions on startup and offers the right download in
Settings.
🤖 Android

Install through F-Droid
for repository-managed updates, or download a GitHub APK directly below.
Download and open the APK (allow "install from unknown sources"; updates
install over the existing app):
Not sure which one? Take the first; if it refuses to install, take the
second.
🪟 Windows
Winget (recommended - updates arrive with winget upgrade):
winget install DBaseInRs.Downloader
- Installer: download
dbase-downloader-vX.Y.Z-windows-x64-setup.exe from the
latest release
and run it - installs per-user without administrator rights, with a Start
Menu entry and uninstaller.
- Portable: download the
...-windows-x64.zip, extract anywhere, run
dbase_downloader.exe.
Requires yt-dlp and
FFmpeg (for conversions):
winget install yt-dlp.yt-dlp Gyan.FFmpeg
The Engine Check card in Settings detects both and shows this command with
a copy button when something is missing; custom paths can also be set there.
🐧 Linux
Debian/Ubuntu via apt (recommended - updates arrive with
apt upgrade):
sudo install -d -m 755 /etc/apt/keyrings
curl -fsSL https://peace.dbase.in.rs/public.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/peace.gpg
echo "deb [signed-by=/etc/apt/keyrings/peace.gpg] https://peace.dbase.in.rs stable main" \
| sudo tee /etc/apt/sources.list.d/peace.list
sudo apt update
sudo apt install dbase-downloader
Tarball: download ...-linux-x64.tar.gz from the
latest release,
extract, and run ./dbase_downloader. The tarball needs libmpv
(sudo apt install libmpv2 or libmpv1) for the trim-editor preview; the
apt package pulls it in automatically.
Requires ffmpeg (sudo apt install ffmpeg) and a recent
yt-dlp (the distro
package is often too old for YouTube; the standalone binary is recommended).
The Engine Check card in Settings detects both and shows the install
command for your distribution (apt/dnf/pacman/zypper).
✨ Features
- Paste, type, or share a media URL from other apps (Android share sheet).
- Metadata preview: title, uploader, duration, and all available formats.
- Output as MP3, M4A, MP4, or the original source format; video-only picks
automatically merge the best audio track. Available title, artist, album,
and cover artwork are embedded in saved files.
- Playlists, albums, channels, and profiles: select items and add them to
the queue in bulk.
- Sequential download queue with pause/resume, retry, cancel, one-tap clear,
and persistence across restarts.
- Live progress with speed, ETA, and stage; Android downloads continue in
the background through a foreground service.
- Download history with search, provider filter, open/share/show-in-folder
actions, trim editing, MP3 tag editing, Android MP3 ringtone setup, and
per-item delete. History cards show embedded artwork or a video thumbnail
when available.
- Audio/video trim editor for finished files: preview the whole item, play or
loop only the selected range, adjust start/end, and save a separate clip.
- Saves through Android MediaStore or a user-selected folder (SAF); desktop
saves to Downloads or a configured folder.
- Encrypted
cookies.txt import for login-required media, with an in-app
export guide, expired-cookie detection, and one-tap delete.
- yt-dlp engine self-update on startup plus a manual update in Settings.
- Privacy-safe issue diagnostics can be copied from the Downloader Engine card
in Settings; URLs, cookies, tokens, headers, and file paths are excluded.
- In-app update notifications with a direct download for your platform.
- Engine Check on desktop: detects yt-dlp/FFmpeg and shows per-platform
install help (winget on Windows; apt/dnf/pacman/zypper or the software
center on Linux). Android bundles both tools, so no setup is needed.
- Theme matched to the logo: royal blue app bar and controls with red
accents.
🌐 Supported Websites
The extraction engine is yt-dlp, so the app downloads audio and video from
any of its 1,750+ supported sites - see the
upstream list -
while FFmpeg handles MP3/M4A conversion and MP4 merging. Popular providers
get curated names, audio defaults, and cookie hints; everything else works
too and is named after its extractor or domain. Per-provider verification
status is tracked in the Provider QA section of PLAN.md.
JioSaavn songs, albums, playlists, featured lists, artists, and podcast seasons
are recognized explicitly. Collection links open the item-selection flow
instead of being reduced to the first entry.
🍪 Cookies
Some media requires a signed-in session. The approach is user-controlled and
local-only: import a cookies.txt file exported from your own browser (the
app contains a step-by-step guide with extension links). Cookies are stored
encrypted on Android (Keystore), passed only to yt-dlp requests, flagged when
they expire, and deletable from Settings. The app never reads cookies from
Chrome, Safari, or other apps, and never uploads them anywhere. See the
cookies.txt guide
and the Privacy section below for details.
🆘 Help and troubleshooting
The project Wiki contains
support guides, including how to export and safely import cookies.txt. If a
problem remains, update the downloader engine in Settings, copy the
privacy-safe diagnostic report, and open a
GitHub issue.
🔒 Privacy
The app is fully local - no accounts, no analytics, no tracking or ad SDKs,
and no project-operated backend. It stores only your download history,
settings, temporary download files, and (optionally) imported cookies.
Cookies are encrypted at rest on Android, passed only to yt-dlp requests,
never logged or sent to the DBase project, and deletable from Settings at any
time. yt-dlp sends applicable cookies only to the relevant provider domains.
Network requests go to media providers and related delivery services, plus
GitHub for app and yt-dlp engine updates.
See the full App Privacy Policy for platform-specific storage,
network transmission, retention, deletion, and third-party service details.
❤️ Support the Project
DBase Downloader is free and open source. If it saves you time, you can
become a supporter
or go Supporter Pro
(payment is handled by Polar, the merchant of record)
and keep development going. One-off tips work too, through
Ko-fi or
PayPal. The app is never
paywalled: every feature works without supporting.
🛠️ Development
Required tools for the current project:
- Flutter SDK matching
pubspec.yaml;
- Android Studio or Android SDK command-line tools;
- JDK 17;
- Android device or emulator for Android integration tests.
Additional tools will be needed for other targets:
- Windows development on Windows;
- macOS and iOS development on macOS with Xcode;
- platform-specific signing setup before release.
Common commands:
flutter pub get
flutter analyze
flutter test
flutter run
flutter build apk --debug
🚀 Release builds
Releases are built by GitHub Actions: pushing a v* tag builds signed
Android APKs (all ABIs), the Windows portable zip and Inno Setup installer,
and the Linux tarball and Debian package, attaches everything to the GitHub
release (pre-release when the tag has a suffix like -rc.1), and publishes
the .deb to the apt repository. The signing keystore lives only in
repository secrets; local release builds fall back to debug signing unless
android/key.properties exists.
📄 License
This project is licensed under GPL-3.0-only. See LICENSE.
The intended Android downloader stack includes youtubedl-android, which is
GPL-3.0. Distributed builds must provide complete corresponding source code
under a GPL-compatible license. FFmpeg licensing depends on the exact build and
enabled libraries; release builds must document the selected FFmpeg artifact and
flags.
See THIRD_PARTY_NOTICES.md for the current compliance
checklist.
⚖️ Responsible use
DBase Downloader is a general-purpose tool that fetches media from URLs you
provide. You are responsible for how you use it. Only download content you have
the right to save — because you own it, it is offered for download, its licence
permits it, or it is in the public domain. Respect each site's Terms of Service
and applicable copyright law in your jurisdiction (including the DMCA in the US
and the EU Copyright Directive). Do not use it to infringe copyright or bypass
paid/DRM-protected content; the app does not circumvent DRM. The developers
distribute the software only and are not responsible for user-supplied URLs or
downloaded content.
🤝 Contributing
Before contributing, read: