Example #1
0
def phoenix_Search(query='', nexturl=''):
    PLog("phoenix_Search:")
    if query == '':
        query = ardundzdf.get_query(channel='phoenix')
    PLog(query)
    if query == None or query == '':
        return ""

    query = py2_encode(query)
    if nexturl == '':
        path = 'https://www.phoenix.de/response/template/suche_select_json/term/%s/sort/online' % quote(
            query)
    else:
        path = nexturl
    PLog('Mark1')
    PLog(path)
    page, msg = get_page(path=path)
    if page == '':
        msg1 = 'Fehler in Suche: %s' % title
        msg2 = msg
        MyDialog(msg1, msg2, '')
        return li
    PLog(len(page))

    if page.find('hits":0,') >= 0:
        msg1 = 'Leider kein Treffer.'
        MyDialog(msg1, '', '')
        return

    jsonObject = json.loads(page)
    search_cnt = jsonObject["content"]['hits']
    li = xbmcgui.ListItem()
    li = home(li, ID='phoenix')  # Home-Button

    items = jsonObject["content"]['items']
    PLog(len(items))
    li = GetContent(li, items)

    nexturl = jsonObject["content"]["next"]  # letzte Seite: ""
    if nexturl:
        nexturl = BASE_PHOENIX + nexturl
        PLog("nexturl: " + nexturl)
        img = R(ICON_MEHR)
        title = u"Weitere Beiträge"
        tag = u"Beiträge gezeigt: %s, gesamt: %s" % (len(items), search_cnt)

        nexturl = py2_encode(nexturl)
        query = py2_encode(query)
        fparams="&fparams={'nexturl': '%s', 'query': '%s'}" %\
         (quote(nexturl), quote(query))
        addDir(li=li,
               label=title,
               action="dirList",
               dirID="resources.lib.phoenix.phoenix_Search",
               fanart=img,
               thumb=img,
               fparams=fparams,
               tagline=tag)

    xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
Example #2
0
def arte_Search(query='', nextpage=''):
    PLog("arte_Search:")
    if query == '':
        query = ardundzdf.get_query(channel='phoenix')  # unbehandelt
    PLog(query)
    if query == None or query == '':
        return ""

    query = py2_encode(query)
    if nextpage == '':
        nextpage = '1'

    path = 'https://www.arte.tv/guide/api/emac/v3/de/web/data/SEARCH_LISTING/?imageFormats=landscape&mainZonePage=1&query=%s&page=%s&limit=20' %\
     (quote(query), nextpage)

    page, msg = get_page(path=path)
    if page == '':
        msg1 = 'Fehler in Suche: %s' % query
        msg2 = msg
        MyDialog(msg1, msg2, '')
        return li
    PLog(len(page))

    li = xbmcgui.ListItem()
    li = home(li, ID='arte')  # Home-Button

    PLog(len(page))
    # page = page.replace('\\u002F', '/')	# hier nicht erf.
    page = page.replace('\\"', '*')  # Bsp. "\"Brisant\""

    nexturl = stringextract('nextPage":', ',',
                            page)  # letzte Seite: "", auch "null," möglich
    nextpage = stringextract('page=', '&', nexturl)
    PLog("nextpage: " + nextpage)

    li = GetContent(li, page, ID='SEARCH')

    if nextpage:
        img = R(ICON_MEHR)
        title = u"Weitere Beiträge"
        tag = u"weiter zu Seite %s" % nextpage

        query = py2_encode(query)
        fparams = "&fparams={'query': '%s', 'nextpage': '%s'}" % (quote(query),
                                                                  nextpage)
        addDir(li=li,
               label=title,
               action="dirList",
               dirID="resources.lib.arte.arte_Search",
               fanart=img,
               thumb=img,
               fparams=fparams,
               tagline=tag)

    xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
Example #3
0
def phoenix_Search(query='', nexturl=''):
	PLog("phoenix_Search:")
	if 	query == '':	
		query = ardundzdf.get_query(channel='phoenix')
	PLog(query)
	if  query == None or query == '':
		return ""
		
	query=py2_encode(query);
	if nexturl == '':
		# path = 'https://www.phoenix.de/suche.html?vt=%s' % quote(query)
		path = "https://www.phoenix.de/response/template/suche_select_json/term/%s/sort/online" % quote(query)
	else:
		path = nexturl
	PLog(path)
	page, msg = get_page(path=path)	
	if page == '':						
		msg1 = 'Fehler in Suche: %s' % query
		msg2 = msg
		MyDialog(msg1, msg2, '')
		return li
	PLog(len(page))
				
	if page.find('hits":0,') >= 0:
		msg1 = 'Leider kein Treffer.'
		MyDialog(msg1, '', '')
		return
		
	page = page.replace('\\/', '/')		# json-raw Links
	page = page.replace('\\"', '*')		# "-Zeichen ersetzen
	search_cnt = stringextract('hits":', ',', page)
	
	li = xbmcgui.ListItem()
	li = home(li, ID='phoenix')			# Home-Button

	li = GetContent(li, page)						
		
	if '"next":' in page:				# Mehr-Seiten, hier "next" statt "next_url"
		next_url	= stringextract('next":"', '"', page)
		if next_url:
			next_url = BASE_PHOENIX + next_url
			skipcnt =  stringextract('skip/', '/', next_url)
			PLog("next_url: %s, skipcnt: %s" % (next_url, skipcnt))	
			img = R(ICON_MEHR)
			title = u"Weitere Beiträge"
			tag = u"Beiträge gezeigt: %s, gesamt: %s" % (skipcnt, search_cnt)

			next_url=py2_encode(next_url); query=py2_encode(query); 
			fparams="&fparams={'nexturl': '%s', 'query': '%s'}" %\
				(quote(next_url), quote(query))
			addDir(li=li, label=title, action="dirList", dirID="resources.lib.phoenix.phoenix_Search", fanart=img, 
				thumb=img, fparams=fparams, tagline=tag)

	xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
Example #4
0
def Kika_Search(query=None, title='Search', pagenr=''):
	PLog("Kika_Search:")
	if 	query == '':	
		query = ardundzdf.get_query(channel='ARD')
	PLog(query)
	if  query == None or query.strip() == '':
		return ""

	# Home-Button in Kika_VideosBuendelAZ

	li, HrefList = Kika_VideosBuendelAZ(getHrefList=True)
	PLog("HrefList: " + str(len(HrefList)))
	found_hrefs=[]
	for path in HrefList: 
		fname = stringextract('allevideos-buendelgruppen100_', '.htm', path)
		page = Dict("load", fname, CacheTime=KikaCacheTime)
		if page == False:
			page, msg = get_page(path=path)	
		if page == '':								# hier kein Dialog
			PLog("Fehler in Kika_Search: " + msg)
		else:
			Dict("store", fname, page)				# im Addon-Cache speichern
		pos = page.find("The bottom navigation")		# begrenzen, es folgen A-Z + meist geklickt
		page = page[:pos]
		pageItems = blockextract('class="media mediaA">', page)	
		PLog(len(pageItems))

		for s in pageItems:			
			stitle = stringextract('class="linkAll" title="', '"', s)		
			stitle = cleanhtml(stitle); stitle = unescape(stitle);
			if up_low(query) in up_low(stitle):	
				href =  BASE_KIKA + stringextract('href="', '\"', s)
				if href in found_hrefs:				# Doppler vermeiden
					continue
				found_hrefs.append(href)
				img = stringextract('<noscript>', '</noscript>', s).strip()		# Bildinfo separieren
				img_alt = stringextract('alt="', '"', img)	
				img_src = stringextract('src="', '"', img)
				if img_src.startswith('http') == False:
					img_src = BASE_KIKA + img_src

				stitle = repl_json_chars(stitle)	
				img_alt = unescape(img_alt); 	
				
				PLog('Satz:')
				PLog(query);PLog(href);PLog(stitle);PLog(img_alt);PLog(img_src)
				href=py2_encode(href); stitle=py2_encode(stitle); img_src=py2_encode(img_src);
				
				fparams="&fparams={'path': '%s', 'title': '%s', 'thumb': '%s'}" %\
					(quote(href), quote(stitle), quote(img_src))
				addDir(li=li, label=stitle, action="dirList", dirID="resources.lib.childs.Kika_Videos", fanart=img_src, 
					thumb=img_src, fparams=fparams, tagline=img_alt)

	xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)
Example #5
0
def Search(first, path, query=''):
	PLog('Search:'); PLog(first);	
	if 	query == '':	
		query = ardundzdf.get_query(channel='ZDF')
	PLog(query)
	if  query == None or query.strip() == '':
		return ""
	name = 'Suchergebnis zu: ' + urllib2.unquote(query)
		
	if first == 'True':								# query nur beim 1. Aufruf injizieren, nicht bei 'mehr' 
		path =  DreiSat_Suche % urllib2.quote(query)
		path = path + "&page=1"
	PLog(path); 										# Bsp. https://www.3sat.de/suche?q=brexit&synth=true&attrs=&page=2
	page, msg = get_page(path=path)	
	if page == '':			
		msg1 = "Fehler in Search"
		msg2 = msg
		PLog(msg1)
		xbmcgui.Dialog().ok(ADDON_NAME, msg1, msg2, '')
		return li	
		
	rubriken =  blockextract('<picture class="">', page)	
	cnt = stringextract('class="search-number">', '<', page) # Anzahl Treffer
	
	li = xbmcgui.ListItem()
	li = home(li, ID='3Sat')										# Home-Button

	query_unqoute = (query.replace('%252B', ' ').replace('+', ' ')) # quotiertes ersetzen 
	if len(rubriken) == 0 or cnt == '':						# kein Treffer
		msg1 = 'Leider kein Treffer (mehr) zu %s'  % urllib2.unquote(query)
		PLog(msg1)
		xbmcgui.Dialog().ok(ADDON_NAME, msg1, '', '')
		return li	
	
	new_title = "%s Treffer zu >%s<" % (cnt, query)
	li = Sendereihe_Sendungen(li, path=path, title=new_title)
	
	# auf mehr prüfen:
	if test_More(page=page):						# Test auf weitere Seiten (class="loader)
		plist = path.split('&page=')
		pagenr = int(plist[-1])
		new_path = plist[0] + '&page=' + str(pagenr + 1)
		title = "Mehr zu: %s" %  urllib2.unquote(query)
		PLog(new_path)
		new_path = UtfToStr(new_path);  query = UtfToStr(query)		
		
		fparams="&fparams={'first': 'False', 'path': '%s', 'query': '%s'}" % (urllib.quote_plus(new_path), 
			urllib.quote_plus(query))
		addDir(li=li, label=title, action="dirList", dirID="resources.lib.my3Sat.Search", fanart=R('3sat.png'), 
			thumb=R(ICON_MEHR), summary='Mehr...', fparams=fparams)
		
	xbmcplugin.endOfDirectory(HANDLE)
Example #6
0
def Tivi_Search(query=None, title='Search', pagenr=''):
	PLog("Tivi_Search:")
	if 	query == '':	
		query = ardundzdf.get_query(channel='ZDF')
	PLog(query)
	if  query == None or query.strip() == '':
		return ""
	query_org = query	
	query=py2_decode(query)		# decode, falls erf. (1. Aufruf)

	PLog('Tivi_Search:'); PLog(query); PLog(pagenr); 

	ID='Search'
	Tivi_Search_PATH	 = 'https://www.zdf.de/suche?q=%s&from=&to=&sender=ZDFtivi&attrs=&contentTypes=episode&sortBy=date&page=%s'
	if pagenr == '':		# erster Aufruf muss '' sein
		pagenr = 1

	path = Tivi_Search_PATH % (query, pagenr) 
	PLog(path)	
	page, msg = get_page(path=path)	
	searchResult = stringextract('data-loadmore-result-count="', '"', page)	# Anzahl Ergebnisse
	PLog("searchResult: " + searchResult)
	
	li = xbmcgui.ListItem()
	li = home(li, ID='Kinderprogramme')										# Home-Button

	# Der Loader in ZDF-Suche liefert weitere hrefs, auch wenn weitere Ergebnisse fehlen -
	#	dto ZDFtivi
	if searchResult == '0' or 'class="artdirect"' not in page:
		query = (query.replace('%252B', ' ').replace('+', ' ')) # quotiertes ersetzen 
		msg1 = 'Keine Ergebnisse (mehr) zu: %s' % query  
		MyDialog(msg1, '', '')
		return li	
				
	# anders als bei den übrigen ZDF-'Mehr'-Optionen gibt der Sender Suchergebnisse bereits
	#	seitenweise aus, hier umgesetzt mit pagenr - offset entfällt	
	li, page_cnt = ardundzdf.ZDF_get_content(li=li, page=page, ref_path=path, ID=ID)
	PLog('li, page_cnt: %s, %s' % (li, page_cnt))
	
	if page_cnt == 'next':							# mehr Seiten (Loader erreicht)
		pagenr = int(pagenr) + 1
		query = query_org.replace('+', ' ')
		path = Tivi_Search_PATH % (query, pagenr)	# Debug
		PLog(pagenr); PLog(path)
		title = "Mehr Ergebnisse in ZDFtivi suchen zu: >%s<"  % query
		query_org=py2_encode(query_org); 
		fparams="&fparams={'query': '%s', 'pagenr': '%s'}" %\
			(quote(query_org), pagenr)
		addDir(li=li, label=title, action="dirList", dirID="resources.lib.childs.Tivi_Search", fanart=R(ICON_MEHR), 
			thumb=R(ICON_MEHR), fparams=fparams)
	
	xbmcplugin.endOfDirectory(HANDLE, cacheToDisc=True)