add-ons / plugin.video.vrt.nu

Kodi add-on to watch content from VRT MAX

Home Page:https://www.facebook.com/groups/kodivlaanderen

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Port of VRT.NU plugin to Android TV

glorang opened this issue · comments

Hi Guys,

Apologies for opening this as issue but I had no idea where else I could write this amount of text so feel free to close this issue immediately.

I've just released beta version 1.0.0 of "NUPlayer", a native VRT.NU player for Android TV on my GitHub page at https://github.com/glorang/NUPlayer. It is obviously highly based on all the work you guys did, so thank you thank you thank you a 1000 times for all the great effort and documentation.

I haven't implemented everything yet and the app is a little bit basic for the moment (e.g. everything is based on the single 1y X-VRT-Token for now), but I could contribute following knowledge if it is useful for you or on the Wiki:

  • (Experimental) season parsing via the model.json looks 100% accurate if you catch the Attribute error in element 6 and try with "episodes-list" instead of "model" when it's not set. If "navigation" is unset (e.g. items is empty) there are no seasons / episodes yet, e.g. trailers for things that will be released soonish (e.g. Albatros, The Pier).
  • The VUALTO DRM / Token documentation can be found at https://docs.vualto.com/projects/vudrm/en/latest/VUDRM-token.html and https://readthedocs.com/projects/vualto-vudrm-public-docs/downloads/pdf/latest/
  • To ExoPlayer (Android's videoplayer) I can simply pass vualto-url/proxy?token=urlencoded vrt drm token, if this works in Kodi as well it can safe you an API callout to generate a token
  • I haven't checked every line of code in your implementation, but I do not see any "images.vrt.be" rewrites. I think it would be better if you rewrite images.vrt.be/orig (as received via JSON) to e.g. "images.vrt.be/w1920hx". Those orig images can go up to 18MB a piece. The less fuss we cause at VRT side the less likely they'll shut us down ;-)

During development I've also created a quick and dirty test environment of the server side implementation of VRT.NU REST API end points to keep load / testing at VRT side to a minimum. If you think this would be useful to your project as well I might consider releasing it in another repo.

Anyway, hope this is some useful info. Thanks again for everything you guys did and let me know if you're interested in collaborating.

Cheers,
Geert

@glorang Good stuff. Let's address each of these in our build.

Also, feel free to update our Wiki API documentation with improvements. As long as you don't remove anything (it's better to mark something as deprecated so we can review and remove later) you are free to help out. We could definitely improve the structure and examples.

@timrijckaert This will interest you for sure!

To ExoPlayer (Android's videoplayer) I can simply pass vualto-url/proxy?token=urlencoded vrt drm token, if this works in Kodi as well it can safe you an API callout to generate a token

I'm not sure which api call you mean. In Kodi, we need to pass a standard Widevine license key format to the InputStream Adaptive plugin. (generated with _get_license_key in streamservice.py)

I'm not sure which api call you mean. In Kodi, we need to pass a standard Widevine license key format to the InputStream Adaptive plugin. (generated with _get_license_key in streamservice.py)

Ha, yes, apologies. I was under the impression _get_license_key was doing an extra callout to VUALTO servers but that seems not the case indeed.

Aha it seems I'm not the only one interested in making an Android (TV) port of the Kodi plugin!

@glorang
In my case I split up the service from the actual Android app since I wanted a re-usable JVM lib.
You can find the service part here https://github.com/timrijckaert/vrtnu-vtmgo-vier-service.
As you can see from the name it is not limited to just use VRT NU, but also VTM GO and VIER are supported.
(VIJF and ZES should be easy to add too)
You can take a look in the README, but most features I have ported from this Python code.

This lib is not published so you'll have to check it out manually and add it locally to your dependencies if you wish to use it.
The upside to it is that you will have easy to consume models for you app and you will only need to deal with the UI.

I have just about started the app part myself here https://github.com/timrijckaert/VlaamseTV
And I'll be using this service library in my app as well.

During development I've also created a quick and dirty test environment of the server side implementation of VRT.NU REST API end points to keep load / testing at VRT side to a minimum.

I wrote one too for testing the lib end 2 end
https://github.com/timrijckaert/vrtnu-vtmgo-vier-service/blob/master/vrtnu/src/test/java/be/tapped/vrtnu/content/VRTApiE2ETest.kt

For now I'm running them locally since running them on Github actions does not work since VRT NU is using IP geoblocking.
Talking about this offline with @michaelarnauts to maybe have a hosted runner with a Belgium IP would be nice. 😅

I updated the wiki with a link to Vualto DRM documentation and implemented images rewrites to 1080p quality. I guess this can be closed.

Feel free to open a new issue or pull request if something isn't working or you have an idea to improve this add-on.