Aller au contenu
Documentation
Le projet

Serveur — App et API

Albums studio manquants

Lacunes des discographies enregistrées et décisions personnelles réversibles.

GET /api/me/v1/missing consulte les discographies MusicBrainz fiables déjà enregistrées, avec la même règle aede-core::missing que aede missing. Les éléments manquants sont des groupes de parution attribués, sans pistes lisibles ni dossier physique. Seuls les artistes ayant des albums principaux sont concernés. Les identifiants de groupes de parution et les titres normalisés excluent les albums possédés ; le profil inclut seulement les albums studio. Cette lecture ne télécharge aucune donnée externe.

La réponse du propriétaire authentifié accepte uniquement offset, limit (1–200) et include_set_aside (booléen, faux par défaut). Chaque élément comprend artist (référence native), artist_name, release_group (UUID MusicBrainz), title, year éventuellement nul, set_aside, source et url. L’enveloppe conserve items,total,offset,limit,scanned_at. Avec include_set_aside=true, les suggestions masquées par ce propriétaire sont aussi présentes afin de pouvoir les restaurer.

PUT /api/me/v1/missing accepte exactement {release_group:"UUID",set_aside:true|false}, sans paramètre d’URL. Un utilisateur ou administrateur peut masquer une suggestion actuelle d’album studio manquant, ou restaurer une décision ; les auditeurs sont refusés. L’écriture personnelle sous verrou conserve le propriétaire courant et préserve les magasins illisibles. Les écritures identiques répétées sont idempotentes ; au plus 4096 décisions par propriétaire. L’UUID évite de masquer un autre album homonyme. Aucun enregistrement de source, fichier audio, tag ou album du catalogue n’est supprimé. L’actualisation des discographies et les ajouts ordinaires recalculent les manquants sans indicateur persistant devenu obsolète.

Cette route personnelle existe en HTTP et HTTPS authentifié, annoncée par missing_studio_albums dans le statut. Aucun propriétaire, chemin ou URL externe n’est accepté. Les états occupés, corrompus, révoqués ou indisponibles suivent les erreurs des autres routes personnelles. Le client doit expliquer l’absence de cette capacité avant de proposer une modification sur un ancien serveur.

Pochettes en cache#

GET /api/me/v1/missing/cover?artist=artist:…&release_group=UUID lit uniquement une image Cover Art Archive déjà validée et enregistrée. POST sur la même route, avec ces deux sélecteurs et un corps vide, la récupère si elle manque. Le client peut activer cette récupération à l’ouverture d’une vue d’albums manquants ; les GET ordinaires du catalogue ne contactent aucun service externe. L’album doit encore être un album studio manquant de l’artiste principal indiqué. L’autorisation du compte est vérifiée avant et après le travail. Un auditeur peut lire le cache mais ne peut pas employer POST ; propriétaire, chemin, URL, taille, paramètres inconnus et corps non vide sont refusés.

Avec la fonctionnalité serveur facultative fetch, le statut annonce missing_album_covers. Les builds CLI par défaut l’activent ; sans fetch, GET reste disponible pour le cache et POST renvoie 501. Chaque serveur partage un client d’archive limité à une requête par seconde ; les téléchargements simultanés sont refusés comme occupés. Index et images conservent la limite de 32 Mio et le délai de 25 secondes par requête d’Aède. Seules les autorités HTTPS de l’archive sont acceptées pour les images. La validation des JPEG/PNG statiques complets et le rendu à 512 pixels réutilisent le traitement d’images existant. Le stockage se fait sous missing-coverartarchive/UUID/ dans les données, jamais dans les dossiers musicaux ; le cache existant est réutilisé et les cibles illisibles ou symboliques sont refusées. Les réponses négatives de l’archive restent 24 heures en mémoire bornée du processus.

La réponse contient une image JPEG/PNG avec no-store, ou 204 si aucune face avant n’est disponible. Occupation, réseau ou image illisible produisent une erreur 503 explicite. L’attribution reste Cover Art Archive / MusicBrainz ; aucune licence d’image n’est déduite. Les droits restent ceux de leurs titulaires.

La récupération commence désormais par la pochette représentative CAA /release-group/{id}/front-500, avant le repli sur l’index JSON. Une vignette absente ou défectueuse peut utiliser la pochette originale, avec les mêmes limites. Les anciennes adresses HTTP de l’archive sont converties en HTTPS uniquement pour les domaines d’archive déjà autorisés. Les images restent validées avant leur conservation dans le cache séparé.