push-pruvwtuysnnn #66

Merged
eric merged 13 commits from push-pruvwtuysnnn into main 2026-01-23 23:15:29 +01:00
Owner
No description provided.
eric added 13 commits 2026-01-23 23:15:00 +01:00
Cette mise à jour implémente complètement le client Radio France avec :

- Découverte dynamique des stations (principales, webradios et locales)
- Accès aux métadonnées live via l'API publique
- Gestion des flux audio HiFi (AAC 192 kbps, HLS)
- Support du cache des stations avec TTL configurable
- Extension de configuration pour pmoconfig
- Exemples d'utilisation et tests d'intégration

Les stations découvertes incluent : France Inter, France Info, France Culture, France Musique, FIP, Mouv', France Bleu (locales), et leurs variantes webradios respectives.

Les fonctionnalités incluent :
- Récupération des métadonnées live (émission en cours, producteur, visuels)
- Accès aux flux audio HiFi
- Gestion intelligente des rafraîchissements via delayToRefresh
- Cache des listes de stations avec TTL configurable (7 jours par défaut)

Les tests d'intégration couvrent : découverte des stations, métadonnées live, flux audio, cache, et gestion des erreurs.
Ajout de l'implémentation du client stateful `RadioFranceStatefulClient` avec gestion du cache des stations et des métadonnées live, ainsi que la construction de playlists UPnP. Intégration avec `SourceCacheManager` pour les covers. Ajout des structures `StationGroups`, `StationGroup` et `StationPlaylist` pour l'organisation hiérarchique des stations et le mapping API → UPnP.
Ajout d'un client stateful avec gestion automatique du cache pour les stations et métadonnées live.

Fonctionnalités principales :
- Client stateful avec cache à deux niveaux (stations 7 jours, métadonnées TTL dynamique)
- Support des playlists UPnP avec structures StationGroups et StationPlaylist
- Gestion intelligente du TTL respectant delayToRefresh de l'API
- Intégration avec pmoconfig pour le caching des stations
- Support des covers via pmocovers avec fallback sur URLs Pikapi
- Doctests compilés avec contexte async complet
- Feature playlist avec dépendance pmodidl

Corrections et améliorations :
- Ajout d'un variant Error::Config pour conversion automatique
- Gestion propre des erreurs avec conversion anyhow::Error
- Tests unitaires et d'intégration (26/26 passés)
- Optimisations : pooling de connexions HTTP, préchargement intelligent

Les stations sont organisées hiérarchiquement : standalone, groupes avec webradios, radios locales ICI (ex-France Bleu)
Les métadonnées sont mises à jour dynamiquement avec respect des intervalles de polling
Ajout de la source Radio France avec :
- Implémentation du trait MusicSource pour l'intégration UPnP
- Routes HTTP API REST pour l'accès aux stations et flux AAC
- Proxy streaming avec tracking des connexions
- Génération dynamique de l'arborescence UPnP
- Cache multi-niveaux (stations, métadonnées, covers)
- Support des ~70 stations (standalone, groupes, radios ICI)

Fichiers créés :
- pmoradiofrance/src/source.rs (implémentation MusicSource)
- pmoradiofrance/src/server_ext.rs (routes HTTP et proxy streaming)
- pmoradiofrance/assets/radiofrance-logo.webp (logo placeholder)

Fichiers modifiés :
- pmoradiofrance/src/lib.rs (re-exports et modules)
- pmoradiofrance/Cargo.toml (dépendances server)
- Cargo.toml (workspace)
- pmomediaserver/Cargo.toml (feature radiofrance)
- PMOMusic/Cargo.toml (feature radiofrance)
- PMOMusic/src/main.rs (enregistrement automatique)

Tests et validation : compilation OK, pattern respecté, feature-gating cohérent
This commit adds conditional logging to the container tree building process and station item creation in the radio france source. The logging includes information about the number of groups, standalone stations, webradios, and local radios being processed. It also logs when using cached items and when starting metadata refresh tasks. The logging is enabled only when the 'logging' feature is activated.
Ajout d'une nouvelle route /api/radiofrance/default-logo pour retourner le logo par défaut de Radio France.

Modification de la gestion des covers pour:
- Filtrer France Bleu des stations principales
- Prioriser les images de fond, puis les cartes et les joueurs
- Ajouter un fallback sur le logo par défaut via l'API REST
- Passer l'URL de base du serveur aux fonctions de gestion des covers

Correction de la construction du titre et des métadonnées (artist, album) pour éviter les duplications et améliorer la cohérence.
This commit adds the pmocache dependency to support enhanced caching functionality and updates the cache implementation to use the new cache routing system. It also includes logging improvements for cover fetching operations.
Cette mise à jour corrige l'affichage des artistes dans les pistes musicales en évitant les duplications avec le nom de la station. Elle ajuste également les identifiants parents des éléments dans les listes de lecture pour une meilleure organisation hiérarchique. Les modifications affectent les fichiers playlist.rs et source.rs.
This commit enhances the Radio France source by:

1. Updating the main.rs file to clarify the purpose of registering the Radio France source, including API route initialization
2. Modifying sources.rs to:
   - Add RadioFranceExt to the imports
   - Initialize API routes for Radio France after registering the source
3. Updating source.rs to:
   - Use a default logo for Radio France containers when server_base_url is configured
   - Apply the default logo to both group and 'Radios ICI' containers

These changes improve the integration and visual presentation of Radio France content within the media server.
Cette modification ajoute la capacité de notifier les événements UPnP GENA lors des mises à jour des sources RadioFrance. Cela permet de mettre à jour correctement le ContentDirectory UPnP lorsque les flux radio sont modifiés.

- Ajout d'un notifier pour les conteneurs UPnP dans le module sources
- Ajout d'un champ container_notifier dans RadioFranceSource
- Implémentation de la méthode with_container_notifier
- Ajout de la notification dans les deux méthodes de mise à jour (stream et playlist)
- Utilisation de l'API state::notify_containers_updated pour envoyer les notifications
Cette mise à jour ajoute la gestion de la durée dans les métadonnées UPnP et OpenHome. Les changements incluent :

- Ajout de la dépendance `pmoutils` dans `pmocontrol`
- Mise à jour du modèle `Item` pour inclure le champ `duration`
- Implémentation de la sérialisation DIDL-Lite avec `pmodidl` et `pmoutils`
- Ajout de la gestion de la durée dans les renderers UPnP et OpenHome
- Extraction de la durée depuis les métadonnées DIDL-Lite
- Support du fallback vers la durée du DIDL lorsque l'ampli ne la retourne pas
- Mise à jour des constructeurs d'items pour inclure la durée calculée pour les streams radio

Ces modifications permettent une meilleure gestion des durées de pistes audio, notamment pour les streams radio avec des durées calculées à partir des timestamps de début/fin.
Mise à jour de la fonction build_stream_resource pour intégrer l'URL du proxy et un fallback direct vers l'URL du flux. Cela permet de détecter l'activité du stream via le proxy PMOMusic.
Bump version from 0.3.11 to 0.3.12

- Update Cargo.toml and version.txt to 0.3.12
- Refactor Radio France source registration to share Arc with API
- Enhance API routes to start/stop metadata refresh on stream access
- Add cleanup logic for stream disconnection
- Improve logging for metadata refresh operations
- Update Radio France source methods to be public for external access
eric merged commit d002454031 into main 2026-01-23 23:15:29 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eric/pmomusic#66
No description provided.