sentriz / gonic

music streaming server / free-software subsonic server API implementation
ircs://irc.libera.chat/#gonic
GNU General Public License v3.0
1.57k stars 113 forks source link

symfonium x gonic #229

Closed Tolriq closed 2 years ago

Tolriq commented 2 years ago

It seems that Gonic Subsonic API implementation of Search3 endpoint does not support empty queries that most other servers support and allows fast and efficient sync of the database.

rest/search3.view?query=%22%22&songOffset=0&songCount=0&albumOffset=0&albumCount=0&artistOffset=0&artistCount=500

rest/search3.view?query=%22%22&songOffset=0&songCount=0&albumOffset=0&albumCount=500&artistOffset=0&artistCount=0

search3.view?query=%22%22&songOffset=0&songCount=500&albumOffset=0&albumCount=0&artistOffset=0&artistCount=0

It would be nice is this could be implemented / fixed to allow fast and efficient sync for remote clients.

sentriz commented 2 years ago

hiya Tolriq, nice to see you here :) i really liked yatse back when i used kodi

this is a nice idea, i'll try get it in before the next release

Tolriq commented 2 years ago

Thanks :) It's for a new app https://play.google.com/store/apps/details?id=app.symfonik.music.player&hl=en&gl=US

sentriz commented 2 years ago

that looks really nice I'd love to try it. though I don't have a google account. do you offer people any other way to pay? other than google play

Tolriq commented 2 years ago

No I don't, too risky to get account ban by nice Google :)

But I can provide you unlimited trial just mail me the trial id.

sentriz commented 2 years ago

just had a look, it seems symfonium sends the query as "" instead of a blank `` (which does work)

since other servers support this as you say, I just added a shim to rewrite these queries as ``


the app looks really nice, things seem to work for me - but i'll leave this open just incase and other issues arise with gonic while I use it. and feel free to put some here too :+1:

Tolriq commented 2 years ago

Well it's actually a mess, each server have it's own thing it support or not and many subtle variations in everything :p But sending "" is a little more compatible than no value so I went with this.

Something that may help in the future as I try to have branching depending on the server would be to also expose gonic version in the answers like navidrome or funkwhale:

{"subsonic-response":{"status":"ok","version":"1.16.1","type":"navidrome","serverVersion":"0.47.5 (86fe1e3b)"}} {"subsonic-response":{"funkwhaleVersion":"1.2.3+git.dc35000d","status":"ok","type":"funkwhale","version":"1.16.0"}}

Seems you only report gonic as type (It's already nice) but the version could help decide for other calls too in the future maybe. (But really optional request)

sentriz commented 2 years ago

okay nice, i might add a serverVersion or similar then. have you had a chance to try gonic after the latest commit?

sentriz commented 2 years ago

btw does symfonium support artist images with subsonic?

they seem to show up in some clients

image

but not symfonium

image

Tolriq commented 2 years ago

I don't use Gonic can't follow on every single servers for the moment. (But if you have an exposed server I can connect and test)

I do support artist images when properly returned by the search API. You can also check the provider option Force artist metadata to call the artist endpoint for each artists but this slow down the sync as requires many queries.

Maybe you can have the art returned from the search too? For the artist I check artistImageUrl and coverArt fields

I know some clients cheats and auto generate IDs for the arts when not returned, I prefer not to do that, because if it's incompatible with the server it will just constantly try to get images that do not exist.

sentriz commented 2 years ago

sounds good Tolriq,

at least for gonic it sends the coverArt field, which will be present only if a real artist image exists

PS I sent you a email with some details to an open gonic server

thanks!

Tolriq commented 2 years ago

Got your mail and found the issue for the artist images wrong test so was only using artistImageUrl and no fallback for coverArt will be fixed for next release.

That's nice another efficient subsonic server for the users:)

Tolriq commented 2 years ago

Actually no seems there's some issues with song / artist relationship and genres will look into it later.

Tolriq commented 2 years ago

Ok so @sentriz With the search3 endpoint: 1) You do not return the artistId for the songs 2) You do not return the genre for songs and albums either.

Do you think this is something you can fix?

sentriz commented 2 years ago

hey! thanks for looking into it :+1: just added support for both of those. if it seems a bit slower now let me know, I can probably do some optimisations

Tolriq commented 2 years ago

Yes it works things are properly matched now thanks. And it's still way way way way way way way way faster than using the compatibility mode that was needed before your fixes :)

sentriz commented 2 years ago

very nice! I just pushed that changed then

PS I sent you an email with my trail ID, I'd love to start daily driving and testing this

Tolriq commented 1 year ago

@sentriz Seems you did not release any new official builds with the fix present. I've got a few support about that since it requires enabling the very slow sync making the usage of Gonic less pleasant with Symfonium.

See for example https://support.symfonium.app/t/does-gonic-connection-require-very-slow-sync-enabled/811 just now.

Any plans to release something?

sentriz commented 1 year ago

yep its coming soon

release is tracked here https://github.com/sentriz/gonic/pull/218

and will be released after these are closed: https://github.com/sentriz/gonic/labels/before%20next%20release

it is also possible for someone to install from master, or use the docker :nightly tag