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
Beispiel #14
0
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&#039;:&#039;(.+?)##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('&amp;','&')
			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("&amp;","&")
		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("&amp;","&")
		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])