sentriz / gonic

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

stream_id in Podcast object is used differently from Subsonic #456

Closed khers closed 5 months ago

khers commented 5 months ago

First, thanks for taking the time to handle all these nit-picky bugs about API, I am writing a python library for talking to an Open Subsonic server and trying to follow the specs.

This one is not so clear cut as the spec is TBD for what this object looks like. In Subsonic and its follow on Java implementations the stream_id field holds the episode number for the episode instead of duplicating the object ID.

gonic version: 0.16.2

if from docker, docker tag: latest if from source, git tag/branch:

sentriz commented 5 months ago

gonic doesn't have a streamId for podcasts, only podcastepisodes. and it's streamId is the podcastepisode ID (to be used for stream.view)

not sure what the issue is you're describing

khers commented 5 months ago

Sorry, I meant the PodcastEpisode. This object already has an id that holds the gonic id. For instance the following episode that comes back:

{
  'id': 'pe-3002',
  'streamId': 'pe-3002',
  'channelId': 'pd-13',
  'title': '10.15- The Tsar Must Die',
  'description': 'Kids today have no respect.\n\nSponsor: casper.com/revolutions',
  'publishDate': '2019-09-23T11:58:04Z',
  'status': 'completed',
  'parent': '',
  'isDir': False,
  'year': 2019,
  'genre': 'Podcast',
  'coverArt': 'pd-13',
  'size': 59728794,
  'contentType':
  'audio/mpeg',
  'suffix': 'mp3',
  'duration': 1866,
  'bitrate': 256,
  'path': ''
}

Note that id and stream_id hold the same information. On other Subsonic implementations id would hold 'pe-3002' as it does here but stream_id would hold the number of this episode (like the index for this episode into a list of episodes sorted by release date).

Is that a clearer description?

sentriz commented 5 months ago

i see. but you should just stream the streamid as as an identifier to be passed to stream.view. the actual value is an implementation detail of the server i think it shouldn't relevant to client

khers commented 5 months ago

Sure, but I can stream the id field here as I do with music tracks. This is only a suggestion as the API spec is TDB on podcasts, feel free to close.

sentriz commented 5 months ago

i think any id field is up the server. some use ints (as strings) some use prefixes, some uuids, some use id and set a different auto-increment per table