def getDate(yyyymmdd): l = [] response = libMediathek.getUrl('http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/programs/'+yyyymmdd+'/de') j = json.loads(response) for program in j['programs']: if program['video'] != None: d = {} #d['_airedtime'] = program['broadcast']['broadcastBeginRounded'].split(' ')[-2][:5] s = program['broadcast']['broadcastBeginRounded'].split(' ')[-2].split(':') d['_airedtime'] = str(int(s[0]) + 1) + ':' + s[1] if len(d['_airedtime']) == 4: d['_airedtime'] = '0' + d['_airedtime'] d['_name'] = program['program']['title'] #d['url'] = 'http://www.arte.tv/papi/tvguide/videos/stream/player/D/'+program['video']['emNumber']+'_PLUS7-D/ALL/ALL.json' #d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/streams/'+program['video']['programId']+'/SHOW/ARTEPLUS7/de/DE' #d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/streams/'+program['video']['programId']+'/'+program['video']['kind']+'/'+program['video']['platform']+'/de/DE' d['url'] = 'https://api.arte.tv/api/player/v1/config/de/'+program['video']['programId']+'?autostart=0&lifeCycle=1&lang=de_DE&config=arte_tvguide' #d['programId'] = program['video']['programId'] if program['video']['imageUrl'] != None: d['_thumb'] = program['video']['imageUrl'] if program['video']['durationSeconds'] != None: d['_duration'] = str(program['video']['durationSeconds']) if program['video']['teaserText'] != None: d['_plotoutline'] = program['video']['teaserText'] d['_plot'] = program['video']['teaserText'] if program['video']['fullDescription'] != None: d['_plot'] = program['video']['fullDescription'] d['mode'] = 'libArtePlay' d['_type'] = 'date' l.append(d) return l
def getVideoUrlWeb(url): d = {} d['media'] = [] response = libMediathek.getUrl(url) j = json.loads(response) #for caption in j.get('captions',[]): # if caption['format'] == 'ebu-tt-d-basic-de': # d['subtitle'] = [{'url':caption['uri'], 'type':'ttml', 'lang':'de', 'colour':True}] # #elif caption['format'] == 'webvtt': # # d['subtitle'] = [{'url':caption['uri'], 'type':'webvtt', 'lang':'de', 'colour':False}] storedLang = 0 for key in j['videoJsonPlayer']['VSR']:#oh, this is such bullshit. there are endless and senseless permutations of language/subtitle permutations. i'll have to rewrite this in the future for french and other languages, subtitles, hearing disabled, ... who the hell uses baked in subtitles in 2017?!?! l = lang.get(j['videoJsonPlayer']['VSR'][key]['versionCode'].split('[')[0],'ignore').upper() if preferences.get(l,0) > storedLang and j['videoJsonPlayer']['VSR'][key]['mediaType'] == 'hls': storedLang = preferences.get(l,0) result = {'url':j['videoJsonPlayer']['VSR'][key]['url'], 'type': 'video', 'stream':'HLS'} d['media'].append(result) d['metadata'] = {} d['metadata']['name'] = j['videoJsonPlayer']['VTI'] if 'VDE' in j['videoJsonPlayer']: d['metadata']['plot'] = j['videoJsonPlayer']['VDE'] elif 'V7T' in j['videoJsonPlayer']: d['metadata']['plot'] = j['videoJsonPlayer']['V7T'] d['metadata']['thumb'] = j['videoJsonPlayer']['VTU']['IUR'] d['metadata']['duration'] = str(j['videoJsonPlayer']['videoDurationSeconds']) return d
def getSearch(s): l = [] url = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/v3/videos/search/text/'+urllib.quote_plus(s)+'/de' response = libMediathek.getUrl(url) j = json.loads(response) #http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/v3/videos/collection/MAGAZINE/RC-014077/de for teaser in j['teasers']: d = {} d['_name'] = teaser['title'] d['_tvshowtitle'] = teaser['title'] if teaser['imageUrl'] != None: d['_thumb'] = teaser['imageUrl'] if teaser['kind'] == 'PLAYLIST' or teaser['kind'] == 'TV_SERIES' or teaser['kind'] == 'TOPIC': d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/v3/videos/collection/MAGAZINE/'+teaser['programId']+'/de' d['mode'] = 'libArteListVideos' d['_type'] = 'dir' l.append(d) elif teaser['kind'] == 'SHOW': d['url'] = 'https://api.arte.tv/api/player/v1/config/de/'+teaser['programId']+'?autostart=0&lifeCycle=1&lang=de_DE&config=arte_tvguide' d['mode'] = 'libArtePlay' d['_type'] = 'video' l.append(d) else: libMediathek.log('unsupported kind found: '+teaser['kind']) return l
def getAZ(): l = [] response = libMediathek.getUrl('http://www.arte.tv/hbbtvv2/services/web/index.php/EMAC/teasers/home/de') #response = libMediathek.getUrl('http://www.arte.tv/hbbtvv2/services/web/index.php/EMAC/teasers/home/v2/de')#TODO j = json.loads(response) for mag in j['teasers']['magazines']: d = {} d['_name'] = mag['label']['de'] d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/' + mag['url'] + '/de' d['_channel'] = 'Arte' d['_type'] = 'dir' d['mode'] = 'libArteListVideos' l.append(d) return l
def getPlaylists():#,playlists, highlights l = [] response = libMediathek.getUrl('http://www.arte.tv/hbbtvv2/services/web/index.php/EMAC/teasers/home/de') j = json.loads(response) for playlist in j['teasers']['playlists']: d = {} d['_name'] = playlist['title'] d['_subtitle'] = playlist['subtitle'] d['_thumb'] = playlist['imageUrl'] d['_plot'] = playlist['teaserText'] d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/v3/videos/collection/PLAYLIST/' + playlist['programId'] + '/de' d['_type'] = 'dir' d['mode'] = 'libArteListVideos' l.append(d) return l
def getDateNew(yyyymmdd): l = [] response = libMediathek.getUrl('http://www.arte.tv/hbbtvv2/services/web/index.php/EMAC/teasers/guideTV/v2/day/'+yyyymmdd+'/de') j = json.loads(response) for program in j['programs']: d = {} #"Tue, 01 Oct 2019 03:00:00 +0000" """ t = program['broadcastDate'].split(', ')[1] libMediathek.log(t) broadcastDate = datetime.strptime(t,'%d %b %Y %H:%M:%S') d['date'] = broadcastDate.strftime('%Y%m%d') d['_airedtime'] = broadcast.strftime('%H:%M') """ #d['date'] = broadcastDate.strftime('%Y%m%d') d['_airedtime'] = program['broadcastDate'][17:19]+':'+program['broadcastDate'][20:22] d['_duration'] = str(int(program['duration']*60)) d['_name'] = program['title'] #d['url'] = 'http://www.arte.tv/papi/tvguide/videos/stream/player/D/'+program['video']['emNumber']+'_PLUS7-D/ALL/ALL.json' #d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/streams/'+program['video']['programId']+'/SHOW/ARTEPLUS7/de/DE' #d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/streams/'+program['video']['programId']+'/'+program['video']['kind']+'/'+program['video']['platform']+'/de/DE' d['url'] = 'https://api.arte.tv/api/player/v1/config/de/'+program['programId']+'?autostart=0&lifeCycle=1&lang=de_DE&config=arte_tvguide' #d['programId'] = program['video']['programId'] if program['imageUrl'] != None: d['_thumb'] = program['imageUrl'] if program['teaserText'] != None: d['_plotoutline'] = program['teaserText'] d['_plot'] = program['teaserText'] if program['shortDescription'] != None: d['_plot'] = program['shortDescription'] d['mode'] = 'libArtePlay' d['_type'] = 'date' for sticker in program['stickers']: if sticker['code'] == 'FULL_VIDEO': l.append(d) return l
def getVideoUrl(url): d = {} d['media'] = [] response = libMediathek.getUrl(url) j = json.loads(response) storedLang = 0 for stream in j['videoStreams']: properties = {} properties['url'] = stream['url'] properties['bitrate'] = bitrates[stream['quality']] s = stream['audioCode'].split('-') properties['lang'] = lang[s[0]] if s[0] == 'VAAUD' or s[0] == 'VFAUD': properties['audiodesc'] = True if len(s) > 1: properties['subtitlelang'] = lang[s[1]] if s[1] == 'STMA' or s[1] == 'STMF': properties['sutitlemute'] = True properties['type'] = 'video' properties['stream'] = 'MP4' d['media'].append(properties) return d
def getVideos(url): l = [] response = libMediathek.getUrl(url) j = json.loads(response) for video in j['videos']: d = {} #d['_name'] = video['title'] if video['subtitle'] != None: d['_name'] = video['subtitle'] else: d['_name'] = video['title'] d['_tvshowtitle'] = video['title'] if video['imageUrl'] != None: d['_thumb'] = video['imageUrl'] if video['durationSeconds'] != None: d['_duration'] = str(video['durationSeconds']) if video['teaserText'] != None: d['_plotoutline'] = video['teaserText'] d['_plot'] = video['teaserText'] if video['fullDescription'] != None: d['_plot'] = video['fullDescription'] elif video['shortDescription'] != None: d['_plot'] = video['shortDescription'] #d['url'] = 'http://www.arte.tv/hbbtvv2/services/web/index.php/OPA/streams/'+video['programId']+'/'+video['kind']+'/'+video['platform']+'/de/DE' d['url'] = 'https://api.arte.tv/api/player/v1/config/de/'+video['programId']+'?autostart=0&lifeCycle=1&lang=de_DE&config=arte_tvguide' d['mode'] = 'libArtePlay' d['_type'] = 'date' l.append(d) if j['meta']['page'] < j['meta']['pages']: d = {} d['url'] = url.split('&page=')[0] + '&page=' + str(j['meta']['page'] + 1) d['_type'] = 'nextPage' d['mode'] = 'libArteListVideos' l.append(d) return l