Ampache (OpenSubsonic) - Artist art eventually fails to cache when links are non-public

App version

Production

Issue description

When Ampache is set up to deny calls to artist art links without a valid user sesion (ie, no public art links), Symfonium seems to successfully cache artist art at first, but then it disappears.

Device type

Phone

Media provider

Subsonic (Open)

Steps to reproduce

  1. Create a Subsonic (Open) provider connected to an Ampache backend
  2. During sync, refresh the All (or Album) Artists views. You’ll see Artist art is caching properly.
  3. Eventually, artist art will begin disappearing (clearing) from the Artists views.

Additional information

Backend: Ampache 7.10.0 (reproducible on dev branch)
Symfonium version: 14.1.0 (reproducible on latest beta as well)

I set up my DEV instance with only a small subset of my music to demonstrate the issue and simplify the debug output. Looking through the debug output, what seems to be happening is:

  1. Symfonium first calls the getCoverArt API to retrieve the Artist art during the initial sync. These calls are successful. Artist art is cached.
  2. During metadata sync, it calls getArtistInfo2 and pulls the ImageURLs from that output.
  3. It then attempts to update artist art again using one of the *ImageURLs in the API output.
  4. When Ampache is configured to not allow public access to artist art links, this call results in an HTTP 403 forbidden response.
  5. Although not obvious to me in the log output, I suspect Symfonium replaces the previously downloaded art via the getCoverArt call with a null entry, basically removing what it successfully downloaded earlier.

I’ve noticed that if during the getArtistInfo2 call, the API does not return any ImageURLs, Symfonium seems to leave the Artist art it previously downloaded via getCoverArt. I have a handful of Artists that fail to respond with ImageURLs for an unknown reason. These same Artists have artist art. For my test, I included examples of artists that return ImageURLs (missing artist art), and those that don’t (have artist art).

I searched existing issues first

on

I understand that logs are mandatory

on

Log upload name / description

JoeDat

Well don’t enable the additional metadata fetch on the provider if it returns unusable values ?

Well, don’t I feel dumb. That does work. What’s the purpose of that setting if it’s only grabbing metadata it already has from the initial sync with just different API calls? Is it more effective with other providers? I’m only using Subsonic.