def parseVideo(url,signLang=False): response = _utils.getUrl(url) #'mediaObj': { 'url': 'http://deviceids-medp.wdr.de/ondemand/111/1114678.js' #xbmc.log(response) url2 = re.compile("'mediaObj': { 'url': '(.+?)'", re.DOTALL).findall(response)[0] xbmc.log(url2) response = _utils.getUrl(url2) import json xbmc.log(response[38:-2]) j = json.loads(response[38:-2]) videos = [] subUrl = False for type in j['mediaResource']: xbmc.log(str(j['mediaResource'][type])) if type == 'dflt' or type == 'alt': if signLang and 'slVideoURL' in j['mediaResource'][type]: videos.append(j['mediaResource'][type]['slVideoURL']) else: videos.append(j['mediaResource'][type]['videoURL']) elif type == 'captionURL': subUrl = j['mediaResource']['captionURL'] video = False for vid in videos: if vid.endswith('.m3u8'): video = vid elif vid.endswith('.f4m') and (not video or video.endswith('.mp4')): video = vid.replace('manifest.f4m','master.m3u8').replace('adaptiv.wdr.de/z/','adaptiv.wdr.de/i/') elif vid.endswith('.mp4') and not video: video = vid return video,subUrl
def parseVideo(url): #xbmc.log(url) response = _utils.getUrl(url) #'mediaObj': { 'url': 'http://deviceids-medp.wdr.de/ondemand/111/1114678.js' #xbmc.log(response) url2 = re.compile("'mediaObj': { 'url': '(.+?)'", re.DOTALL).findall(response)[0] response = _utils.getUrl(url2) videos = re.compile('"videoURL":"(.+?)"', re.DOTALL).findall(response) for video in videos: if 'm3u8' in video: vid = video return vid #todo subtitles
def parse(url): response = _utils.getUrl(url) s = response.split('<h2 class="headline">Suchergebnis</h2>')[-1] #xbmc.log(response) videos = s.split('<div class="media mediaA">')[1:] list = [] for video in videos: dict = {} #xbmc.log(video) dict['name'] = re.compile('<h3 class="headline">.+?>(.+?)<', re.DOTALL).findall(video)[0] dict['plot'] = re.compile('<p class="teasertext">.+?>(.+?)<', re.DOTALL).findall(video)[0] #dict['date'] = re.compile('<p class="dachzeile">.+?>(.+?)<', re.DOTALL).findall(video)[0].replace('<strong>Video</strong>','') dict['thumb'] = re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(video)[0] dict['url'] = re.compile('<a href="(.+?)"', re.DOTALL).findall(video)[0] dict['type'] = 'video' dict['mode'] = 'libWdrPlay' #xbmc.log(str(dict)) list.append(dict) pages = re.compile('<div class="entry" data-ctrl-load_avsuche100-source=".+?<a href="(.+?)">(.+?)</a>', re.DOTALL).findall(response) xbmc.log(str(pages)) nextPage = str(int(url.split('pageNumber=')[-1].split('&')[0]) + 1) for url,page in pages: if page == nextPage: list.append({'type':'nextPage','url':base+url,'mode':'libWdrListSearch'}) return list
def parseAZ(letter): if letter == "0-9": letter = '#' list = [] response = _utils.getUrl("http://www.ardmediathek.de/appdata/servlet/tv/sendungAbisZ?json") j = json.loads(response) j1 = j["sections"][0]["modCons"][0]["mods"][0]["inhalte"] for entry in j1: if entry["ueberschrift"] == letter.upper(): j2 = entry["inhalte"] for entry in j2: dict = {} dict["name"] = entry["ueberschrift"].encode("utf-8") dict["channel"] = entry["unterzeile"].encode("utf-8") dict["entries"] = int(entry["dachzeile"].encode("utf-8").split(' ')[0]) #dict["thumb"] = entry["bilder"][0]["schemaUrl"].replace("##width##","0").encode("utf-8") dict["thumb"] = entry["bilder"][0]["schemaUrl"].replace("##width##","1920").encode("utf-8") dict["url"] = entry["link"]["url"].encode("utf-8") dict['mode'] = 'libArdListVideos' #dict["documentId"] = entry["link"]["url"].split("documentId=")[1].split("&")[0] #dict["pluginpath"] = pluginpath dict["type"] = 'shows' xbmc.log(str(dict)) list.append(dict) return list
def parseVideos(url):#TODO remove "mehr" response = _utils.getUrl(url) #<div class="box" typeA = re.compile('<div class="box".+?<a(.+?)>(.+?)</a>.+?<a(.+?)>(.+?)</a>', re.DOTALL).findall(response) list = [] for href,show,href2,stuff in typeA: #xbmc.log(href) #xbmc.log(href2) if '<div class="media mediaA video">' in stuff: dict = {} xbmc.log(stuff) dict['url'] = base + re.compile('href="(.+?)"', re.DOTALL).findall(href2)[0] if '<h4' in stuff: dict['name'] = re.compile('<h4.+?>.+?<span class="hidden">Video:</span>(.+?)<', re.DOTALL).findall(stuff)[0].strip() #xbmc.log(dict['name']) else: dict['name'] = show.strip() if '<img' in stuff: dict['thumb'] = base + re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(stuff)[0] dict['plot'] = re.compile('<p class="teasertext">(.+?)<', re.DOTALL).findall(stuff)[0] #TODO duration, ut dict['type'] = 'video' dict['mode'] = 'libWdrPlay' list.append(dict) return list
def parseFeed(feed,type=False): xbmc.log(feed) response = _utils.getUrl(feed) items = re.compile('<item>(.+?)</item>', re.DOTALL).findall(response) list = [] for item in items: #xbmc.log(item) dict = {} dctype = re.compile('<dc:type>(.+?)</dc:type>', re.DOTALL).findall(item)[0] if 'Video' in dctype: dict['name'] = re.compile('<title>(.+?)</title>', re.DOTALL).findall(item)[0] dict['url'] = re.compile('<link>(.+?)</link>', re.DOTALL).findall(item)[0] if '<content:encoded>' in item: dict['plot'] = re.compile('<content:encoded>(.+?)</content:encoded>', re.DOTALL).findall(item)[0].replace('\n ','\n') dict['channel'] = re.compile('<dc:creator>(.+?)</dc:creator>', re.DOTALL).findall(item)[0] dict['tvshowtitle'] = re.compile('<mp:topline>(.+?)</mp:topline>', re.DOTALL).findall(item)[0] dict['thumb'] = _chooseThumb(re.compile('<mp:image>(.+?)</mp:image>', re.DOTALL).findall(item)) d = re.compile('<dc:date>(.+?)</dc:date>', re.DOTALL).findall(item)[0]#TODO s = d.split('T') dict['aired'] = s[0] t = s[1].replace('Z','').split(':') dict['airedtime'] = str(int(t[0])+2) + ':' + t[1] dict['sort'] = s[1].replace('Z','').replace(':','') if len(dict['airedtime']) == 4: dict['airedtime'] = '0' + dict['airedtime'] if type: dict['type'] = type else: dict['type'] = 'video' dict['mode'] = 'libWdrPlay' xbmc.log(str(dict)) list.append(dict) return list
def parseShows(letter): response = _utils.getUrl( 'http://www1.wdr.de/mediathek/video/sendungen-a-z/sendungen-' + letter.lower() + '-102.html') uls = re.compile('<ul class="list">(.+?)</ul>', re.DOTALL).findall(response) list = [] for ul in uls: lis = re.compile('<li >(.+?)</li>', re.DOTALL).findall(ul) for li in lis: dict = {} strong = re.compile('<strong>(.+?)</strong>', re.DOTALL).findall(li)[0] if strong == 'mehr': dict['url'] = base + re.compile('href="(.+?)"', re.DOTALL).findall(li)[0] dict['name'] = re.compile('<span>(.+?)</span>', re.DOTALL).findall(li)[0] dict['thumb'] = base + re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(li)[0] dict['type'] = 'dir' dict['mode'] = 'libWdrListVideos' list.append(dict) else: #TODO! pass return list
def getDate(d, type, mode): d = abs(int(d)) response = _utils.getUrl('http://swrmediathek.de/app-2/svp.html') day = re.compile( '<ul data-role="listview" data-theme="c" data-divider-theme="d">(.+?)</ul>', re.DOTALL).findall(response)[d] return _findLiEntries(day, type, mode)[::-1]
def parseVideos(url): #TODO remove "mehr" response = _utils.getUrl(url) #<div class="box" typeA = re.compile( '<div class="box".+?<a(.+?)>(.+?)</a>.+?<a(.+?)>(.+?)</a>', re.DOTALL).findall(response) list = [] for href, show, href2, stuff in typeA: #xbmc.log(href) #xbmc.log(href2) if '<div class="media mediaA video">' in stuff: dict = {} #xbmc.log(stuff) dict['url'] = base + re.compile('href="(.+?)"', re.DOTALL).findall(href2)[0] if '<h4' in stuff: dict['name'] = re.compile( '<h4.+?>.+?<span class="hidden">Video:</span>(.+?)<', re.DOTALL).findall(stuff)[0].strip() #xbmc.log(dict['name']) else: dict['name'] = show.strip() if '<img' in stuff: dict['thumb'] = base + re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(stuff)[0] dict['plot'] = re.compile('<p class="teasertext">(.+?)<', re.DOTALL).findall(stuff)[0] #TODO duration, ut dict['type'] = 'video' dict['mode'] = 'libWdrPlay' list.append(dict) return list
def parseVideos(url):#TODO remove "mehr" if not url.endswith('index.html'): l = len(url.split('/')[-1]) url = url[:-l] + 'index.html' xbmc.log(url) response = _utils.getUrl(url) feed = re.compile('<link rel="alternate".+?href="(.+?)"').findall(response)[0] feed = base + feed.replace('.feed','~_format-mp111_type-rss.feed') return parseFeed(feed)
def getVideoUrl(url=False,videoID=False): xbmc.log(videoID) if not videoID: videoID = url.split('documentId=')[1] if '&' in videoID: videoID = videoID.split('&')[0] if url: content = utils.getUrl(url) match = re.compile('<div class="box fsk.*?class="teasertext">(.+?)</p>', re.DOTALL).findall(content) #if match: if False: xbmc.executebuiltin('XBMC.Notification(Info:,'+match[0].strip()+',15000)') return False else: return fetchTvaVideo(videoID)
def listRSS(url,page=0): if page > 1: url += '&mcontents=page.'+str(page) print url #r = requests.get(url) #response = rssparser.parser(r.text.decode('utf-8')) response = utils.getUrl(url) data = rssparser.parser(response) if page == 0: return data else: if len(data) == 50: return data,True else: return data,False
def getVideosXml(videoId): print 'getxml' list = [] content = utils.getUrl(baseUrl+'/ard/servlet/export/collection/collectionId='+videoId+'/index.xml') match = re.compile('<content>(.+?)</content>', re.DOTALL).findall(content) for item in match: clip = re.compile('<clip(.+?)>', re.DOTALL).findall(item)[0] if 'isAudio="false"' in clip: name = re.compile('<name>(.+?)</name>', re.DOTALL).findall(item)[0] length = re.compile('<length>(.+?)</length>', re.DOTALL).findall(item)[0] if not '<mediadata:images/>' in item: thumb = re.compile('<image.+?url="(.+?)"', re.DOTALL).findall(item)[-1] else: thumb = '' id = re.compile(' id="(.+?)"', re.DOTALL).findall(clip)[0] list.append([name, id, thumb, length]) return list
def parseVideos(url): response = _utils.getUrl(url) items = re.compile('<item>(.+?)</item>', re.DOTALL).findall(response) list = [] for item in items: if 'media:player' in item: xbmc.log(str(item)) dict = {} dict['name'] = re.compile('<title>(.+?)</title>', re.DOTALL).findall(item)[0] dict['plot'] = re.compile('<description>(.+?)</description>', re.DOTALL).findall(item)[0] dict['url'] = 'http://www.3sat.de/mediathek/xmlservice/web/beitragsDetails?ak=web&id=' + re.compile('<link>(.+?)</link>', re.DOTALL).findall(item)[0].split('?obj=')[-1] #dict['url'] = re.compile('<link>(.+?)</link>', re.DOTALL).findall(item)[0] dict['duration'] = re.compile('duration="(.+?)"', re.DOTALL).findall(item)[0] dict['thumb'] = re.compile('<media:thumbnail url="(.+?)"', re.DOTALL).findall(item)[0] dict['type'] = 'video' dict['mode'] = 'lib3satPlay' list.append(dict) xbmc.log(str(dict)) return list
def fetchTvaVideo(id): print 'http://www.ardmediathek.de/ard/servlet/export/tva/id='+id+'/index.xml' xml = utils.getUrl('http://www.ardmediathek.de/ard/servlet/export/tva/id='+id+'/index.xml') if "crid://ard.de/videolive" in xml: return False try: programURL = re.compile('<tva:ProgramURL>(.+?)</tva:ProgramURL>', re.DOTALL).findall(xml)[0] if programURL.endswith('.mp3'): return programURL except: pass match = re.compile('<tva:OnDemandProgram>(.+?)</tva:OnDemandProgram>', re.DOTALL).findall(xml) finalUrl = False qualityHLS = 0 for item in match: videoUrl = re.compile('<tva:ProgramURL>(.+?)</tva:ProgramURL>', re.DOTALL).findall(item)[0] if not 'rtmp://' in videoUrl and not 'rtmpt://' in videoUrl and not 'manifest.f4m' in videoUrl: quality = re.compile('<tva:FileFormat href="urn:ard:tva:metadata:cs:ARDFormatCS:(.+?)"/>', re.DOTALL).findall(item)[0] if 'smil/master.m3u8' in videoUrl: if quality in qualityDictHLS: q = qualityDictHLS[quality] else: print '######################'+quality q = 1 if q >= qualityHLS: finalUrl = videoUrl qualityHLS = q else: if quality in qualityDict2: if qualityDict2[quality] <= videoQuality: selectedVideoUrl = videoUrl else: print item print quality if not finalUrl: finalUrl = selectedVideoUrl finalUrl = ndrPodcastHack(finalUrl) finalUrl = dwHack(finalUrl) #print '###############using mp4' else: print '###############using HLS' return finalUrl
def parseEpg(url,channels=[10]): list = [] #url = 'http://www.wdr.de/programmvorschau/ajax/alle/uebersicht/2016-09-18/' response = _utils.getUrl(url) j = json.loads(response) for sender in j['sender']: if sender['senderId'] in channels: for sendung in sender['sendungen']: dict = {} dict['channel'] = sender['senderName'] dict['start'] = str(sendung['start'])[:-3] dict['end'] = str(sendung['ende'])[:-3] dict['duration'] = str(sendung['ende'] - sendung['start'])[:-3] dict['name'] = sendung['hauptTitel'] if sendung['mediathek']: dict['url'] = sendung['mediathekUrl'] xbmc.log(str(dict)) #dict['plot'] = #unterTitel #dict[''] = list.append(dict) return list
def parseDate(url): list = [] response = _utils.getUrl(url) j = json.loads(response) j1 = j["sections"][-1]["modCons"][0]["mods"][0]["inhalte"] for entry in j1: j2 = entry["inhalte"] for entry in j2: dict = {} dict["name"] = entry["dachzeile"] + ' - ' dict["name"] += entry["ueberschrift"] + ' - ' j2 = entry["inhalte"][0] dict["name"] += j2["ueberschrift"] #dict["channel"] = j2["unterzeile"] dict["thumb"] = j2["bilder"][0]["schemaUrl"].replace("##width##","0") dict["url"] = j2["link"]["url"] dict["duration"] = runtimeToInt(j2["unterzeile"]) #dict["pluginpath"] = pluginpath dict["type"] = 'video' dict['mode'] = 'libArdPlay' list.append(dict) return list
def listDate(url): list =[] response = utils.getUrl(url) videos = response.split('<span class="date">') videos = videos[1:] for video in videos: time = video[:5] titel = re.compile('<span class="titel">(.+?)</span>', re.DOTALL).findall(video)[0] match = re.compile('<div class="media mediaA">.+?<a href="(.+?)" class="mediaLink">.+?urlScheme':'(.+?)##width##.+?<h4 class="headline">(.+?)</h4>.+?<p class="subtitle">(.+?)</p>', re.DOTALL).findall(video) #http://www.ardmediathek.de/ard/servlet/image/00/32/75/15/44/1547339463/16x9/320 for url,thumb,name,plot in match: dict = {} dict['time'] = time length = plot.split(' ')[0] if ':' in length: length = length.split(':') dict['duration'] = str(int(length[0])*60+int(length[1])) else: dict['duration'] = str(int(length)*60) if name in titel: dict['name'] = time + ' - ' + titel elif titel in name: dict['name'] = time + ' - ' + name else: dict['name'] = time + ' - ' + titel+' - '+name HH,MM = time.split(':') dict['time'] = int(HH)*60 + int(MM) dict['thumb'] = 'http://www.ardmediathek.de/ard/servlet'+thumb+'0' dict['plot'] = plot dict['url'] = baseUrl+url.replace('&','&') dict['name'] = dict['name'].decode('utf-8') dict['name'] = h.unescape(dict['name']) dict['name'] = dict['name'].encode('utf-8') dict['documentId'] = dict['url'].encode('utf-8').split("documentId=")[-1] dict['mode'] = 'libArdPlay' dict['type'] = 'video' list.append(dict) return list
def parseShows(letter): response = _utils.getUrl('http://www1.wdr.de/mediathek/video/sendungen-a-z/sendungen-'+letter.lower()+'-102.html') uls = re.compile('<ul class="list">(.+?)</ul>', re.DOTALL).findall(response) list = [] for ul in uls: lis = re.compile('<li >(.+?)</li>', re.DOTALL).findall(ul) for li in lis: dict = {} dict['url'] = base + re.compile('href="(.+?)"', re.DOTALL).findall(li)[0] dict['name'] = re.compile('<span>(.+?)</span>', re.DOTALL).findall(li)[0] #dict['thumb'] = base + re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(li)[0].replace('~_v-ARDKleinerTeaser.jpg','~_v-original.jpg') thumb = re.compile('<img.+?src="(.+?)"', re.DOTALL).findall(li)[0].replace('~_v-ARDKleinerTeaser.jpg','~_v-original.jpg').replace('http//www','http://www') if thumb.startswith('http'): dict['thumb'] = thumb else: dict['thumb'] = base + thumb dict['type'] = 'dir' dict['mode'] = 'libWdrListVideos' list.append(dict) return list
def getAZ(letter): #ids = [] if letter == '#': letter = '0-9' list = [] if letter == 'X' or letter == 'Y': return list content = utils.getUrl(baseUrl+"/tv/sendungen-a-z?buchstabe="+letter) #r = requests.get(baseUrl+"/tv/sendungen-a-z?buchstabe="+letter) #content = r.text.decode('utf-8') spl = content.split('<div class="teaser" data-ctrl') for i in range(1, len(spl), 1): dict = {} entry = spl[i] url = re.compile('href="(.+?)"', re.DOTALL).findall(entry)[0] url = url.replace("&","&") dict['url'] = baseUrl+url+'&m23644322=quelle.tv&rss=true' dict['name'] = re.compile('class="headline">(.+?)<', re.DOTALL).findall(entry)[0] dict['channel'] = re.compile('class="subtitle">(.+?)<', re.DOTALL).findall(entry)[0] thumbId = re.compile('/image/(.+?)/16x9/', re.DOTALL).findall(entry)[0] dict['thumb'] = baseUrl+"/image/"+thumbId+"/16x9/0" dict['fanart'] = dict['thumb'] bcastId = url.split('bcastId=')[-1] if '&' in bcastId: bcastId = bcastId.split('&')[0] dict['plot'] = libArdBcastId2Desc.toDesc(bcastId) dict["mode"] = "libArdListVideos" list.append(dict) #th = thumbId.split('/') #a = url.split('=')[-1] #b = th[0]+th[1]+th[2]+th[3]+th[4] #ids.append([a,b]) #bcast2thumb.addBcastIDs(ids) return list
def listVideos(url,page=1): list =[] content = utils.getUrl(url) spl = content.split('<div class="teaser" data-ctrl') for i in range(1, len(spl), 1): dict ={} entry = spl[i] dict["url"] = baseUrl + re.compile('<a href="(.+?)" class="mediaLink">', re.DOTALL).findall(entry)[0].replace("&","&") dict["name"] = cleanTitle(re.compile('class="headline">(.+?)<', re.DOTALL).findall(entry)[0]) match = re.compile('class="dachzeile">(.+?)<', re.DOTALL).findall(entry) if match: dict["showname"] = match[0] match = re.compile('<p class="subtitle">(.+?)</p>', re.DOTALL).findall(entry) if match: subtitle = match[0].split(" | ") dict["date"] = subtitle[0] try: dict["duration"] = int(subtitle[1].replace(" Min.",""))*60 except: pass dict["channel"] = subtitle[2] if len(subtitle) > 3: if subtitle[3] == "UT": dict["subtitle"] = True match = re.compile('/image/(.+?)/16x9/', re.DOTALL).findall(entry) if match: dict['thumb'] = baseUrl+"/image/"+match[0]+"/16x9/448" dict["type"] = 'video' dict['mode'] = 'libArdPlay' dict["documentId"] = dict["url"].split("documentId=")[-1] list.append(dict) return list
def getList(url, type, mode): xbmc.log(url) response = _utils.getUrl(url) return _findLiEntries(response, type, mode)
def getVideo(url): xbmc.log(url) response = _utils.getUrl(url) url = re.compile('"file":"(.+?).m3u8"').findall(response)[0] + '.m3u8' return url
def parse(url): list = [] response = _utils.getUrl(url) j = json.loads(response)
def parseVideos(url,page='1'): list = [] response = _utils.getUrl(url) xbmc.log(response) j = json.loads(response) #j1 = j["sections"][-1]["modCons"][-1]["mods"][-1] #j1 = j["sections"][-1]["modCons"][-1]["mods"][-1] j1 = j["sections"][-1]["modCons"][-1]["mods"][-1] for j2 in j1["inhalte"]: xbmc.log(str(j2)) dict = {} if "ueberschrift" in j2: dict["name"] = j2["ueberschrift"].encode("utf-8") if 'Hörfassung' in dict["name"] or 'Audiodeskription' in dict["name"]: dict["name"] = dict["name"].replace(' - Hörfassung','').replace(' - Audiodeskription','') dict["name"] = dict["name"].replace(' (mit Hörfassung)','').replace(' (mit Audiodeskription)','') dict["name"] = dict["name"].replace(' mit Hörfassung','').replace(' mit Audiodeskription','') dict["name"] = dict["name"].replace(' (Hörfassung)','').replace(' (Audiodeskription)','') dict["name"] = dict["name"].replace(' Hörfassung','').replace(' Audiodeskription','') dict["name"] = dict["name"].replace('Hörfassung','').replace('Audiodeskription','') dict["name"] = dict["name"].strip() if dict["name"].endswith(' -'): dict["name"] = dict["name"][:-2] dict["name"] = dict["name"] + ' - Hörfassung' dict["audioDesc"] = True if "unterzeile" in j2: dict["duration"] = runtimeToInt(j2["unterzeile"]) if "bilder" in j2: dict["thumb"] = j2["bilder"][0]["schemaUrl"].replace("##width##","384").encode("utf-8") if "teaserTyp" in j2: if j2["teaserTyp"] == "PermanentLivestreamClip" or j2["teaserTyp"] == "PodcastClip": continue elif j2["teaserTyp"] == "OnDemandClip": dict["type"] = 'video' dict['mode'] = 'libArdPlay' elif j2["teaserTyp"] == "Sammlung": dict["type"] = 'dir' dict['mode'] = 'libArdListVideos' else: xbmc.log('json parser: unknown item type: ' + j2["teaserTyp"]) dict["type"] = 'dir' dict['mode'] = 'libArdListVideos' if "link" in j2: dict["url"] = j2["link"]["url"].encode("utf-8") dict["documentId"] = j2["link"]["url"].split("/player/")[-1].split("?")[0].encode("utf-8") if "dachzeile" in j2: dict["releasedate"] = j2["dachzeile"].encode("utf-8") if 'ut' in j2['kennzeichen']: dict["subtitle"] = True if 'geo' in j2['kennzeichen']: dict['geo'] = 'DACH' if 'fsk6' in j2['kennzeichen']: dict['mpaa'] = 'FSK6' if 'fsk12' in j2['kennzeichen']: dict['mpaa'] = 'FSK12' if 'fsk16' in j2['kennzeichen']: dict['mpaa'] = 'FSK16' if 'fsk18' in j2['kennzeichen']: dict['mpaa'] = 'FSK18' #dict["pluginpath"] = pluginpath list.append(dict) n = _fetchNextPage(j1["buttons"],page) if n: list.append(n) return list
def libZdfGetVideoHtml(url): import _utils import re response = _utils.getUrl(url) return libZdfJsonParser.getVideoUrl(re.compile('"contentUrl": "(.+?)"', re.DOTALL).findall(response)[0])