Files
Deezer-Downloader-Nextcloud/README.md
2025-11-10 14:08:58 +01:00

206 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎵 Deezer Downloader for Nextcloud WebDav
## 🧩 Description
Ce projet a pour objectif dévoluer en une **application Nextcloud**.
Pour linstant, il sagit dune **application externe utilasant WEBDAV **.
Le projet est basé sur le dépôt GitHub de [deezer-downloader](https://github.com/kmille/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 didentification de lutilisateur connecté.
* 📂 Téléchargement des fichiers dans le **dossier personnel** de lutilisateur 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 lutilisateur et le groupe, il existe déjà.
Sinon, vous aurez un message du type no such user.
Créer lutilisateur 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 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 derreur
Restart=on-failure
# Exécution sous root (puisque ton venv est dans /root)
User=www-data
Group=www-data
# Variables denvironnement
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
```