Commit Graph

37 Commits

Author SHA1 Message Date
0137a4675f feat: add Qobuz playlist caching with versioning and infinite scroll UI
- Add qobuz_debug to .gitignore
- Bump PMOMusic version to 0.3.26
- Add .cargo/ copy in Dockerfile for registry config
- Implement infinite scroll in ServerDrawer.vue with IntersectionObserver and sentinel element
- Add source/source_version fields to playlists for cache invalidation
- Update pmocache and pmoplaylist DB schemas with versioning (SCHEMA_VERSION)
- Add Qobuz API metadata fetching and pagination for playlist tracks
- Implement album/playlist cache invalidation based on released_at/updated_at timestamps
- Refactor adapt_playlist_items_to_qobuz → adapt_items_to_qobuz with cleaner logic
- Add debug mode to save Qobuz API responses when QOBUZ_DEBUG_DIR is set
2026-03-25 11:08:28 +01:00
0cca9229ad feat: implement livemeta/pull API and station mapping
- Replace old /api/live endpoint with new livemeta/pull API (api.radiofrance.fr)
- Add hardcoded station ID/stream mappings with runtime-updatable mapping
- Implement station rediscovery on unknown slug or stream failure
- Add persistent caching for station mappings (30-day TTL) via pmoconfig
- Update live_metadata to use numeric IDs and handle ID mismatches
- Add station validation (API + stream accessibility check)
- Refactor metadata caching with fetched_at and fallback TTL
- Update discover_local_radios to scrape SvelteKit page data
- Add new models: PullResponse, PullStep, EmbedImage for livemeta format
- Improve live_metadata.rs example to safely truncate intros
- Enable parallel DIDL generation for playlist groups
2026-03-24 10:01:47 +01:00
de74c7b431 Migrate instance ID storage from localStorage to sessionStorage
Switch instance ID storage from localStorage to sessionStorage in useWebRenderer composable to ensure better session management and prevent data persistence across browser sessions.

Also update the DirectOggFlacSink implementation to improve backpressure handling, streamline the OGG chaining logic, and add proper Safari range header support for the stream endpoint.
2026-03-01 17:30:05 +01:00
306e691c61 Refactor WebRenderer to use server-side streaming with OGG-FLAC sink
This commit refactors the WebRenderer to use a server-side streaming architecture with OGG-FLAC sink instead of the previous WebSocket-based approach. The changes include:

- Replaced WebSocket communication with HTTP streaming using DirectOggFlacSink
- Implemented a new pipeline architecture with dedicated handlers for UPnP commands
- Added new modules for registration, registry, and streaming
- Updated the renderer to work with a pipeline control system
- Removed old WebSocket session management
- Added support for HTTP streaming with gapless playback
- Updated dependencies and features for the new architecture

The WebRenderer now acts as a MediaRenderer UPnP device that serves audio streams via HTTP endpoints, with commands relayed to the audio pipeline through a new control system.
2026-02-26 20:05:42 +01:00
5c5e1d534b feat: Implémentation complète de la source Radio France avec intégration UPnP et serveur HTTP
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
2026-01-23 12:20:43 +01:00
8adccaa2df feat: implémente client stateful et support playlist 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
2026-01-22 23:50:41 +01:00
e10f217385 feat(pmoradiofrance): implémentation complète du client Radio France
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.
2026-01-22 22:00:40 +01:00
090ab9060b Add docker image building 2025-12-26 15:28:49 +01:00
1a7e5dd790 Debug openhome 2025-12-21 21:04:31 +01:00
1bf34fe949 no local cache 2025-12-17 14:25:24 +01:00
31ee25c7f2 Abstraction de la gestion des queues de lecture 2025-12-08 17:40:23 +01:00
3ec692ea6f implémentation concrète de DeviceDescriptionProvider 2025-12-06 12:48:21 +01:00
9e8491710c debug du lecteur web 2025-12-06 12:48:21 +01:00
f7f2364da6 Incorpore les métadata dans les header flac 2025-12-06 12:48:21 +01:00
9bc0c2544d Round 3 2025-11-17 21:30:26 +01:00
66416dafa8 Fin de la correction de l'implémentation par ChatGPT. 2025-11-16 21:34:16 +01:00
97a383c079 Tentative de gestion d'un historique 2025-11-16 08:02:50 +01:00
88349e7797 Récupération de l'erreur git cleaning 2025-11-04 21:13:06 +01:00
83d7520840 Ajout de la gestion des couvertures d'albums par le FlacCacheSink 2025-11-03 20:48:58 +01:00
40950164e9 Ajout d'un noeud puis vers le cache audio 2025-11-03 14:45:37 +01:00
8fe110eeb7 Restructuration de pmoaudio avec ajout des messages de synchro 2025-11-03 14:45:37 +01:00
27a5279378 Passons en stéreo
reprise du module DSP pmoaudio
2025-11-03 14:45:37 +01:00
ca908fbe69 Cacheaudio en tream 2025-10-29 22:36:36 +01:00
92c35116f8 la crate des playlists 2025-10-29 22:36:36 +01:00
ea6dd03ac0 Je ne sais pas trop 2025-10-29 22:35:53 +01:00
efa4855555 travail sur les actions notion de service stateless 2025-10-20 16:18:21 +02:00
ee9dca75ba ebuggage transcodage audio en flac 2025-10-20 16:18:21 +02:00
5fe1624f26 debug radio paradise 2025-10-20 16:18:21 +02:00
082914cf8c Refactoring manuel 2025-10-17 19:28:04 +02:00
1c83416be4 Debug le menu debug 2025-10-13 11:31:14 +02:00
3ca6fa9884 Complete la crate pmoaudio 2025-10-11 16:02:45 +02:00
c7d7ed749a Version fonctionnelle du cache 2025-10-09 06:59:55 +02:00
9bf5bc7fe2 Ajoute pmocovers 2025-10-07 11:41:10 +02:00
e260330877 Revue de code et refactoring 2025-10-07 08:32:48 +02:00
be2792b27d Intégration de libsoxr pour le rééchantillonnage audio 2025-09-16 20:25:46 +02:00
d799a3fe38 Maintenant capter les URL des documents didl parser et les stocker dans le cache... 2025-09-09 21:05:05 +02:00
437d9db4b7 Change ID: xnmuwquy
This commit contains the following changes:
     A .DS_Store
     A .pmomusic.yml
     A .vscode/settings.json
     A db/chroma.sqlite3
2025-09-07 12:14:50 +02:00