Nom et coordonnées
- nom : Anmol Kapil
- nom d’utilisateur GitLab : zepredos
- fuseau horaire : UTC+5:30
Titre
Un CLI léger et réactif pour la gestion de bibliothèques médias
Brève description du travail réalisé
- Mettre en place le dépôt et la CI
- Créer le dépôt
medialode - Valider la configuration
CMakeet la CI (compilationsLinux/macOS/Windows) - Vérifier la compilation d’un « hello world » sur tous les systèmes d’exploitation
- Créer le dépôt
- Intégrer et récupérer Boost et les autres dépendances
- Définir la spécification du protocole IPC
- Rédiger les messages
JSON-over-WebSocketpour les requêtes à la base de données et les commandes de l’analyseur - Ajouter un document Markdown
ipc-specdans docs/
- Rédiger les messages
- Squelette du serveur SQLite
- Créer la cible binaire
libmgr-server - Ouvrir au démarrage un socket d’écoute UNIX/websocket (
Boost.Beast) - Répondre à un RPC ping par
{ "status": "ok" }
- Créer la cible binaire
- Orchestration de l’analyse des dossiers
- Ajouter le RPC « scan-folders » : il reçoit une liste de chemins et les enregistre dans une table de la base
- Conserver l’état de l’analyse dans une table folders (path, last_scan)
- Mode WAL et schéma de base
- Activer
PRAGMA journal_mode = WALà l’ouverture de la base - Définir les tables
- Activer
- Cadre générique pour les processus d’analyse
- Créer un
libmgr-scan-worker binaryqui : - Se connecte au serveur par WebSocket
- Écoute les commandes scan-file
- Renvoie file-scanned avec les métadonnées, ou file-error
- Créer un
- Processus d’analyse des images
- À la réception de scan-file, si l’extension fait partie de {png,jpg,…}, extraire les dimensions
- Processus d’analyse audio
- Pour les fichiers audio : extraire la durée et la fréquence d’échantillonnage
- Processus d’analyse vidéo
- Pour les fichiers vidéo : extraire la durée et la résolution
- Processus d’analyse des langages et des scripts
- Pour les fichiers
.js,.py, etc. : tenter une analyse syntaxique à blanc afin de détecter les erreurs - Rapporter « syntaxe OK » ou le message d’erreur
- Pour les fichiers
- Structure de base du CLI
- Créer un
libmgr-cli binarydoté de sous-commandes
- Créer un
- Implémenter list types
libmgr-cli list types→ affiche les types de médias pris en charge
- Implémenter list files
libmgr-cli list files --type audio --folder /path
- Arrêt propre et persistance
- S’assurer qu’à la réception de
SIGINT, le serveur arrête proprement les processus de travail et valide la base
- S’assurer qu’à la réception de
- Documentation et exemples
- Créer un
READMEavec desquickstartspour le serveur et le CLI
- Créer un
Code fusionné
Code non fusionné
- Implement IPC protocol, server skeleton, and scanner worker
- Image worker
- Audio worker
- Video worker
- Script worker
- WIP: Add CLI Commands
- Add Quickstart and other Documentation
Ce qu’il reste à faire
- Processus d’analyse des plugins
- Réutiliser la
vstpuppet logicexistante pour les formatsVST2etVST3 - Extraire le nombre de paramètres, une capture d’écran de l’interface et les métadonnées du plugin
- Réutiliser la
- Supervision des processus et gestion des plantages
- Le serveur doit lancer un processus de travail par type de média
- Surveiller la terminaison des processus enfants ; en cas de plantage, marquer le fichier comme défectueux et relancer le processus
- File de travail et traitement par lots
- Implémenter une
Redis-like queuedans SQLite : - CREATE TABLE queue (file_id, worker_type, status);
- Le serveur met en file les fichiers nouveaux ou modifiés ; les processus de travail en tirent l’élément suivant
- Implémenter une
- Implémenter la recherche par étiquettes
libmgr-cli search --tag livecoding
- Surveillance des dossiers en temps réel
- Passer du scan-folders manuel à un mode de surveillance persistant
- Mettre en file de nouvelles tâches d’analyse à chaque nouvel événement du système de fichiers
- Cache et chargement paresseux des aperçus
- Générer des aperçus et des vignettes pour les différents types de fichiers médias et les stocker dans une base d’aperçus
- Ne pas régénérer un aperçu si la vignette existe déjà et que le fichier n’a pas changé
- Corriger le pipeline de CI
- Mettre à jour la documentation et le README en conséquence