{"id":13551380,"url":"https://github.com/kmille/deezer-downloader","last_synced_at":"2026-01-17T10:42:45.626Z","repository":{"id":45666699,"uuid":"154390777","full_name":"kmille/deezer-downloader","owner":"kmille","description":"Download music from Deezer with a nice front end","archived":false,"fork":false,"pushed_at":"2025-10-23T09:02:22.000Z","size":2079,"stargazers_count":927,"open_issues_count":37,"forks_count":132,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-10-23T10:32:10.819Z","etag":null,"topics":["deezer","hacktoberfest","mpd","music","python","spotify","youtube-dl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kmille.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-23T20:14:27.000Z","updated_at":"2025-10-23T09:02:22.000Z","dependencies_parsed_at":"2024-01-13T16:25:54.380Z","dependency_job_id":"c9dff197-bea7-4383-99cd-a263ffe62401","html_url":"https://github.com/kmille/deezer-downloader","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/kmille/deezer-downloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmille%2Fdeezer-downloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmille%2Fdeezer-downloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmille%2Fdeezer-downloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmille%2Fdeezer-downloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kmille","download_url":"https://codeload.github.com/kmille/deezer-downloader/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kmille%2Fdeezer-downloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deezer","hacktoberfest","mpd","music","python","spotify","youtube-dl"],"created_at":"2024-08-01T12:01:46.963Z","updated_at":"2026-01-17T10:42:40.609Z","avatar_url":"https://github.com/kmille.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Deezer Downloader 🎶 🎧 💃 🦄\n[![tests](https://github.com/kmille/deezer-downloader/actions/workflows/tests.yaml/badge.svg)](https://github.com/kmille/deezer-downloader/actions/workflows/tests.yaml)\n![latest tag](https://img.shields.io/github/v/tag/kmille/deezer-downloader?sort=semver) ![Python 3.9](https://img.shields.io/badge/python-%3E=3.9-blue.svg) ![pypi-version](https://img.shields.io/pypi/v/deezer-downloader) ![pypi-downloads](https://img.shields.io/pypi/dm/deezer-downloader)\n\n### Download music from Deezer and Spotify with a simple web frontend, through a local-hosted service written in Python.\n\n### Features\n- download songs, albums, public playlists from Deezer.com (account is required, free plan is enough)\n- download Spotify playlists (by parsing the Spotify website and download the songs from Deezer)\n- download as zip file (including m3u8 playlist file)\n- quality: flac or 320 kbit/s mp3 with premium subscription or 128 kbit/s MP3s with free subscription\n- ID3-Tags and embedded album cover\n- download songs via yt-dlp\n- KISS (keep it simple and stupid) front end\n- MPD integration (use it on a Raspberry Pi!)\n- simple REST api\n- proxy support (https/socks5)\n\n## Table of Contents:\n- [Get started](#get-started)\n  - [Install Python](#1-install-python)\n  - [Install deezer-downloader](#2-install-deezer-downloader)\n  - [Retrieve your arl cookie](#3-retrieve-your-arl-cookie)\n  - [Set the config file](#4-set-the-config-file)\n  - [Run deezer-downloader](#5-run-deezer-downloader)\n  - [Access the frontend](#6-access-the-frontend)\n- [Settings](#settings)\n- [Specific use cases](#specific-use-cases)\n  - [Run with Docker](#run-with-docker)\n  - [Run with Vagrant](#run-with-vagrant)\n  - [Run as a service](#run-as-a-service)\n  - [Developer setup](#developer-setup)\n  - [Deployment with Ansible](#deployment-with-ansible)\n- [Screenshots](#screenshots)\n- [Tests](#tests)\n- [Changelog](#changelog)\n\n## Get started\n\n### 1. Install Python\n[python.org](https://www.python.org/about/)\n\n### 2. Install deezer-downloader\n```bash\npip install --user deezer-downloader\n```\n\nIf you want to use the Docker image, [scroll](#run-with-docker) down a bit.\n\n### 3. Retrieve your `arl` cookie\n\nOn Firefox or Chrome-based browser:\n- Log into your Deezer account\n- Open the DevTools (`F12` or `Ctrl+Shift+C` or `Ctrl+Shift+I`)\n- Go to `Storage` tab\n- In the cookies, find `arl`: a ~200 characters alphanumeric key\n\n### 4. Set the config file\nRetrieve the template: \n```bash \ndeezer-downloader --show-config-template \u003e config.ini\n```\nYou need to set at least:\n- under `[deezer]`: `cookie_arl`, your arl cookie\n- under `[youtubedl]`: `command`, your yt-dlp install path\\\nAs stated in the config template, deezer-downloader do NOT keep yt-dlp updated, you will have to monitor this yourself.\n\nCheck [Settings](#settings) for further instructions.\n\n### 5. Run deezer-downloader\n```bash\ndeezer-downloader --config config.ini\n```\n\n### 6. Access the frontend\nUnless specified differently in the config file, the default frontend address is: http://localhost:5000.\nAccess it with your favourite web browser.\n\nCheck [Screenshots](#screenshots) if needed.\n\nEnjoy! 🦄\n\n## Settings\n\nThere is a settings file template called `settings.ini.example`. You can specify the download directory with  `download_dir`. Pressing the download button only downloads the song/album/playlist. If you set `use_mpd=True` in the `settings.ini` the backend will connect to mpd (localhost:6600) and update the music database. Pressing the play button will download the music. If `use_mpd=True`  is set the mpd database will be updated and the song/album/playlist will be added to the playlist. In `settings.ini` `music_dir` should be the music root location of mpd. The `download_dir` must be a subdirectory of `music_dir`. \n\nAs Deezer sometimes requires a captcha to login the auto login features was removed. Instead you have to manually insert a valid Deezer cookie to the `settings.ini`. The relevant cookie is the `arl` cookie.\n\n```bash\nkmille@linbox:deezer-downloader poetry run deezer-downloader --help\nusage: deezer-downloader [-h] [-v] [-t] [-c CONFIG]\n\nDownload music from Deezer with a nice front end\n\noptions:\n  -h, --help            show this help message and exit\n  -v, --version         show version and exit\n  -t, --show-config-template\n                        show config template. At least you have to insert the ARL cookie\n  -c CONFIG, --config CONFIG\n                        config file - if not supplied, the following directories are considered looking for deezer-downloader.ini: current working directory, XDG_CONFIG_HOME environment variable, ~/.config, /etc)\n\nkmille@linbox:deezer-downloader poetry run deezer-downloader --config settings.ini\nStarting Threadpool\n/home/kmille/.cache/pypoetry/virtualenvs/deezer-downloader-NFDPq16k-py3.11/lib/python3.11/site-packages/giphypop.py:241: UserWarning: You are using the giphy public api key. This should be used for testing only and may be deactivated in the future. See https://github.com/Giphy/GiphyAPI.\n  warnings.warn('You are using the giphy public api key. This '\nWorker 0 is waiting for a task\nWorker 1 is waiting for a task\nWorker 2 is waiting for a task\nWorker 3 is waiting for a task\nWorker 0 is now working on task: {'track_id': 8086130, 'add_to_playlist': False}\nDownloading 'Adele - Set Fire to the Rain.mp3'\nDowload finished: /tmp/deezer-downloader/songs/Adele - Set Fire to the Rain.mp3\nSetting state to mission accomplished to worker 0\nworker 0 is done with task: {'track_id': 8086130, 'add_to_playlist': False} (state=mission accomplished)\n```\n\n## Specific use cases\n\n### Run with Docker\n\nThere is a Docker image hosted on [hub.docker.com](https://hub.docker.com/r/kmille2/deezer-downloader). Please use an ARL cookie of your Deezer account.\n\n```bash\nmkdir downloads\nsudo docker run -p 5000:5000 --volume $(pwd)/downloads/:/mnt/deezer-downloader --env DEEZER_COOKIE_ARL=your_ARL_cookie kmille2/deezer-downloader:latest \nxdg-open http://localhost:5000\n```\n\n### Run with Vagrant\n\n```bash\t\ncd deployment\nvagrant up\nvagrant ssh\nsudo vim /opt/deezer/settings.ini # insert your Deezer cookie\ncd /opt/deezer \u0026\u0026 sudo poetry run deezer-downloader --config settings.ini\n\n# On the host:\nxdg-open http://localhost:5000 # view frontend in the browser\nncmpcpp -h 127.0.0.1 # try the mpd client\n```\n\n### Run as systemd service\n\nWe use it with nginx and [ympd](https://github.com/notandy/ympd) as mpd frontend:\n- / goes to ympd\n- /d/ goes to the downloader\n\nThe deployment directory contains a systemd unit file and a nginx vhost config file. There is also a [patch](https://github.com/kmille/music-ansible/blob/master/roles/ympd/files/fix_header.patch) to add a link to the ympd frontend. The `debug` tab will show you the debug output of the app.Shortcuts\n\nIf you want to debug or build it from source: there is a docker-compose file in the docker directory. The `docker/downloads` directory is mounted into the container and will be used as download directory. You have to check the permissions of the `docker/downloads` directory as docker mounts it with the same owner/group/permissions as on the host. The `deezer` user in the docker container has uid 1000. If you also have the uid 1000 then there should be no problem. For debugging: `sudo docker-compose build --force-rm \u0026\u0026 sudo docker-compose up`\n\n### Developer setup\nTested on Ubuntu Jammy:\n\n```bash\n  sudo apt-get update -q\n  sudo apt-get install -qy vim tmux git ffmpeg\n\n  # python3-poetry is too old (does not support groups ...)\n  sudo apt-get install -qy python3-pip\n  sudo pip install poetry\n  git clone https://github.com/kmille/deezer-downloader.git\n  cd deezer-downloader\n  poetry install\n  poetry run deezer-downloader --show-config-template \u003e settings.ini\n\n  # enable yt-dlp\n  sudo pip install yt-dlp\n  sed -i 's,.*command = /usr/bin/yt-dlp.*,command = /usr/local/bin/yt-dlp,' settings.ini\n\n  # enable mpd\n  sudo apt-get install -yq mpd ncmpcpp\n  sudo sed -i 's,^music_directory.*,music_directory         \"/tmp/deezer-downloader\",' /etc/mpd.conf\n  sudo systemctl restart mpd\n  sed -i 's/.*use_mpd = False.*/use_mpd = True/' settings.ini\n\n  # 1) Adjust the Deezer cookie: vim settings.ini\n  # 2) Run tests: DEEZER_DOWNLOADER_CONFIG_FILE=settings.ini poetry run pytest -v -s\n  # 3) Run it: poetry run deezer-downloader --config settings.ini\n  # 4) Try out: ncmpcpp -h 127.0.0.1 \u0026\u0026 xdg-open http://localhost:5000\n  # 5) Downloaded files are in /tmp/deezer-downloader\n```\n\n### Deployment with Ansible\nIncluding mpd and ympd\nhttps://github.com/kmille/music-ansible (not maintained anymore)\n\n\n## Screenshots\n\nSearch for songs. You can listen to a 30 second preview in the browser.  \n\n![](/docs/screenshots/2020-05-13-211356_screenshot.png)  \n\nSearch for albums. You can download them as zip file.  \n\n![](/docs/screenshots/2020-05-13-213544_screenshot.png)\n\nList songs of an album.\n\n![](/docs/screenshots/2020-05-13-211528_screenshot.png)\n\nDownload songs with youtube-dl  \n\n![](/docs/screenshots/2020-05-13-211622_screenshot.png)\n\nDownload a Spotify playlist.   \n\n![](/docs/screenshots/2020-05-13-211629_screenshot.png)  \n\nDownload a Deezer playlist.    \n\n![](/docs/screenshots/2020-05-13-211633_screenshot.png)  \n\nncmpcpp mpd client.  \n\n![](/docs/screenshots/2020-05-13-212025_screenshot.png)  \n\n## Shortcuts\n\n`Ctrl`+`M`: focus search bar  \n`Enter`: serach for songs   \n`Alt`+`Enter`: search for albums  \n`Ctrl`+`B`: go to / (this is where our ympd is)  \n`Ctrl`+`Shift`+`[1-7]` switch tabs\n\n## Tests\n\n```bash\ncd deezer-downloader\nDEEZER_DOWNLOADER_CONFIG_FILE=settings.ini poetry run pytest -v -s\n# If you don't set DEEZER_DOWNLOADER_CONFIG_FILE the default template file will be used. Some tests will fail because there is no valid arl_cookie.\n```\n\n## Changelog\n\n### Version 2.0.0 (27.03.2023)\n\n- use poetry as build system\n- build package and uploada to pypi\n- worker threads now \"daemon threads\" (they now just stop if you stop deezer-downloader)\n- update config template (remove http.debug)\n- update dependencies\n- switch to waitress (from gunicorn)\n\n### Version 1.3.3 (27.12.2021)\n- replace youtube-dl by yt-dl\n- update third party dependencies\n\n### Version 1.3.2 (26.11.2021)\n- fix broken deezer download functionality (#66, removes the ability to download flac quality)\n- update third party dependencies\n- update ubuntu base image for the docker container\n\n### Version 1.3.1 (21.01.2021)\n- allow to set download quality (flac|mp3) via environment variable DEEZER_FLAC_QUALITY (#43)\n\n### Version 1.3 (05.11.2020)\n\n- feature: download your favorite Deezer songs\n- automated tests with Github Actions\n- push Docker image to [hub.docker.com](https://hub.docker.com/repository/docker/kmille2/deezer-downloader/general) with Github Actions\n\n### Version 1.2 (01.11.2020)\n\n- **breaking change:** now use the `arl` cookie instead of the `sid` cookie. This cookie does not expire so we don't need the background thread that keeps the session alive\n- add support for flac as download format\n\n### Version 1.1 (13.05.2020)\n\n- thanks to [luelista](https://github.com/luelista) for the contribution!\n- play 30 second preview in browser\n- add Vagrantfile\n- show album cover in search results\n- use a threaded queue for download tasks\n- list album songs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkmille%2Fdeezer-downloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkmille%2Fdeezer-downloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkmille%2Fdeezer-downloader/lists"}