A powerful, modular music downloader that delivers high-quality FLAC files with comprehensive metadata support through the DAB API.
π§ This project is currently in active, unstable development. π§
- Frequent Breaking Changes: Features may work one day and break the next
- Regular Updates Required: You'll need to update frequently to get the latest fixes
- Expect Issues: Something always seems to break when i fix something else
- Pre-Stable Release: We're working toward a stable v1.0, but we're not there yet
π’ We strongly recommend:
- β Joining our Signal Support Group for real-time updates
- β Checking for updates daily if you're actively using the tool
- β Being prepared to troubleshoot and report issues
- β Having patience as we work through the bugs
π¬ Need Help? Join our Signal Support Group for instant community support and the latest stability updates!
π€ Solo Developer Project: This tool is developed and maintained by a single developer. While I work hard to push frequent updates and fixes (often multiple commits per day), expect some instability as I can't test every scenario across all systems.
π Smart Search - Find artists, albums, and tracks with intelligent filtering
π¦ Complete Discographies - Download entire artist catalogs with automatic categorization
π·οΈ Rich Metadata - Full tag support including genre, composer, producer, ISRC, and copyright
π¨ High-Quality Artwork - Embedded album covers in original resolution
β‘ Concurrent Downloads - Fast parallel processing with real-time progress tracking
π Intelligent Retry Logic - Robust error handling for reliable downloads
π§ Spotify Integration - Import and download entire Spotify playlists and albums
π΅ Format Conversion - Convert downloaded FLAC files to MP3, OGG, Opus with configurable bitrates (requires FFmpeg)
π Navidrome Support - Seamless integration with your music server
This script simplifies the process of downloading and keeping dab-downloader updated. It fetches the latest version and places it in your current directory.
Direct execution with curl:
curl -fsSL https://raw.githubusercontent.com/PrathxmOp/Support-group-junk/main/Scripts/auto-dl.sh | bashAlternative methods:
Using wget (if curl is not available):
wget -qO- https://raw.githubusercontent.com/PrathxmOp/Support-group-junk/main/Scripts/auto-dl.sh | bashDownload first, then execute (safer approach):
curl -fsSL -o auto-dl.sh https://raw.githubusercontent.com/PrathxmOp/Support-group-junk/main/Scripts/auto-dl.sh
chmod +x auto-dl.sh
./auto-dl.sh- Download the latest release from our GitHub Releases
- Extract the archive.
- Grant execute permissions to the binary:
chmod +x ./dab-downloader-linux-arm64 # Or the appropriate binary for your system - Run the executable:
./dab-downloader-linux-arm64 # Or the appropriate binary for your system - Follow the interactive setup on first launch
Prerequisites:
- Go 1.19 or later (Download here)
# Clone the repository
git clone https://github.com/PrathxmOp/dab-downloader.git
cd dab-downloader
# Install dependencies and build
go mod tidy
go build -o dab-downloaderTo run dab-downloader using a pre-built Docker image from Docker Hub:
- Ensure Docker is installed: Follow the official Docker installation guide for your system.
- Configure with Docker Compose:
- Make sure your
docker-compose.ymlfile is configured to use theprathxm/dab-downloader:latestimage (as updated by the latest changes). - Create
configandmusicdirectories if they don't exist:mkdir -p config music
- Copy the example configuration:
cp config/example-config.json config/config.json
- Make sure your
- Run any command:
Or, to run in detached mode:
docker compose run dab-downloader search "your favorite artist"docker compose up -d
Due to the unstable nature of this project, regular updates are essential:
Since we're constantly fixing bugs and pushing updates, we recommend checking for updates daily:
# Check for new releases
./dab-downloader --versionThe application uses a versioning format of vYYYYMMDD-gCOMMIT_HASH (e.g., v20250916-g9fb25ac). This version is embedded into all binaries and Docker images during the build process, ensuring accurate version reporting and update checks.
- Check Daily: Visit the GitHub Releases page or watch the repository for notifications
- Download: Get the latest binary for your operating system and architecture
- Replace: Replace your existing
dab-downloaderexecutable with the newly downloaded one - Permissions (Linux/macOS): If you encounter an "Exec format error" or "Permission denied":
chmod +x ./dab-downloader-linux-arm64 # Or the appropriate binary for your system
If you built from source, update frequently:
- Pull Latest Changes:
git pull origin main
- Rebuild:
go mod tidy go build -o dab-downloader
For Docker users, pull the latest image from Docker Hub:
- Pull Latest Image:
docker compose pull
- Restart Service:
docker compose up -d
- Watch this repository on GitHub for release notifications
- Join our Signal group for immediate update announcements
- Enable GitHub notifications to know when new releases are available
# General search
./dab-downloader search "Arctic Monkeys"
# Targeted search
./dab-downloader search "AM" --type=album
./dab-downloader search "Do I Wanna Know" --type=track
./dab-downloader search "Alex Turner" --type=artist# Download a specific album
./dab-downloader album <album_id>
# Download artist's complete discography
./dab-downloader artist <artist_id>
# Download with filters (non-interactive)
./dab-downloader artist <artist_id> --filter=albums,eps --no-confirmSetup: Get your Spotify API credentials
# Download entire Spotify playlist
./dab-downloader spotify <playlist_url>
# Download entire Spotify album
./dab-downloader spotify <album_url>
# Expand playlist to download full albums
./dab-downloader spotify <playlist_url> --expand
# Auto-download (no manual selection)
./dab-downloader spotify <playlist_url> --auto
# Auto-download expanded albums from a playlist
./dab-downloader spotify <playlist_url> --expand --auto# Copy Spotify playlist to Navidrome
./dab-downloader navidrome <spotify_playlist_url>
# Add songs to existing playlist
./dab-downloader add-to-playlist <playlist_id> <song_id_1> <song_id_2>The application will guide you through initial configuration:
- DAB API URL (e.g.,
https://dab.yeet.su) - Download Directory (e.g.,
/home/user/Music) - Concurrent Downloads (recommended:
5)
The application will create config/config.json on first run.
You can also create or modify it manually.
An example configuration is available at config/example-config.json.
{
"APIURL": "https://your-dab-api-url.com",
"DownloadLocation": "/path/to/your/music/folder",
"Parallelism": 5,
"SpotifyClientID": "YOUR_SPOTIFY_CLIENT_ID",
"SpotifyClientSecret": "YOUR_SPOTIFY_CLIENT_SECRET",
"NavidromeURL": "https://your-navidrome-url.com",
"NavidromeUsername": "your_navidrome_username",
"NavidromePassword": "your_navidrome_password",
"Format": "flac",
"Bitrate": "320"
}Override configuration with flags:
--api-url # Set DAB API endpoint
--download-location # Set download directory
--debug # Enable verbose logging
--auto # Auto-download first results
--no-confirm # Skip confirmation prompts
--format # Specify output format (mp3, ogg, opus)
--bitrate # Specify bitrate for lossy formats (e.g., 192, 256, 320)
--filter # Filter by item type for artist downloads (albums, eps, singles)
--type # Type of content to search for (artist, album, track, all)
--spotify-client-id # Your Spotify Client ID
--spotify-client-secret # Your Spotify Client Secret
--navidrome-url # Your Navidrome URL
--navidrome-username # Your Navidrome Username
--navidrome-password # Your Navidrome PasswordYour music library will be organized like this:
Music/
βββ Arctic Monkeys/
β βββ artist.jpg
β βββ AM (2013)/
β β βββ cover.jpg
β β βββ 01 - Do I Wanna Know.flac
β β βββ 02 - R U Mine.flac
β βββ Humbug (2009)/
β β βββ ...
β βββ Singles/
β βββ I Bet You Look Good on the Dancefloor.flac
# Test API connectivity
./dab-downloader debug api-availability
# Test artist endpoints
./dab-downloader debug artist-endpoints <artist_id>
# Comprehensive debugging
./dab-downloader debug comprehensive-artist-debug <artist_id>- Audio Format: FLAC (highest quality available), or converted to MP3/OGG/Opus
- Metadata Tags: Title, Artist, Album, Genre, Year, ISRC, Producer, Composer
- Cover Art: Original resolution, auto-format detection
- File Naming: Consistent, organized structure
Common Issues & Solutions
"Something that worked yesterday is broken today"
- β First step: Check for and install the latest update
- β Check the Signal group for known issues
- β Report the issue with your version number
"Failed to get album/artist/track"
- β Update to the latest version first
- β Verify the ID is correct
- β Check internet connection
- β Confirm DAB API accessibility
"Failed to create directory"
- β Check available disk space
- β Verify write permissions
- β Ensure valid file path
"Download failed" or timeouts
- β App auto-retries failed downloads
- β Check connection stability
- β Some tracks may be unavailable
- β Update to latest version if issues persist
Progress bars not showing
- β
Run with
--debugflag - β Check terminal compatibility
- β Report output when filing issues
"It worked fine last week but now nothing works"
- β This is expected during development - update immediately
- β Join Signal group for real-time fixes
- β Help me by reporting what broke
Due to the unstable nature of this project and it being a solo-developed tool, community support is essential:
π± Signal Support Group - HIGHLY RECOMMENDED
- Get real-time help and updates
- Learn about breaking changes immediately
- Connect with other users experiencing similar issues
- Get notified when critical fixes are released
- Help the solo developer by reporting issues and testing fixes
π GitHub Issues - Report bugs and request features
- Please include your version number and operating system
- Describe what worked before vs. what's broken now
- Check recent issues - your problem might already be reported
- Be patient - I'm one person handling all development and support
dab-downloader/
βββ main.go # CLI entry point
βββ search.go # Search functionality
βββ api.go # DAB API client
βββ downloader.go # Download engine
βββ artist_downloader.go # Artist catalog handling
βββ metadata.go # FLAC metadata processing
βββ spotify.go # Spotify integration
βββ navidrome.go # Navidrome integration
βββ utils.go # Utility functions
βββ docker-compose.yml # Container setup
I especially welcome contributions during this unstable development phase:
- π Report bugs - Even small issues help me stabilize faster
- π‘ Test features - Help me catch breaking changes early
- π§ Submit PRs - Fixes for stability issues are prioritized
- π Improve docs - Help other users navigate the instability
- Stability Testing - Help me identify what breaks between versions
- API Client (
api.go) - Enhance error handling and resilience - Metadata (
metadata.go) - Fix edge cases and improve reliability - Downloads (
downloader.go) - Improve robustness and error recovery - Cross-platform Testing - Help me ensure updates work across different systems
This software is provided for educational purposes only. Users are responsible for:
- β Complying with all applicable laws
- β Respecting terms of service
- β Only downloading content you legally own or have permission to access
Note: The unstable nature of this software means it should not be relied upon for any critical or commercial purposes.
This project is provided under an educational license. See the LICENSE file for details.
If you're willing to help us through the unstable development phase:
- β Star this repository
- π Report issues and bugs (even small ones!)
- π‘ Test new features and report what breaks
- π€ Contribute stability fixes
- π¬ Join our Signal community and help other users
- π Help spread awareness about the need for frequent updates
Your patience and feedback during this development phase is invaluable to a solo developer! π
Download responsibly β’ Respect artists β’ Support music
6b4aef5: ci(release): auto-generate release notesf598c4f: fix(build): embed version at build time and fix progress bar errors86ec26f: chore: Update GitHub Actions workflow for version.json taggingdf733c5: feat: Automate release creation on push to main
2f037fe: feat: Implement versioning and update mechanism improvementsacea8ea: feat: Implement playlist expansion to download full albumscdf07d9: feat: Implement rate limiting, MusicBrainz, enhanced progress, and artist search fix9fb25ac: feat: Enhance update notification with prompt, browser opening, and README guide393a7cd: feat: Implement explicit version command and colored update status36ed9eb: feat: Add ARM64 build to release workflowa50c64c: feat: Add option to save album artc1183d5: feat: Add --ignore-suffix flag to ignore any suffix26b9829: feat: Implement format conversionb63de2c: feat: Overhaul README and add Docker supportb4347d5: feat: Re-implement multi-select for downloads
6ffa805: fix(downloader): resolve progress bar race condition5296fd4: fix(metadata): correct musicbrainz id taggingb930179: fix: update link is now fixedf3699f8: fix: Deduplicate artist search results206373e: fix: Correctly display newlines in terminal output and update .gitignore94e35e2: fix: Correct GitHub repository name in updater.go89b79a5: Fix: Artist search not returning resultseec19e5: fix: Preserve metadata when converting to other formats74a6667: fix: use cross-platform home directory for default download location114edc8: fix: handle pagination in spotify playlists and create config dir if not exists283887b: fix: Handle numeric artist IDs from API
The tool has a built-in update checker. If a new version is available, it will prompt you to update and attempt to open the update guide in your browser.
If the tool fails to open the browser, you can manually update by following these steps:
-
Go to the GitHub Releases page.
-
Download the latest release for your operating system and architecture.
-
Extract the archive.
-
Replace your existing
dab-downloaderexecutable with the newly downloaded one. -
(Linux/macOS only) Grant execute permissions to the new binary:
chmod +x ./dab-downloader-linux-amd64
(Replace
./dab-downloader-linux-amd64with the actual name of the binary you downloaded).