From fc7c1c38898792deff9d191c9d0dc5cee3bf3158 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Fri, 27 Nov 2020 17:10:23 -0500 Subject: [PATCH] test --- data/internal_config/serviceconf.json | 8 +- fHDHR/origin/origin_channels.py | 153 +++----------------------- 2 files changed, 25 insertions(+), 136 deletions(-) diff --git a/data/internal_config/serviceconf.json b/data/internal_config/serviceconf.json index 22e6fd2..70c887a 100644 --- a/data/internal_config/serviceconf.json +++ b/data/internal_config/serviceconf.json @@ -60,5 +60,11 @@ "config_web": true } }, - "newson":{} + "newson":{ + "force_best":{ + "value": false, + "config_file": true, + "config_web": true + } + } } diff --git a/fHDHR/origin/origin_channels.py b/fHDHR/origin/origin_channels.py index b5905ae..c1dcb05 100644 --- a/fHDHR/origin/origin_channels.py +++ b/fHDHR/origin/origin_channels.py @@ -1,3 +1,4 @@ +import m3u8 class OriginChannels(): @@ -30,144 +31,26 @@ class OriginChannels(): origin_chandict = self.get_channel_dict(channels_json, "identifier", chandict["origin_id"]) streamdict = self.get_channel_dict(origin_chandict["streams"], "StreamType", 'website') streamurl = streamdict['Url'] + if self.fhdhr.config.dict["origin"]["force_best"]: + streamurl = self.m3u8_beststream(streamurl) return streamurl def get_channel_dict(self, chanlist, keyfind, valfind): return next(item for item in chanlist if item[keyfind] == valfind) + def m3u8_beststream(self, m3u8_url): + bestStream = None + videoUrlM3u = m3u8.load(m3u8_url) + if not videoUrlM3u.is_variant: + return m3u8_url -""" -{ - 'identifier': 6, - 'title': 'KCCI - Des Moines/Ames', - 'icon': 'http://static.newson.akm.cdn.vinsontv.com/icons/v3/hearst/KCCI.png', - 'streams': [ - { - 'ID': 397, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'android', - 'OffsetFromNow': -40, - 'ConfigValue': { - 'streamurlforlive_disabled': 'https://content.uplynk.com/channel/b7fea39aaff14c9aa9ab46db28c74fab.m3u8?ad=kccimidroll_newson_live' - } - }, - { - 'ID': 1174, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'website', - 'OffsetFromNow': -40, - 'ConfigValue': {} - }, - { - 'ID': 12, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?cdn=1×tamps=true', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?cdn=1×tamps=true&starttimestampdef=', - 'StreamType': 'thumbnail', - 'OffsetFromNow': -40, - 'ConfigValue': None - }, - { - 'ID': 13, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'iPad', - 'OffsetFromNow': -40, - 'ConfigValue': { - 'streamurlforlive_disabled': 'https://content.uplynk.com/channel/b7fea39aaff14c9aa9ab46db28c74fab.m3u8?ad=kccimidroll_newson_live' - } - }, - { - 'ID': 14, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'iPhone', - 'OffsetFromNow': -40, - 'ConfigValue': { - 'streamurlforlive_disabled': 'https://content.uplynk.com/channel/b7fea39aaff14c9aa9ab46db28c74fab.m3u8?ad=kccimidroll_newson_live' - } - }, - { - 'ID': 252, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'roku', - 'OffsetFromNow': -40, - 'ConfigValue': {} - }, - { - 'ID': 2021, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'firetv', - 'OffsetFromNow': -40, - 'ConfigValue': {} - }, - { - 'ID': 1797, - 'ChannelID': 6, - 'Url': 'http://newson-vsms.trafficmanager.net/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b', - 'TimeshiftedUrl': 'http://newson-vsms.trafficmanager.net:80/KCCI_1606509876_90be6aaed21461445b7ae39534c4d483bfb8b5016f86d7a25352db8e839997c0.m3u8?a=b&starttimestampdef=', - 'StreamType': 'appletv', - 'OffsetFromNow': -40, - 'ConfigValue': {} - } - ], - 'disabled': False, - 'config': { - 'vodcategories': [5, 6, 7, 85, 87, 89, 91, 93, 95, 120, 124, 127, 147, 150, 11], - 'localvodcategories': [11], - 'thumbsmallurl': 'http://static.newson.akm.cdn.vinsontv.com/thumbnails6/.jpg', - 'thumblargeurl': 'http://static.newson.akm.cdn.vinsontv.com/thumbnails6/l.jpg', - 'thumboriginalurl': 'http://static.newson.akm.cdn.vinsontv.com/thumbnails6/o.jpg', - 'thumbjsonurl': 'http://static.newson.akm.cdn.vinsontv.com/thumbnails6/.json', - 'thumbjsoninterval': 1200, - 'callsign': 'KCCI', - 'stationgroup': 'Hearst', - 'latitude': 41.6142, - 'longitude': -93.5543, - 'region': 'Midwest', - 'state': 'Iowa', - 'stateshort': 'IA', - 'city': 'Des Moines/Ames', - 'locations': [ - { - 'state': 'Iowa', - 'city': 'Des Moines/Ames' - } - ], - 'affiliation': 'CBS', - 'dma': [679], - 'localvodfeed': 'http://www.kcci.com/syndicatedVideo-aolOn', - 'midrollsenabled': True, - 'adbreakvasturl': '', - 'adbreakvasturl_roku_disabled': 'http://pubads.g.doubleclick.net/gampad/ads?slotname=/82114269/rrafcs/bf/71845_hrst_mid_prev&sz=1920x1080&tfcd=ROKU_ADS_KIDS_CONTENT&url=http://roku.com&unviewed_position_start=1&output=xml_vmap1&impl=s&env=vp&gdfp_req=1&ad_rule=1&description_url=http%3A%2F%2Fapps.roku.com&vad_type=linear&ss_req=1&ip=ROKU_ADS_EXTERNAL_IP&nofb=0&sdkv=roku&min_ad_duration=0&max_ad_duration=60000&rdid=ROKU_ADS_TRACKING_ID&is_lat=ROKU_ADS_LIMIT_TRACKING&idtype=rida&correlator=ROKU_ADS_TIMESTAMP&scor=ROKU_ADS_TIMESTAMP&pod=POD_NUM&ppos=POD_POSITION&cust_params=genre%3DROKU_ADS_CONTENT_GENRE%26content%3dROKU_ADS_CONTENT_ID%26length%3dROKU_ADS_CONTENT_LENGTH%26device%3dROKU_ADS_DEVICE_MODEL%26ua%3DROKU_ADS_USER_AGENT%26ai%3DROKU_ADS_APP_ID', - 'midrollurl_roku': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&sz=1920x1080&env=vp&output=xml_vast4&pmnd=0&pmxd=180000&sdmax=0&url=https://watchnewson.com/&tfcd=0&npa=0&gdfp_req=1&nofb=1&pp=newson_roku&unviewed_position_start=1&vpos=midroll&description_url=https://watchnewson.com/&cust_params=v_type%3DVOD%26platform%3Droku%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI%26isdai%3Dfalse%26correlator=&msid=com.roku.newson&an=NewsOn', 'midrollurl_roku_live': 'https://pubads.g.doubleclick.net/gampad/live/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&sz=1920x1080&env=vp&output=xml_vast4&pmnd=0&pmxd=120000&sdmax=0&url=https://watchnewson.com/&tfcd=0&npa=0&gdfp_req=1&nofb=1&pp=newson_roku&unviewed_position_start=1&vpos=midroll&description_url=https://watchnewson.com/&cust_params=v_type%3Dlive%26platform%3Droku%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&isdai=false&correlator=&msid=com.roku.newson&an=NewsOn', 'midrollurl_mobile': '', - 'midrollurl_mobile_live': '', - 'prerollsenabled': True, - 'programstartprerollurl_roku': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&sz=1920x1080&env=vp&output=xml_vast4&pmnd=0&pmxd=30000&sdmax=0&pmad=1&url=https://watchnewson.com/&tfcd=0&npa=0&gdfp_req=1&nofb=1&pp=newson_roku&unviewed_position_start=1&vpos=preroll&description_url=https://watchnewson.com/&cust_params=v_type%3DVOD%26platform%3Droku%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&isdai=false&correlator=&msid=com.roku.newson&an=NewsOn', - 'programstartprerollurl_roku_live': 'https://pubads.g.doubleclick.net/gampad/live/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&sz=1920x1080&env=vp&output=xml_vast4&pmnd=0&pmxd=30000&sdmax=0&pmad=1&url=https://watchnewson.com/&tfcd=0&npa=0&gdfp_req=1&nofb=1&pp=newson_roku&unviewed_position_start=1&vpos=preroll&description_url=https://watchnewson.com/&cust_params=v_type%3Dlive%26platform%3Droku%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&isdai=false&correlator=&msid=com.roku.newson&an=NewsOn', - 'programstartprerollurl_mobile': '', - 'programstartprerollurl_mobile_live': '', - 'liveadbreakduration': 60, - 'website': 'www.kcci.com', - 'channelisnewdate': 1441108800, - 'programstartprerollurl_appletv': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3DVOD%26platform%3Dappletv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=preroll', - 'programstartprerollurl_appletv_live': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3Dlive%26platform%3Dappletv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=preroll', - 'midrollurl_appletv': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3DVOD%26platform%3Dappletv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=midroll', - 'midrollurl_appletv_live': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3Dlive%26platform%3Dappletv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=midroll', - 'programstartprerollurl_firetv': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3DVOD%26platform%3Dfiretv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=preroll', - 'programstartprerollurl_firetv_live': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3Dlive%26platform%3Dfiretv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=preroll', - 'midrollurl_firetv': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3DVOD%26platform%3Dfiretv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=midroll', - 'midrollurl_firetv_live': 'https://pubads.g.doubleclick.net/gampad/ads?iu=/4756/OTT_Gateway/NewsOn/Hearst_TV/KCCI&description_url=https://www.newson.us&env=vp&url=https://www.newson.us&correlator=&tfcd=0&npa=0&gdfp_req=1&output=vast&sz=1920x1080&cust_params=v_type%3Dlive%26platform%3Dfiretv%26pubgroup%3DHearst_TV%26stationgroup%3DKCCI&unviewed_position_start=1&vpos=midroll' - } -} -""" + for videoStream in videoUrlM3u.playlists: + if not bestStream: + bestStream = videoStream + elif videoStream.stream_info.bandwidth > bestStream.stream_info.bandwidth: + bestStream = videoStream + + if not bestStream: + return bestStream.absolute_uri + else: + return m3u8_url