# đŸŽ” 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 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 ```