# pySonnerie Frontend (Flask) Frontend web responsive en Flask pour piloter le backend pySonnerie déjà en place. ## Fonctions - Page de connexion (URL backend + identifiants Basic Auth) - Tableau de bord de gestion des triggers (creation/modification/suppression) - Parametrage du nombre de repetitions automatiques par trigger (champ `Nombre de repetitions`) - Lancement manuel d'un trigger (`/api/play/{trigger_id}`) - Arrêt audio (`/api/stop`) - Gestion du stockage audio dans `backend/data/musiques` (televersement, telechargement, suppression) - Import audio depuis un lien YouTube (extraction via `yt-dlp` puis conversion en MP3) ## Parametres trigger (dashboard) Le formulaire trigger permet de regler: - Fenetre de lecture (`Debut`, `Fin`) - Volume et fondus (`Fade in`, `Fade out`) - Normalisation audio - `Nombre de repetitions` : - `0` = lecture unique - `N` (> 0) = `N` repetitions automatiques apres la premiere lecture ## Prerequis - Python 3.11+ - `yt-dlp` disponible dans l'environnement d'execution (installe via `pip install -r requirements.txt`) - `ffmpeg` installe sur le systeme (requis par `yt-dlp` pour l'extraction audio) - `node` installe sur le systeme (requis pour `--js-runtimes node`) - Acces reseau sortant vers YouTube et GitHub (utilise par `--remote-components ejs:github`) - Droits d'ecriture sur `backend/data/musiques` Installation recommandee (Debian/Ubuntu): ```bash sudo apt update sudo apt install ffmpeg nodejs ``` Verification rapide des prerequis: ```bash source .venv/bin/activate yt-dlp --version node --version ffmpeg -version ``` Note Debian/Ubuntu: si `node --version` echoue mais `nodejs --version` fonctionne, cree un alias ou un lien symbolique `node` vers `nodejs` pour respecter la commande d'extraction. ## Installation ```bash cd frontend python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` Si présence d'un proxy, la dernière commande sera `pip install -r requirements.txt --proxy http://proxy:port`. ## Configuration La configuration du frontend se fait via `frontend/data/conf.json`. Le script `init.py` crée ce fichier automatiquement avec une clé aléatoire : ```bash cd frontend python init.py ``` Le fichier généré est : ```json { "secret_key": "" } ``` Générer une clé sécurisée manuellement (si besoin d'éditer le fichier) : ```bash python3 -c "import secrets; print(secrets.token_hex(32))" ``` Le fichier est créé avec les permissions `600`. Pour les restreindre manuellement : ```bash chmod 600 frontend/data/conf.json ``` ## Execution ```bash cd frontend source .venv/bin/activate python run.py ``` Application dispo sur `http://127.0.0.1:5000`. ## Production (Debian + systemd) Le frontend peut tourner en production avec Gunicorn et un service systemd. ```bash cd /opt/pySonnerie/frontend python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` Créer et sécuriser le fichier de configuration : ```bash sudo -u www-data python /opt/pySonnerie/frontend/init.py ``` Copier le service fourni : ```bash sudo cp systemd/pysonnerie-frontend.service /etc/systemd/system/ ``` Adapter au besoin la variable `FRONTEND_BIND` dans le fichier de service, puis activer : ```bash sudo systemctl daemon-reload sudo systemctl enable --now pysonnerie-frontend.service sudo systemctl status pysonnerie-frontend.service ``` Le frontend sera alors servi par Gunicorn sur l'adresse definie par `FRONTEND_BIND` (par defaut `0.0.0.0:5000`). ## Notes - Le frontend appelle le backend en HTTPS avec certificat autosigne (`verify=False`). - Les fichiers audio sont manipules localement dans `backend/data/musiques`. - Formats audio acceptes: `.mp3`, `.wav`, `.ogg`, `.flac`, `.aac`, `.m4a`. - Depuis la page de stockage audio, un champ URL permet d'importer l'audio d'une video YouTube. - La commande utilisee pour l'extraction est: ```bash yt-dlp --js-runtimes node --remote-components ejs:github -x --audio-format mp3 URL ``` ## Changelog - Le changelog global du projet est dans `../CHANGELOG.md`. - Les regles de mise a jour sont decrites dans `../docs/CHANGELOG_GUIDE.md`.