Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jellyfin support? #75

Open
CrazyWolf13 opened this issue Jul 1, 2023 · 3 comments
Open

Jellyfin support? #75

CrazyWolf13 opened this issue Jul 1, 2023 · 3 comments
Labels
enhancement New feature or request

Comments

@CrazyWolf13
Copy link

Jellyfin support would be very cool as it basically replaces the paid plex.

@memen45 memen45 added the enhancement New feature or request label Aug 22, 2023
@memen45
Copy link
Owner

memen45 commented Sep 29, 2023

Thanks for your feedback and suggestion! There have been more requests to implement Jellyfin support, so I thought it would be useful to start documenting the required information. If you have a server available to test and find out how to obtain the below information from the API, please feel free to share your insights.

  • how to obtain access to the API? Authentication flow, username password, keys.
  • how to obtain the required data? Below you can find the current features that are supported by SubMusic that require communication with the backend server.
provider method Jellyfin API description Content-Type
ping / returns an object with server version application/json
recordPlay submit a play application/json
getAllPlaylists returns array of all playlists available for the user application/json
getPlaylist returns an array of one playlist object with {id} application/json
getPlaylistSongs returns an array of songs on the playlist with id application/json
getRefId returns a refId for a song by {id} (this downloads the song) audio/*
getArtwork returns a BitmapResource for a song id image/*
getAllPodcasts returns array of all podcasts available for the user application/json
getPodcast returns an array of one podcast object with {id} application/json
getEpisodes returns array of episodes for podcast with {id} application/json

The Jellyfin API is documented here.

@mattgit
Copy link

mattgit commented Oct 4, 2023

Thanks for your feedback and suggestion! There have been more requests to implement Jellyfin support, so I thought it would be useful to start documenting the required information. If you have a server available to test and find out how to obtain the below information from the API, please feel free to share your insights.

  • how to obtain access to the API? Authentication flow, username password, keys.
  • how to obtain the required data? Below you can find the current features that are supported by SubMusic that require communication with the backend server.

provider method Jellyfin API description Content-Type
ping / returns an object with server version application/json

https://api.jellyfin.org/#tag/System/operation/GetSystemInfo
Resp: Version

recordPlay submit a play application/json

meaning?

getAllPlaylists returns array of all playlists available for the user application/json

https://api.jellyfin.org/#tag/Items includeItemTypes "Playlist"

getPlaylist returns an array of one playlist object with {id} application/json

What's taking in input?

getPlaylistSongs returns an array of songs on the playlist with id application/json

https://api.jellyfin.org/#tag/Playlists/operation/GetPlaylistItems

getRefId returns a refId for a song by {id} (this downloads the song) audio/*

https://api.jellyfin.org/#tag/Library/operation/GetDownload ?

getArtwork returns a BitmapResource for a song id image/*

https://api.jellyfin.org/#tag/Image/operation/GetItemImage

getAllPodcasts returns array of all podcasts available for the user application/json

https://api.jellyfin.org/#tag/Items includeItemTypes "Series" => some kind of? I'm not sure here

getPodcast returns an array of one podcast object with {id} application/json

https://api.jellyfin.org/#tag/Items ids

getEpisodes returns array of episodes for podcast with {id} application/json

https://api.jellyfin.org/#tag/TvShows/operation/GetEpisodes

The Jellyfin API is documented here.

trying

thank you, this would be great as Jellyfin has everything you need for free and it's really opensource.

@memen45
Copy link
Owner

memen45 commented Oct 4, 2023

Thanks for your help! I see that the Items endpoint is the one to use for discovering the playlists, couldn't find it before.

Found the authentication method here: /Users/AuthenticateByName. Username and password are sent in plain text, response contains the AuthToken key. This token can be used in Authorization header as described here.

The recordPlay function submits a timestamp + song id to record that the song has been played. This is typically used for statistics on the server side. Still unclear which endpoint could achieve it.

I've been searching for podcast support. Unfortunately, it looks like Jellyfin does not support it yet, see more details here. For SubMusic, this is not a problem at all, as the Plex backend also lacks podcast support. For normal playlists you can still enable podcast mode if needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants