La configuration audio dans Forge¶
Ce document explique comment le module forge_mvc_audio lit sa configuration, ce qu'elle contient et comment l'obtenir dans votre code.
Le fichier de code correspondant est forge_mvc_audio/config.py.
1. À quoi sert la configuration ?¶
Le module audio a besoin de quelques réglages pour travailler : où trouver ffmpeg, où ranger les fichiers, quelle taille d'upload accepter.
La configuration rassemble ces réglages en un seul endroit, au lieu de les disperser dans le code.
Ce module est pur : il ne lit aucun fichier, ne lance aucun ffmpeg et n'écrit nulle part.
Il fixe seulement le contrat de configuration ; ce sont les autres modules (ingestion, transcodage…) qui s'en servent.
2. La configuration dans Forge¶
La configuration est portée par l'objet AudioConfig.
Vous ne le remplissez pas à la main : la fonction load_audio_config() le construit pour vous depuis l'environnement.
from forge_mvc_audio import load_audio_config
config = load_audio_config()
print(config.storage_root) # "storage/audio" par défaut
AudioConfig est gelé (immuable) : une fois chargé, il ne change plus pendant la requête.
3. Ce qu'elle contient¶
L'objet AudioConfig rassemble les réglages du module :
| Attribut | Type | Défaut | Contenu |
|---|---|---|---|
ffmpeg_bin |
str |
ffmpeg |
le binaire ffmpeg à appeler pour le transcodage |
ffprobe_bin |
str |
ffprobe |
le binaire ffprobe à appeler pour le sondage |
storage_root |
str |
storage/audio |
le dossier racine où sont rangés les fichiers audio |
max_upload_mb |
int |
200 |
la taille maximale d'un upload, en mégaoctets |
max_duration_seconds |
int |
7200 |
la durée maximale d'un audio accepté, en secondes |
api_token |
str \| None |
None |
le jeton facultatif protégeant les routes de lecture (voir §6) |
4. Les variables d'environnement¶
Chaque réglage se surcharge par une variable d'environnement, sans toucher au code :
| Variable | Règle | Attribut |
|---|---|---|
FORGE_AUDIO_FFMPEG_BIN |
chemin du binaire | ffmpeg_bin |
FORGE_AUDIO_FFPROBE_BIN |
chemin du binaire | ffprobe_bin |
FORGE_AUDIO_STORAGE_ROOT |
dossier de stockage | storage_root |
FORGE_AUDIO_MAX_UPLOAD_MB |
entier positif | max_upload_mb |
FORGE_AUDIO_MAX_DURATION_SECONDS |
entier positif | max_duration_seconds |
FORGE_AUDIO_API_TOKEN |
jeton (chaîne) | api_token |
Les noms de ces variables sont eux-mêmes exposés comme constantes (ENV_FFMPEG_BIN, ENV_STORAGE_ROOT…) si vous devez les référencer dans vos tests.
5. Charger la configuration¶
load_audio_config() lit os.environ par défaut.
Pour les tests, vous pouvez injecter un dictionnaire à la place via source : le module ne touche alors jamais au véritable environnement.
Deux règles de lecture protègent contre les valeurs douteuses :
- une variable absente ou vide retombe sur la valeur par défaut ;
- pour les entiers, une valeur non numérique ou négative est ignorée et le défaut s'applique : impossible de configurer une taille d'upload de
-1ouabc.
6. Le jeton d'API (api_token)¶
api_token est une protection facultative des routes de lecture audio.
- S'il est défini (
FORGE_AUDIO_API_TOKEN), un en-têteAuthorization: Bearer <token>est exigé pour lire un fichier. - S'il est absent (
None), les routes sont ouvertes : c'est le mode local / pédagogique par défaut.
7. Contextes d'utilisation¶
- Démarrage du module :
load_audio_config()une fois, puis passez leconfigaux autres fonctions. - Tests :
load_audio_config({...})avec un mapping injecté, sans variable d'environnement réelle. - Déploiement : positionnez les
FORGE_AUDIO_*dans l'environnement du serveur.
8. Voir aussi¶
- Ingestion d'un fichier audio : le premier consommateur de
AudioConfig. - Sondage d'un audio : utilise
ffprobe_binetmax_duration_seconds. - Transcodage en MP3 : utilise
ffmpeg_bin. - Progression pédagogique Audio : apprendre le module pas à pas.