Files
pmomusic/Blackboard/Done/bug_url_cover.md
Eric Coissac 066e2fe008 Corrige le bug d'URL relative pour la cover dans pmoqobuz
Correction du bug où l'URL de la cover générée par pmoqobuz était relative au lieu d'être absolue, comme pour le flux audio. Ajout de la conversion de l'URL de la cover en URL absolue dans la fonction adapt_playlist_items_to_qobuz. Version mise à jour de 0.3.5 à 0.3.6.
2026-01-16 23:35:07 +01:00

2.0 KiB

Bug URL relative de la cover - TERMINÉ

Description du bug

Le document DIDL généré par les PMO playlists possédait une URL absolue pour le flux audio, mais une URL relative pour la cover. Les deux entités (flux audio et cover) sont stockées dans des caches pmoaudiocache et pmocovers respectivement.

Crates concernées

  • pmoqobuz (crate corrigée)
  • pmoplaylist, pmocache, pmoaudiocache, pmocovers, pmodidl (explorées pour l'analyse)

Analyse

Architecture des URLs dans PMOMusic

  1. pmocache::FileCache::route_for retourne une route relative (ex: /audio/flac/abc123, /covers/images/def456)

  2. Les sources (pmoqobuz, pmoparadise) reçoivent un base_url à leur création et sont responsables de convertir les URLs relatives en absolues avant de retourner les résultats de Browse.

  3. pmoplaylist::ReadHandle::to_items génère des items DIDL avec des URLs relatives pour l'audio ET la cover.

Localisation du bug

Le bug se trouvait dans pmoqobuz/src/source.rs dans la fonction adapt_playlist_items_to_qobuz.

Cette fonction convertissait correctement l'URL audio en URL absolue mais oubliait de faire la même conversion pour item.album_art (la cover).

Comparaison avec pmoparadise

pmoparadise/src/source.rs faisait déjà correctement les deux conversions (audio et cover).

Correction appliquée

Fichier modifié

  • pmoqobuz/src/source.rs

Modification

Ajout de la conversion de l'URL de la cover dans adapt_playlist_items_to_qobuz :

// Convertir l'URL de la cover en URL absolue si elle est relative
if let Some(art) = item.album_art.as_mut() {
    if art.starts_with('/') {
        *art = format!("{}{}", self.inner.base_url, art);
    }
}

Pattern architectural

Chaque source qui utilise pmoplaylist::to_items() doit post-traiter les items pour convertir les URLs relatives (/audio/..., /covers/...) en URLs absolues en utilisant son base_url.

Statut

TERMINÉ - La compilation réussit après la correction.