
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
.env
file based on the.env.example
file and fill in the required environment variables:cp .env.example .env
- Start the Docker container:
using docker compose:
docker-compose up
or 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.