🎵 Deezer Downloader for Nextcloud WebDav
🧩 Description
Ce projet a pour objectif d’évoluer en une application Nextcloud. Pour l’instant, il s’agit d’une **application externe utilasant WEBDAV **.
Le projet est basé sur le dépôt GitHub de deezer-downloader. Un grand merci aux auteurs pour leur excellent travail !
❓ Pourquoi
Je souhaitais intégrer à Nextcloud un raccourci permettant aux utilisateurs de télécharger leur musique, playlists, albums, etc., directement depuis Nextcloud. Les téléchargement sont directement accessible des Fichiers de Nextcloud. Vous pouvez aussi choisir un répertoire situé dans le dossier de syncronisation de l'application interne Musique pour profiter directement du téléchargement sur une appli de streaming style subsonic...
🔧 Modifications apportées par rapport au dépôt original
- 🔐 Utilisation du JWT de Nextcloud pour obtenir les informations d’identification de l’utilisateur connecté.
- 📂 Téléchargement des fichiers dans le dossier personnel de l’utilisateur connecté, dans un répertoire créé à la racine :
Music/DeezerDl. - 🚫 Vérification de la connexion à Nextcloud : si non connecté → retour 403 Forbidden.
Installation sur NextCloud (Debian 12)
Dans le container DeezerDownloader
Mettre à jour le container
apt update
apt upgrade
Créer le point de montage où son stoké les données Nextcloud.
J'ai créé un point de montage directement vers les fichiers de nextcloud:
mp0: /Data/NAS/nextcloud/data_directory/data/,mp=/nextcloud_user_data
Créer un utilisateur www-data pour faire tourner le service.
Verifier si deja existant: id www-data
Si vous obtenez des informations sur l’utilisateur et le groupe, il existe déjà. Sinon, vous aurez un message du type no such user.
Créer l’utilisateur et le groupe www-data:
groupadd www-data
useradd -r -s /usr/sbin/nologin -g www-data www-data
Donner à l'utilisateur www-data le meme uid user et group que celui de www-data du contenair Nextcloud.
ls -ln /nextcloud_user_data/
> drwxr-xr-x 5 100033 100033 5 Oct 19 14:57 Parent
100033 100033 est l uid et le gid
usermod -u 100033 www-data
groupmod -g 100033 www-data
Résultat:
id www-data uid=100033(www-data) gid=100033(www-data) groups=100033(www-data)
Installer python et le venv
apt install -y python3 python3-venv python3-pip sudo ffmpeg
Créer le venv pour www-data
mkdir -p /var/www/venv
chown www-data:www-data /var/www/venv
chmod 750 /var/www/venv
sudo -u www-data python3 -m venv /var/www/venv
sudo -u www-data bash
source /var/www/venv/bin/activate
python --version
pip --version
deactivate
Pour désactiver le venv deactivate
Installer le site DeezerDownloader
sudo mkdir -p /var/www/app
sudo chown www-data:www-data /var/www/app
apt install git
sudo -u www-data git clone -b cleanAndCustom --single-branch https://git.bonisco.fr/Grizouille/Deezer-Downloader-Nextcloud.git /var/www/app
Installer les dépandences:
sudo -u www-data /var/www/venv/bin/pip install /var/www/app
sudo -u www-data /var/www/venv/bin/pip install yt-dlp
sudo -u www-data /var/www/venv/bin/pip install paramiko
sudo -u www-data /var/www/venv/bin/pip install PyJWT
Ajouter le fichier de config
sudo -u www-data bash
source /var/www/venv/bin/activate
deezer-downloader --show-config-template > /var/www/app/config.ini
deactivate
Rester sous www-data et aller éditer le fichier config.ini, les explication son à l'interieur...
Créer le service pour qu'il soit autonome
nano /etc/systemd/system/deezer_downloader.service
[Unit]
Description=Deezer Downloader Service
After=network.target
[Service]
# Répertoire de travail (là où est ton config.ini)
WorkingDirectory=/var/www/app
# Commande de lancement (binaire du venv)
ExecStart=/var/www/venv/bin/deezer-downloader --config /var/www/app/config.ini
# Redémarrage automatique en cas d’erreur
Restart=on-failure
# Exécution sous root (puisque ton venv est dans /root)
User=www-data
Group=www-data
# Variables d’environnement
Environment="PATH=/var/www/venv/bin:/usr/bin"
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
Puis l'activer et le lancer:
sudo systemctl daemon-reload
sudo systemctl enable deezer_downloader.service
sudo systemctl start deezer_downloader.service
sudo journalctl -u deezer_downloader.service -f
Configurer les settings
Dans le container nextcloud:
adduser nextclouddeezer
apt install sudo
nano visudo
ajouter en fin de fichier la ligne:
nextclouddeezer ALL=(www-data) NOPASSWD: /usr/bin/php
cela permet d'executer des command php avec l'utilisateur nextclouddeezer
Dans le confg.ini dans la container deezer-dowloader, ajouter le mdp de l'utilisateur ue vous venez de dréer.
Dev sous windows (vsCode):
Pour que powershell accepte d'exécuter des scripts:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
venv activer avec:
.\.venv\Scripts\Activate.ps1
Install:
pip install poetry
git clone https://github.com/kmille/deezer-downloader.git
cd deezer-downloader
poetry install
poetry run deezer-downloader --show-config-template > settings.ini
run du srv en ligne de cmd:
poetry run deezer-downloader --config .\deezer_downloader\settings.ini