Commit Graph

34 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
76b7c126c2 refactor: replace absolute URLs with route-based cover URLs and generalize caching
- Remplacer les appels à `covers_absolute_url_for` par `covers_route_for` pour générer des URLs relatives basées sur les routes
- Introduire le trait `CoverCacheable` pour généraliser le cache des covers (Album, Playlist, Artist, Track)
- Remplacer les fonctions spécifiques (`cache_album_covers`, etc.) par une fonction générique `cache_covers`
- Simplifier le code en unifiant la logique de mise en cache des covers
- Corriger l'initialisation de `PMO_SERVER_URL` pour utiliser `base_url()` (incluant le port) au lieu d'une URL brute
2026-03-24 15:02:28 +01:00
1164a11410 feat(cache): centralize absolute URL generation with PMO_SERVER_URL
Replace hardcoded relative URLs and manual base_url concatenation with a unified absolute URL API via pmocache::covers_absolute_url_for() and CacheTrait::absolute_url_for().

- Add pmocache as a required dependency to pmoparadise
- Introduce absolute_url_for() and covers_absolute_url_for() helpers using PMO_SERVER_URL env var (default: http://localhost:8080)
- Update all callers to use absolute URLs for covers and audio in streaming, playlists, Qobuz, Radio France, UPnP, and server startup
- Remove redundant route_for() usage in URL construction
- Add pmocache to Cargo.lock
2026-03-24 12:03:07 +01:00
7546072d2b Correction de petits bugs d'interface 2026-01-04 20:45:51 +01:00
02a44e9e75 Debug playlist lecture 2025-12-28 16:31:02 +01:00
876b1e0147 update de qobuz pour utiliser les sources lazy 2025-12-28 12:37:10 +01:00
3f9798be9b Amélioration de la vue playlist 2025-12-17 20:37:01 +01:00
7de0008cc8 Une API Rest pour pmoplaylist 2025-12-17 15:12:12 +01:00
1bf34fe949 no local cache 2025-12-17 14:25:24 +01:00
ca36a102e5 Amélioration des pmoplaylist 2025-12-17 08:47:07 +01:00
d6920703a1 Amélioration des pmoplaylist 2025-12-17 08:32:09 +01:00
90399b408a correction for lazy playlist and lazy cache 2025-12-15 12:17:33 +01:00
7389c55970 Lazy cache 2025-12-12 21:42:21 +00:00
0a03f72467 Changement du mécanisme d'attention sur les channels Radio Paradise. 2025-12-06 12:48:21 +01:00
cf3f0afde4 Les playlists suivent la lecture de leurs morceaux. 2025-12-06 12:48:21 +01:00
a559375176 Ajout la playlist live 2025-12-06 12:48:21 +01:00
128fa823a9 Maintenant on ajoute les covers dans le didl. 2025-12-06 12:48:21 +01:00
3d1673157b debug media server suite 2025-12-06 12:48:21 +01:00
b7995a14a1 fin de l'unification des métadonnées de pmocacheaudio 2025-12-06 12:48:21 +01:00
cd47266fc8 Gestion des morts prématurées. 2025-11-18 21:25:37 +01:00
9bc0c2544d Round 3 2025-11-17 21:30:26 +01:00
c81a4651d6 Simplification de la gestion des channels. 2025-11-16 08:34:20 +01:00
Claude
07dcc5bef1 Make is_valid_pk() async to use tokio::time::sleep
Changed is_valid_pk() from sync to async to properly wait for file
creation without blocking. This is a breaking change but we're in
active development.

Changes:
- is_valid_pk() signature: fn -> async fn
- Replaced std:🧵:sleep with tokio::time::sleep
- Updated all 6 call sites in pmoplaylist to add .await:
  - WriteHandle::push()
  - WriteHandle::push_set()
  - ReadHandle::pop()
  - ReadHandle::peek()
  - ReadHandle::remaining()
  - ReadHandle::get_all()

Benefits:
- Non-blocking wait for file creation during ingestion
- More idiomatic async Rust code
- Better integration with tokio runtime
2025-11-11 13:33:10 +00:00
Claude
e06a8d95df Déplacer cache registry dans les crates individuelles (pattern singleton)
Au lieu d'avoir un cache_registry centralisé dans pmoupnp qui créait
des dépendances circulaires, chaque crate a maintenant son propre
singleton global :

- pmoaudiocache : register_audio_cache() + get_audio_cache()
- pmocovers : register_cover_cache() + get_cover_cache()

Changes:
- Add singleton pattern to pmoaudiocache/src/lib.rs
- Add singleton pattern to pmocovers/src/lib.rs
- Add once_cell dependency to both crates
- Update pmoplaylist to use pmoaudiocache::get_audio_cache() as fallback
- Update pmoupnp/upnp_server.rs to use register_* functions
- Update pmoupnp/lib.rs to reexport only get_* (not register_*)
- Remove pmoupnp/src/cache_registry.rs (no longer needed)

pmoupnp réexporte get_audio_cache() et get_cover_cache() pour
compatibilité avec le code existant (pmosource, etc.).
2025-11-05 20:48:52 +00:00
Claude
a6cb7ac5e1 Add register_audio_cache to pmoplaylist (fix circular dependency)
Fix "PlaylistManager not initialized" error without creating circular
dependency between pmoparadise and pmoupnp.

Changes:
- Add AUDIO_CACHE static to pmoplaylist/manager.rs
- Add register_audio_cache() function to register cache
- Export register_audio_cache from pmoplaylist lib.rs
- Update audio_cache() to check local registry first, then pmoupnp
- Update play_and_cache example to use pmoplaylist::register_audio_cache
- Remove pmoupnp::register_*_cache functions (not needed)

The example now calls pmoplaylist::register_audio_cache() to make
the cache available for pk validation in WriteHandle::push().
2025-11-05 20:04:08 +00:00
Claude
5d88d3a25e refactor: Fix compilation warnings across multiple crates
- Remove unused imports (Filter, Digest, Resource, etc.)
- Prefix unused variables with underscore (_pk, _size)
- Fix snake_case naming for local variables
- Remove unused ArgumentError enum in pmoupnp
- Apply cargo fix suggestions for unused imports

Remaining warnings are async_fn_in_trait style warnings which
would require API breaking changes to address.
2025-11-04 22:20:35 +00:00
8389d1a78e Récupération de l'erreur git cleaning 2025-11-04 21:13:06 +01:00
157baadcfd Ajout d'un noeud puis vers le cache audio 2025-11-03 14:45:37 +01:00
5b60fdbe1d Refactoring de pmoflac -factorisation de code ogg et opus 2025-10-29 22:36:36 +01:00
93db9c25e7 la crate des playlists 2025-10-29 22:36:36 +01:00
dea7062038 Je ne sais pas trop 2025-10-29 22:35:53 +01:00
f510e59b1a Patch of the web logger 2025-10-20 19:50:58 +02:00
776c535862 amélioration de la webapp 2025-10-20 16:18:21 +02:00
5c06a0f0e9 Crée la crate pmoplaylist 2025-10-17 07:47:39 +02:00