3.4 KiB
3.4 KiB
Changelog
Toutes les modifications notables de ce projet seront documentées dans ce fichier.
Le format est basé sur Keep a Changelog, et ce projet adhère au Semantic Versioning.
Non publié
0.1.0 - 2025-10-16
Ajouté
Structures de base
- Struct
Trackpour représenter un track audio avec :- Identifiant unique
- Métadonnées (titre, artiste, album, durée)
- URI du fichier/flux
- URL optionnelle pour l'image/cover
- Struct
FifoPlaylistpour gérer une playlist FIFO avec :- Capacité configurable
- Gestion automatique de la rotation (suppression des anciens tracks)
- Thread-safety via
Arc<RwLock> - Support asynchrone avec tokio
Fonctionnalités principales
-
Gestion FIFO :
append_track(): Ajoute un track (supprime le plus ancien si capacité atteinte)remove_oldest(): Supprime le track le plus ancienremove_by_id(): Supprime un track par son IDclear(): Vide complètement la playlistget_items(): Navigation partielle avec offset/count
-
Détection de changements :
update_id(): Compteur incrémenté à chaque modificationlast_change(): Timestamp de la dernière modification- Compatibilité avec le protocole UPnP ContentDirectory
-
Génération DIDL-Lite :
as_container(): Génère un Container DIDL-Lite pour ContentDirectoryas_container_with_parent(): Génère un Container avec parent_id personnaliséas_objects(): Génère des Items DIDL-Lite avec pagination- Mapping complet Track → DIDL Item (métadonnées, ressources, images)
-
Image par défaut :
- Image WebP 300x300 intégrée au binaire
- Note de musique néon sur fond de briques
- Taille optimisée (~10 KB)
- Accès via
default_image()
API ergonomique
- Builder pattern pour
Track:with_artist(),with_album(),with_duration(),with_image()
- Méthodes utilitaires :
len(),is_empty(),id(),title()
- Toutes les méthodes sont asynchrones et thread-safe
Documentation
- Documentation complète avec rustdoc
- README.md avec :
- Guide d'installation
- Exemples d'utilisation
- API complète
- Cas d'usage (radio, album, playlist)
- ARCHITECTURE.md avec :
- Détails d'implémentation
- Design patterns utilisés
- Guide d'intégration
- Performance et complexité algorithmique
Exemples
basic_usage.rs: Utilisation basique de toutes les fonctionnalitésradio_streaming.rs: Simulation d'une radio en streaming multi-threadhttp_server_integration.rs: Intégration avec un serveur HTTP
Tests
- 11 tests unitaires couvrant :
- Création et état initial
- Ajout de tracks
- Suppression de tracks (oldest, by_id, clear)
- Navigation et pagination
- Génération DIDL-Lite
- Builder pattern
- Gestion de l'update_id
- 8 doctests intégrés dans la documentation
- 100% de réussite des tests
Dépendances
pmodidl(local) : Structures DIDL-Lite pour UPnPtokio1.42.0 : Runtime asynchrone et RwLockserde1.0.228 : Sérialisation de Track
Notes techniques
- Edition Rust : 2024
- MSRV (Minimum Supported Rust Version) : Non spécifié (version stable recommandée)
- Thread-safe : Oui (Arc + RwLock)
- Async-first : Toutes les méthodes publiques sont async