diff --git a/changelog.txt b/changelog.txt index 2c604372..b2ab5b0a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,6 @@ -[B]Retrospect v5.5.14 - Changelog - 2023-03-03[/B] +[B]Retrospect v5.5.15 - Changelog - 20xx-xx-xx[/B] -This updates fixes an issue with NPO and adds Extra's and Fragments (Clips) for NPO (Thanks to @gvtulder). It also adds the Tweede Kamer Debat TV and fixes an issue with Radio 538 playback. +t.b.d. [B]Framework related[/B] _None_ @@ -9,7 +9,4 @@ _None_ _None_ [B]Channel related[/B] -* Fixed: NPO video playback broken (Fixes #1679). -* Added: Tweede Kamer Debat Direct (Fixes #1394). -* Added: List NPO Start Extra's and Fragmenten (Fixes #1649). -* Fixed: Some Radio 538 Video streams did not play (Fixes #1685) +* Fixed: Videos from Vier/Vijf/Zes (GoPlay.be) fail to play (Fixes #1691). diff --git a/channels/channel.be/vier/chn_vier.py b/channels/channel.be/vier/chn_vier.py index 584ca8fb..2579bc34 100644 --- a/channels/channel.be/vier/chn_vier.py +++ b/channels/channel.be/vier/chn_vier.py @@ -12,6 +12,7 @@ from resources.lib.urihandler import UriHandler from resources.lib.parserdata import ParserData from resources.lib.streams.m3u8 import M3u8 +from resources.lib.streams.mpd import Mpd from resources.lib.helpers.datehelper import DateHelper from resources.lib.addonsettings import AddonSettings from resources.lib.xbmcwrapper import XbmcWrapper @@ -602,6 +603,19 @@ def __update_video(self, item, data): json_data = JsonHelper(data) m3u8_url = json_data.get_value("manifestUrls", "hls") + # If there's no m3u8 URL, try to use a SSAI stream instead + if m3u8_url is None and json_data.get_value("ssai") is not None: + return self.__get_ssai_streams(item, json_data) + + elif m3u8_url is None and json_data.get_value('message') is not None: + error_message = json_data.get_value('message') + if error_message == "Locked": + # set it for the error statistics + item.isGeoLocked = True + Logger.info("No stream manifest found: {}".format(error_message)) + item.complete = False + return item + # Geo Locked? if "/geo/" in m3u8_url.lower(): # set it for the error statistics @@ -610,4 +624,24 @@ def __update_video(self, item, data): item.complete = M3u8.update_part_with_m3u8_streams( item, m3u8_url, channel=self, encrypted=False) + def __get_ssai_streams(self, item, json_data): + Logger.info("No stream data found, trying SSAI data") + content_source_id = json_data.get_value("ssai", "contentSourceID") + video_id = json_data.get_value("ssai", "videoID") + + streams_url = 'https://dai.google.com/ondemand/dash/content/{}/vid/{}/streams'.format( + content_source_id, video_id) + streams_input_data = { + "api-key": "null" + } + streams_headers = { + "content-type": "application/json" + } + data = UriHandler.open(streams_url, data=streams_input_data, additional_headers=streams_headers) + json_data = JsonHelper(data) + mpd_url = json_data.get_value("stream_manifest") + + stream = item.add_stream(mpd_url, 0) + Mpd.set_input_stream_addon_input(stream) + item.complete = True return item