jellyfin / jellyfin-androidtv

Android TV Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.69k stars 460 forks source link

[Feature Request] Integrate with new Google TV #617

Closed SteveDinn closed 1 year ago

SteveDinn commented 3 years ago

I don't know if this is beyond the purview of the Chromecast app, but it seems like it would be a lofty goal for Jellyfin to sit on the screen beside Netflix, Disney+, HBO Max, and Hulu on the screen of the new "Chromecast with Google TV" device that has just been announced.

https://youtu.be/q2HSJHOMDyk?t=308

I have no idea how this might happen, or if it is even possible -- maybe it's a completely separate app -- but I know that whoever reads this issue is probably smarter than me. I'm sure there are several sub-areas of this issue, like search, genre browsing, recommendations, and just getting the app on there in the first place.

Maybe this more in the realm of the Android TV app, but I wanted to get this down in text.

Thanks for all you guys are doing!

neopc10 commented 3 years ago

This is for ATV and I think you're looking for the Android TV receiver app.. I don't think that Jellyfin as a "service linked to GTV" is achievable.

nielsvanvelzen commented 3 years ago

The new chromecast is basically Android TV but with Google specific changes. It probably works fine with our current chromecast receiver and Android TV app. Additional integration with the OS is planned for Android TV and should hopefully work with the specific changes from Google but we'll see.

Xyz00777 commented 3 years ago

Already any new information? I would really like to see my jellyfish content directly at the home screen... :)

ferferga commented 3 years ago

This should be moved to Android TV @jellyfin/core

nielsvanvelzen commented 3 years ago

Although planned we have not started integrating the cast receiver yet. We are still working on our next release (0.12)

ipenovich commented 3 years ago

I think this would come under this ticket, but let me know if I should open a separate enhancement request.

I believe SteveDinn was referring to the way Android TV (which powers the UI on the new Chromecast) indexes content from within your video apps, so when you search for a title it will give you deep links to all the installed apps that offer the title.

For example, if I search for Die Hard, it shows me the info card saying the title is available from Netflix (included with sub), Amazon (for £x.xx), and Google Play Movies (for £x.xx). If the Jellyfin app were searchable, it would be included if I had the title in my library.

See the details here: https://developer.android.com/training/tv/discovery

nielsvanvelzen commented 3 years ago

Search integration is planned but not possible with our current codebase (need the new apiclient).

SteveDinn commented 3 years ago

Yes, I've installed Jellyfin, and the android TV client works well on the Chromecast with Google TV, but search integration would be awesome.

phirestalker commented 2 years ago

Where can I track progress on the new apiclient or the search integration specifically?

nielsvanvelzen commented 2 years ago

The pull request for search integration is #900.

brianjmurrell commented 2 years ago

I think all of this is achieve with https://developer.android.com/training/tv/start/google-tv#content-discovery. If I am not mistaken/misunderstanding.

But indeed, having all of JF content surfaced up to the main Google TV UI level would be awesome.

nielsvanvelzen commented 2 years ago

The "Media Actions Feed" feature can't be used as this data is dynamic (depends on the Jellyfin server) instead of static (like a hosted service as Netflix). The "Play Next" feature is already implemented in 0.11

brianjmurrell commented 2 years ago

The "Media Actions Feed" feature can't be used as this data is dynamic (depends on the Jellyfin server) instead of static (like a hosted service as Netflix).

I'm not really sure I see the distinction. Content comes and goes on Netflix, just like it would on a Jellyfin server. New content is added all of the time, and other content is removed as Netflix's license to provide it expires, etc.

So what is the practical difference?

The "Play Next" feature is already implemented in 0.11

I'm not sure what you are referring to as "Play Next", but ultimately, I don't see any of my JF content surfaced to the Google TV UI at all and I am using 0.12.3. I always have to open the JF app to see any of it.

Xyz00777 commented 2 years ago

I dont Know how the feature in Google works but JF caches most or many of the needes info on the local system or not? Couldn't we just use them somehow?

nielsvanvelzen commented 2 years ago

I'm not really sure I see the distinction. Content comes and goes on Netflix, just like it would on a Jellyfin server. New content is added all of the time, and other content is removed as Netflix's license to provide it expires, etc.

So what is the practical difference?

I dont Know how the feature in Google works but JF caches most or many of the needes info on the local system or not? Couldn't we just use them somehow?

You need to upload a static JSON file to Google's cloud, there can be only one database per app. So no this is impossible for an app like Jellyfin.

I'm not sure what you are referring to as "Play Next",

It's the second item in the link you posted

brianjmurrell commented 2 years ago

You need to upload a static JSON file to Google's cloud, there can be only one database per app. So no this is impossible for an app like Jellyfin.

Ahhh. This is where the disconnect is. I read For Google to obtain your feed, you need to store the feed in a file and host the file in a location where Google can access it. as the feed being on the local device. As in JF stores the feed file locally and Google TV uses the locally stored feed file. I can see how I may have misinterpreted that.

Being able to search and have recommendations, and generally just have content from a local media server surfaced to the Google TV UI seems like a GTV feature gap. I wonder if this is something they have decided they will never support.

It's the second item in the link you posted

Ahh. Interesting. I am not seeing this behaviour in 0.12.3 either.

Does that feature just pull all of the in-progress TV shows (i.e new episodes) from every JF user account or does a JF account have to be associated to the GTV user in some way? If so, can multiple JF users be associated with a single GTV account?

nielsvanvelzen commented 2 years ago

The Jellyfin (authentication) settings have an option to set the "system user". This is the account used for integrations like nextup/search.

I don't have a Google TV device myself so my only testing with it is trough the emulator which doesn't really work for me. I know that some functions of the Google TV launcher use a whitelist made by Google to only show content from certain (google approved) apps. It might be possible they did this for all functions and Jellyfin won't be able to integrate with the system.

Xyz00777 commented 2 years ago

Okay, when I understood it correct its at the moment not possible correct? Did anybody possible know a launcher who support these?

brianjmurrell commented 2 years ago

The Jellyfin (authentication) settings have an option to set the "system user". This is the account used for integrations like nextup/search.

I do have such a user. I think. This is the user that has access to the admin dashboard, yes? Does this user/account need to be named in any special way?

But then how does this map to what shows each individual JF user is watching and what the next episode is for them, etc?

nielsvanvelzen commented 2 years ago

No the system user is the account used to make the API calls, so if "user x" is the primary user of your television you should set it to "user x". The default value (Most recently used) should be fine though.

brianjmurrell commented 2 years ago

I'm afraid I'm not understanding your explanation of what the "system user" is. What is "user x"? Is that one of my Jellyfin server user accounts?

you should set it to "user x".

Set it how? This seems to need some "how to" type documentation as this is something that is going to affect most users is it not?

phirestalker commented 2 years ago

Do we know if google fetches these media lists from their servers or if the Chromecast downloads them? If the Chromecast downloads them, then each person running their own Jellyfin server could run a DNS proxy and redirect the request to a file generated by their local Jellyfin server. If google downloads the list, will they do any Oauth authentication? If so, then Jellyfin team might offer a service for say $10 a year to host the list for each user and when Google authenticates as that user, the right file is downloaded.

Just some raw thoughts, maybe it will trigger someone smarter to find an amicable solution.

anthonylavado commented 2 years ago

Do we know if google fetches these media lists from their servers or if the Chromecast downloads them?

It can either be hosted by Google or elsewhere, but the issue is twofold:

  1. It requires a full list of content for the application/service and is not customizable by user (even the example feed for a service like Netflix includes the setting of country/region availability)

  2. The Media Actions feed is only available by invitation from Google at this time

In this case, neither of those work for us. At best someone would have to write an app (on Amazon Echo devices these are "Skills"), that a user could invoke to search their own server. We wouldn't run one ourselves as we try to avoid centralization for something like that.

brianjmurrell commented 1 year ago

Of course number 2 is a show-stopper for now.

But when it's not, then #1 seems plausible, with the kind of DNS (or ip address -- at the border router) redirection described by @phirestalker describes.

nielsvanvelzen commented 1 year ago

As mentioned before, we integrate with Android TV and that doesn't work with the Google TV launcher because of limitations we can't workaround. Closing the issue as completed. If you truly believe it's possible I look forward to your pull request.