You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4.1 KiB

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):

sudo apt update
sudo apt install ffmpeg nodejs

Verification rapide des prerequis:

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

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 :

cd frontend
python init.py

Le fichier généré est :

{
  "secret_key": "<clé-aléatoire>"
}

Générer une clé sécurisée manuellement (si besoin d'éditer le fichier) :

python3 -c "import secrets; print(secrets.token_hex(32))"

Le fichier est créé avec les permissions 600. Pour les restreindre manuellement :

chmod 600 frontend/data/conf.json

Execution

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.

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 :

sudo -u www-data python /opt/pySonnerie/frontend/init.py

Copier le service fourni :

sudo cp systemd/pysonnerie-frontend.service /etc/systemd/system/

Adapter au besoin la variable FRONTEND_BIND dans le fichier de service, puis activer :

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:
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.