Open Tolriq opened 1 year ago
@kagemomiji small bump, got more and more request from users to have a maintained Airsonic server working fast with Symfonium. (https://github.com/kagemomiji/airsonic-advanced/issues/129)
Would be nice if you were opened to quickly improve the situation with at least a small change to the search3 endpoint to support empty query and allow fast sync.
@Tolriq I'm now working on #129. Could you try ghcr.io/kagemomiji/airsonic-advanced:pr-294 docker image. It supports empty query but I can not justify its behavior is correct or not.
Thanks, did a quick test and it works, but I've asked an user to test on a larger library to be sure there's no issue with the DB backend that might require a forced sort during pagination.
If you merge this can you also check https://opensubsonic.netlify.app/docs/responses/subsonic-response/ and return a type field in the "subsonic-response" so Symfonium can detect your server type and do not bug users about it not supporting fast sync?
So from the tests it works in all cases, no DB sort issues on his server. The only question @kagemomiji would be that the search3 query with songCount=500 & songOffset=20000 for example are quite slow (like 5 seconds on his server with 100K songs). Don't know if it's something you can check or not.
@Tolriq I've confirmed the issue. In order to improve the speed, I need to modify the implementation of the search functionality.
@kagemomiji
I have been running latest docker tag with symfonium, today I noticed it no longer worked, it may have been broken for quite a while now I can't pinpoint exact point in time. Moving to 11.1.3 works again.
The difference I found is that with 11.1.3 the path /rest/ping.action
works while with latest only /rest/ping
works, symfonium uses /rest/ping.action
from the specification it seems that ping.action is the correct endpoint.
I also skimmed through the commits but from that I can't really understand when it stopped working, I'll try to clone and run a bisect hopefully I can pinpoint where.
What's missing exactly for the API implementation to be 100% OpenSubsonic compatible? I thought it was done a while ago, but Symfonium still takes ages syncing a library
@nelsongraca @awsms Due to the upgrade to SpringBoot3, the stricter API path matching is the cause of the issue with ping.action. In version 11.1.3, the path was matched with the string ping.?*, but currently, it is defined to match only ping and ping.view.
I believe the slow synchronization of the library is due to inefficient implementation of paging, but no fixes have been made to address this issue yet.
Scope
RestfulAPI
What problem
This is by side effect related to https://github.com/kagemomiji/airsonic-advanced/issues/129
Due to limitations in Subsonic API after months of effort a group of Subsonic servers and clients are trying to build an extension to the Subsonic API to fix some issues and add the missing features to have a complete and more modern API.
See: https://github.com/opensubsonic/open-subsonic-api and https://opensubsonic.netlify.app/
Any server and clients are free to join and contribute to this project.
Feature
See above, and be part of the future.