spotGrab is a developer and user friendly solution for downloading Spotify tracks, albums, and playlists in a Docker container. It provides a clean web interface with real-time progress updates, allowing users to securely and efficiently obtain their music as downloadable zip files.
- π΅ Download Spotify tracks, albums, or playlists by URL
- π Modern, responsive web interface with custom logo and branding
- β‘ Real-time download progress via WebSockets
- π¦ Automatic zip file creation for easy download
- π³ Easy deployment with Docker and Docker Compose
- π§Ή Automatic cleanup of old downloads (configurable)
- π± Mobile-friendly responsive design
- π¨ Dark theme with Spotify-inspired styling
git clone https://github.com/thepangel/spotgrab.git
cd spotgrabUpdate the Spotify API credentials in the docker-compose.yml file:
CLIENT_IDandCLIENT_SECRET: Your Spotify API credentials (Get them here)FILE_CLEANUP_INTERVAL: Interval (in seconds) between cleanup runs (default: 1800)FILE_CLEANUP_MAX_AGE: Max age (in seconds) before a download folder is deleted (default: 3600)
For local development, you can create a .env file in the src/ directory with the same variables.
docker compose up --buildBuild for multiple architectures:
# Build multi-arch image
docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/spotgrab:latest .
# Or build locally for your platform
docker build -t spotgrab .spotGrab includes CasaOS-compatible configuration. Simply use the included docker-compose.yml file in CasaOS App Store by adding it as a custom app.
./musicβ Stores temporary music files during download./public_downloadsβ Stores downloadable zip files for users
CLIENT_IDandCLIENT_SECRET: Your Spotify API credentialsBITRATE: Audio bitrate for downloads (default: 192k). Common options: 96k, 128k, 192k, 256k, 320kFILE_CLEANUP_INTERVAL: Interval (in seconds) between cleanup runs (default: 1800)FILE_CLEANUP_MAX_AGE: Max age (in seconds) before a download folder is deleted (default: 3600)
- Go to Spotify Developer Dashboard
- Create a new app
- Copy the
Client IDandClient Secret - Update your
docker-compose.ymlfile with these credentials
MIT License β see LICENSE
- Feel free to open up any issues or ask for features in the issues tab!
- If you want to contribute directly make sure to fork the repo and submit a pull request for me to review.