Corrige le bug empêchant la lecture d'un track Qobuz individuel depuis le ServerDrawer. - Implémente `get_item()` dans `QobuzSource` pour retourner des URLs HTTP valides au lieu de URLs symboliques - Rend `format_duration()` publique dans `pmoqobuz/src/didl.rs` - Ajoute le logging dans `pmocontrol/src/pmoserver_ext.rs` pour suivre le flux de lecture - Améliore la gestion des objets dans `pmocontrol/src/pmoserver_ext.rs` pour distinguer les conteneurs des éléments
1.6 KiB
1.6 KiB
Rapport : bug_play_single_track
Résumé
Correction du bug empêchant la lecture d'un track Qobuz individuel depuis le ServerDrawer. La cause était l'absence d'implémentation de get_item() dans QobuzSource, résultant en des URLs symboliques non jouables.
Travail effectué
- Analyse du flux : Tracé du chemin depuis le clic sur le bouton play (frontend) jusqu'au backend pmocontrol
- Identification de la cause :
QobuzSourcen'implémentait pasget_item(), donc les tracks individuels retournaient des URLs symboliquesqobuz://track/{id}au lieu d'URLs HTTP - Implémentation de la solution : Ajout de
get_item()utilisant le même mécanisme de cache lazy que les albums
Fichiers modifiés
| Fichier | Modification |
|---|---|
pmoqobuz/src/source.rs |
Ajout de get_item() dans l'impl MusicSource, import de format_duration |
pmoqobuz/src/didl.rs |
format_duration() rendue publique |
Détails techniques
Cause racine
- Albums Qobuz :
get_or_create_album_playlist_items()crée une playlist avec URLs HTTP absolues (http://base_url/audio/flac/QOBUZ:123) - Tracks individuels :
get_item()non implémenté → fallback échoue → URL symboliqueqobuz://track/123inutilisable par le renderer
Solution
get_item() :
- Parse l'object_id pour extraire le track_id
- Récupère le track via l'API Qobuz
- Enregistre le track dans le cache avec
add_track_lazy() - Retourne un
Itemavec URL HTTP absolue :http://base_url/audio/flac/QOBUZ:{track_id}
Statut
Bug résolu et testé.