kellnerd / harmony

Music Metadata Aggregator and MusicBrainz Importer
MIT License
55 stars 7 forks source link

Deezer's API returns alternative release with different GTIN and availability #45

Open kellnerd opened 5 months ago

kellnerd commented 5 months ago

Lookup using all providers

Providers have returned multiple different GTIN: 794558049368 (Spotify, iTunes, Tidal), 197189103209 (Deezer)

Lookup without Deezer returns a release which is only available outside of Europe

Lookup using only Deezer returns a release which is only available in Europe with a different barcode

Does this happen because Deezer does not have the other release or because their API is queried from a European server?

We should probably adapt the Deezer provider to return an error message which contains the correct GTIN to lookup instead of returning the result.

GTINs with similar issues:

kellnerd commented 5 months ago

The problem is actually even worse, the API does this not only for GTIN lookups but even for ID lookups:

ID 324028037 is available in AT/CH/DE, which returns the expected result when queried from DE but ID 53024752 when queried from FR, for example. The DE/AT/CH has the GTIN 4018939266684 and would match the results for the other providers, but Deezer rather returns the different release (GTIN 724353078027) which would be available in FR. Not even specifying the correct Deezer ID in addition to the GTIN helps here.

No idea why Deezer suddenly changed the behavior of their API, but this makes the Deezer provider unusable for releases which are not available in the server's region :sob:

atj commented 5 months ago

Is this definitely a change in behaviour or could it just not have been noticed before? I think I mentioned that the API sometimes returned "Various Artists" in French in the past, which I assumed was related to the server location, so this kind of weirdness is not unheard of.

kellnerd commented 5 months ago

It is a change in behaviour, not too long ago these lookups were still working as expected. Only recently we got an increasing number of GTIN conflicts caused by Deezer, previously iTunes was the main offender.

According to the logs the issue probably started on June 20:

harmony-log | grep "Providers have returned multiple different GTIN" | grep "(Deezer)"
atj commented 5 months ago

The following thread on the forum indicates others have been experiencing different API behaviour recently:

https://en.deezercommunity.com/other-devices-49/deezer-lms-plugin-for-squeezebox-suddenly-not-working-79033

kellnerd commented 4 months ago

For the time being I have at least made the Deezer provider fail lookups if they return an ID or GTIN which is different from the one which was requested: https://github.com/kellnerd/harmony/commit/4702fcb33183131823dd5620ca9925cf7990e319 Now combined lookups of multiple sources no longer fail because of a GTIN merge conflict. The error message includes the returned release URL or GTIN, so it is simple to still get these Deezer results if that is desired.