Compilation handling

Issue description:

Hi, first of all i want thank you for this app which is on Android the best Subsonic client you can have right now.
I’ve a little problem with compilations: i’m using Symfonium with Astiga as Subsonic provider and i’ve some problems on viewing a whole compilation. I know that Subsonic can’t support album artist tag but on Symfonium i can’t view the whole compilation.

I saw the Astiga API documentation but i can’t figure out how Subsonic manages compilation.

Below i’ve attached an example viewing the compilation from the folder view and then as an album.

Screenshots:

Please provide logs [Wiki] How to gather logs - #2 containing a full sync so I can see the data that that server returns (Never tested that one)

Or send me a test account in private so I can repro and see what I can do.

Here’s the log with a full Sync inside, thank you Tolriq
debug-20221120_103709.zip (6,4 MB)

Ok so your server returns strange data here :frowning:

When asking for the albums it returns only 1 result for Are we too Late for the Trend?with id 22488678

        {
          "id": "22488678",
          "parent": "2045502",
          "title": "Are we too Late for the Trend?",
          "album": "Are we too Late for the Trend?",
          "name": "Are we too Late for the Trend?",
          "artist": "Bangkok Impact",
          "artistId": "2045502",
          "isDir": true,
          "duration": 1563,
          "songCount": 5,
          "coverArt": "22485070",
          "created": "2022-11-20T08:43:21",
          "starred": "2022-11-20T08:43:21",
          "year": 2003
        },

When asking for the songs of that album it returns:

          "id": "22488913",
          "parent": "22488678",
          "title": "Pop",
          "artist": "Bangkok Impact",
          "artistId": "2045502",
          "album": "Are we too Late for the Trend?",
          "albumId": "22488678",

          "id": "22485085",
          "parent": "22485069",
          "title": "Tsjupa tsjupa",
          "artist": "Mr. Clavio",
          "artistId": "22389327",
          "album": "Are we too Late for the Trend?",
          "albumId": "22485069",

          "id": "22488915",
          "parent": "22488914",
          "title": "No one Puts Baby in the Corner",
          "artist": "Red White Rose",
          "artistId": "22488916",
          "album": "Are we too Late for the Trend?",
          "albumId": "22488914",

See that the albumId is different for every songs, preventing the proper allocation of the songs to the album.

Since you have configured the app to use the Compatibility mode (probably no choice on that server) then I can mostly workaround and ignore the data and use the one I used to query, but there’s something wrong with that server that might worth reporting to them. (Maybe they can also fix the need to use compatibility mode)

TL;DR: Your server returns invalid data but as long as you use Compatibility mode I’ll be able to workaround it.

thanks Tolriq, yep that’s a very strange behaviour, the strange thing is also that Astiga API provides also a search3 endpoint but for using Astiga with Symfonium i need the compatibility mode

Yes a few providers does not support empty queries for search3 :frowning: I’ve got a few ones to fix their implementation, but some just ignore the reports (like Airsonic) and some I’m not aware but maybe you can report to them since it seems it’s a paid service I suppose they offer some kind of support.

But in this case without the compatibility mode I would not be able to properly fix the invalid data as just checking the album name would not work, there’s plenty of possible case for duplicated album name in a collection.

uhm maybe it’s worth trying to report them the thing. I saw they discovered also Symfonium at the end of june
https://twitter.com/astigamusic/status/1542449597024505858

Astiga has also a reddit and a direct community forum for support https://community.asti.ga/

Update: sorry i didn’t know that Yatse was still you :sweat_smile:

I’m not a user of that service so the report will mostly need to be from an user of their service and I’ll be able to jump in if they are interested in fixing.

ok post made and thanks again for all the help :slight_smile: :+1: Symfonium and Astiga — Astiga Community

1 Like

Off-topic: i’m using Symfonium also on WSA and is working very well :+1:

Hi, Dan here, operator of the Astiga service.

Thanks for highlighting this issue.

When asking for the songs of that album it returns […]

Do you mean via getSong ?

I think I can see that in the case of albums with different track artists we are returning different album IDs for each track. I think this is because we are not allowing the album artist to “override” the track artist and as a result we are seeing these as separate albums when viewed at the song level.

@Tolriq can you describe a little more what you mean by:

Yes a few providers does not support empty queries for search3

You’re correct we don’t support results for empty queries in any of the search methods. In your opinion, what should be the results - should it return everything? This isn’t specified at Subsonic

@gravelld

I meant via getAlbum it will returns songs with albumId that does not match the requested albumId.

But at the same time getAlbumList2 only return 1 album.

So in the end there’s no real proper way to match things. Either they are treated as different albums and the albums should be returned via getAlbumList2 or they are an unique album and then the albumId should be consistent.
In this case this can be workarounded since I know the proper albumId I want. But if you update the search3 endpoint this won’t be the case anymore.


For search3 yes it should return everything, quite a few provider support that, or have made the changes to support that. (Ensure a default sort internally to avoid non deterministic paged data on most SGDB)
Either via no query parameter or with query=“” version. I can adapt if you return your server name in the serverVersion of subsonic-response like many do too to help adapt the calls. (By default I send query=“”)

This is not specified at the API level but it’s not said it should not do that. Many do that, and this is the only way to properly get all the data in an efficient way. Else to get all the songs for an offline first app it requires getting all the albums then asking for all the songs of each albums, this triggers a tons of slow queries and so a very slow synchronisation.

Ok, I understand. I was going to ask what the actual use case was for empty search3 queries.

Is serverVersion documented anywhere? There appears to be a mix of approaches. Most just have a version string, and then a “type” for the server name.

Don’t think it’s documented so yes each do something different :frowning:

I would say serverVersion with name/1.x.y like http user agent makes the most sense.

Edit: But as long as there’s the name in one of the field I can adapt the parsing.

Yes, I was thinking the same.

Thanks for this, we’ll look to implement it soon.

If need a Symfonium license or infinite trial to do your tests just PM me;

1 Like

Thanks! And likewise.