austinried / subtracks

A music streaming app for Subsonic-compatible servers
GNU General Public License v3.0
705 stars 31 forks source link

ping vs ping.view #42

Closed count00zero closed 2 years ago

count00zero commented 2 years ago

I tested Subtracks with navidrome and it works fast and I like it a lot.

Then I tried it with ampache but wasn't able to connect. Main problem seems to be, that ampache requires ping.view when subtracks uses just ping

Is there anything I could do (i.e. change nginx rewrite rules) or can the app be adjusted (if necessary)

THANKS!

count00zero commented 2 years ago

same happens with airsonic (advanced)

austinried commented 2 years ago

I looked into this a bit and from what I can tell it seems like Ampache's support for the Subsonic API (and apparently Airsonic's) was targeting an older version, one that had those .view extensions on the method endpoints (what version that is though I can't seem to find). Those .view extensions appear just a couple times in the Subsonic API docs as well in examples but not on any of the actual method URLs. Maybe I can scrub through the wayback machine to find out when that changed...

Anyway, I also looked through DSub's code to find out how other players were handling this and it appears they're just always appending .view to the method. I tested this and it seems to work fine with Navidrome as well.

So I'm going to do a bit more testing and research on this but it looks like I have a potential fix for this. I would like to lock down which version of the API I'm actually targeting by using those before I merge in a change, however.

austinried commented 2 years ago

Well I've isolated the change in the API. They didn't make it easy as it doesn't appear in any changelogs that I can find, but it looks like it was updated in 2017 with the release of API version 1.15.0, which is the version I'm currently targeting

Jan 2017 (API version 1.14.0, has .view): https://web.archive.org/web/20170109012352/http://www.subsonic.org/pages/api.jsp Apr 2017 (API version 1.15.0, does not have .view): https://web.archive.org/web/20170406054654/http://www.subsonic.org/pages/api.jsp

I'll have to double check that I'm not using anything new in the 1.15.0 API version when compared to the older 1.14.0, but I think I'll be able to target the older version and then support this.

count00zero commented 2 years ago

By the way: thanks for the fast way of fixing (implementing) the usage of the older API version!!!

count00zero commented 2 years ago

There still seems to be a version Problem with ampache & Subtracks -> https://github.com/ampache/ampache/issues/2494#issuecomment-990388520

austinried commented 2 years ago

Well it looks like I might have jumped the gun on a bit on this then, on the client end that is, since I was only going from 1.15.0 to 1.14.0 since that's when the *.view change was implemented on the endpoints. I probably should have looked further into this for Ampache's specific API support, which appears to be 1.13.0 at max.

This could be a bit more of an issue for client features coming up, since 1.14.0 introduced the getAlbumInfo endpoint, which I don't currently use but was looking to implement in the future. Looks like this is where I will have to start implementing feature checks based on server version eventually.

I'll open another issue for this to research exactly how far back I can slide the version support for what I'm using now, which I know should be at least to 1.13.0, and then that will give me a better bottom floor to start from I think.