206 lines
5.4 KiB
Markdown
206 lines
5.4 KiB
Markdown
# 🎵 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](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 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
|
||
``` |