xbmc / Kore

Kore is a simple and easy-to-use Kodi remote.
Apache License 2.0
643 stars 244 forks source link

Add support for the Invidious add-on when sharing YouTube URLs #978

Open wtimme opened 11 months ago

wtimme commented 11 months ago

Feature suggestion

YouTube URLs shared with Kore should be playable with the Invidious add-on.

Detailed Description

Shared YouTube URLs currently require for the YouTube add-on (plugin.video.youtube) to be installed in Kodi. As outlined in #947, however, there are other plugins that support the playback of YouTube videos as well, such as the Invidious add-on.

Context

The YouTube add-on plugin.video.youtube requires an API key. As a privacy-conscious user, I do not want to sign in to Google and link my viewing habits to an account. Rather, I want to watch YouTube anonymously - and Invidious is a great way to do so.

Possible Implementation

Kore's settings could have a new ListPreference (e.g. titled "YouTube add-on") that allows users to select their preferred YouTube add-on. Internally, Kore could store the add-on's ID in the preferences.

In ShareOpenActivity.toPluginUrl(), Kore would check which add-on is selected and, based on that, create the Uri specific to the add-on.

I have already tried this with hard-coded values locally, and it seems to work as expected. Adding a ListPreference would allow us to extend this to other add-ons as well.

One thing to note is that not every add-on supports queuing. The Invidious add-on, for example, does not. But for the MVP, I think it would be perfectly fine to only have the video played back.

Additional context, screenshots or links

Here are some relevant links or screenshots:

Note: Team Kodi will consider this item however we will not make any promises if it will be included.

basilgello commented 11 months ago

not every addon supports queuing

Look at https://github.com/Tolriq/repository.yatse.kodi/pull/41 how queuing is done - the plugin:// url is put into playlist which is queued. Also I encountered an issue with -1 as addon_handle and made a workaround PR referenced in the same link (but not merged yet :( )