Features
- Frontend: Search by artist, and by album name and downloading music. Track the progress of downloads.
- Backend: REST API for interacting with Deezer and managing downloads.
- Dockerized: Easily deployable using Docker and Docker Compose.
- Self-Cleanup: Uses cron jobs for periodic cleanup of downloads and outputs.
Prequirement
You’ll need a Deezer ARL token. To Obtain your Arl TokenL
- login to https://www.deezer.com/
- F12 → Application → Cookies → “https://www.deezer.com/” → the cookie named “arl”
- copy the value and write it in the .env file
Installation
- Pull the Docker image:
docker pull ghcr.io/tal-sitton/album-downloader:latest - Create a
.envfile based on the.env.examplefile and fill in the required environment variables:cp .env.example .env - Start the Docker container:
using docker compose:
docker-compose upor using docker run:
docker run -d --env-file .env -p 80:80 ghcr.io/tal-sitton/album-downloader:latest
Usage
- Access the frontend UI at
http://localhost. - Use the search functionality to find artists and albums.
- Download albums and manage your downloads through the UI.
Screenshots

API Endpoints
GET /api/artists?name={name}: Search for artists by name.GET /api/albums?artist_id={artist_id}: Get albums for a specific artist.POST /api/download_album/{album_id}: Download an album by its ID.GET /api/album_status/: Get the status of all albums being downloaded.WS /api/albums_status: Websocket endpoint for tracking album download progress.GET /api/zip_downloaded_albums?uids={uids}: Zip downloaded albums and serve them.GET /api/output/{zip_name}: Download the zipped albums.POST /api/clean: Clean all downloads.
Environment Variables
ARL: Deezer ARL token for authentication. (see Prequirement)TRACKS_DOWNLOAD_MAX_WORKERS: Maximum number of workers for downloading tracks.DOWNLOADS_PATH: Path to the downloads directory.OUTPUTS_PATH: Path to the outputs directory.ALBUMS_DOWNLOAD_MAX_WORKERS: Maximum number of workers for downloading albums.STATUS_UPDATE_INTERVAL: Interval for updating the status of downloads in the websocket.OUTPUT_CLEAN_INTERVAL_MINUTES: Interval for cleaning the outputs directory.DOWNLOADS_CLEAN_INTERVAL_MINUTES: Interval for cleaning the downloads directory.