def converItem(self, cItem): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) + clean_html(cItem.get('plot', '')) icon = cItem.get('icon', '') return CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch)
def converItem(self, cItem): hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO elif 'audio' == cItem['type']: type = CDisplayListItem.TYPE_AUDIO elif 'picture' == cItem['type']: type = CDisplayListItem.TYPE_PICTURE if type in [CDisplayListItem.TYPE_AUDIO, CDisplayListItem.TYPE_VIDEO, CDisplayListItem.TYPE_PICTURE]: url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = clean_html( cItem.get('title', '') ) description = clean_html( cItem.get('plot', '') ) icon = cItem.get('icon', '') return CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch)
def converItem(self, cItem): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) + clean_html( cItem.get('plot', '')) icon = cItem.get('icon', '') return CDisplayListItem(name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch)
def converItem(self, cItem): searchTypesOptions = [] # ustawione alfabetycznie hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO urls = cItem.get('urls', []) for urlItem in urls: hostLinks.append(CUrlItem(urlItem['name'], urlItem['url'], 0)) title = clean_html(cItem.get('title', '')) description = clean_html(cItem.get('plot', '')) icon = cItem.get('icon', '') hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=0, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) return hostItem
def converItem(self, cItem): searchTypesOptions = [] # ustawione alfabetycznie hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO urls = cItem.get('urls', []) for urlItem in urls: hostLinks.append(CUrlItem(urlItem['name'], urlItem['url'], 0)) title = clean_html( cItem.get('title', '') ) description = clean_html( cItem.get('plot', '') ) icon = cItem.get('icon', '') hostItem = CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 0, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch) return hostItem
def converItem(self, cItem): hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO elif 'audio' == cItem['type']: type = CDisplayListItem.TYPE_AUDIO elif 'picture' == cItem['type']: type = CDisplayListItem.TYPE_PICTURE if type in [CDisplayListItem.TYPE_AUDIO, CDisplayListItem.TYPE_VIDEO, CDisplayListItem.TYPE_PICTURE]: url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = clean_html( cItem.get('title', '') ) description = clean_html( cItem.get('plot', '') ) icon = cItem.get('icon', '') return CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch)
def processCaptcha(self, key): post_data = None token = '' iteration = 0 reCaptchaUrl = 'https://www.google.com/recaptcha/api/noscript?k=%s' % (key) while iteration < 20: sts, data = self.cm.getPage(reCaptchaUrl, {'header': self.HTTP_HEADER, 'raw_post_data': True}, post_data=post_data) if not sts: SetIPTVPlayerLastHostError(_('Fail to get "%s".') % reCaptchaUrl) return '' imgUrl = self.cm.ph.getSearchGroups(data, 'src="(image[^"]+?)"')[0] iteration += 1 message = self.cm.ph.getSearchGroups(data, '<p[^>]*>([^<]+?)</p>')[0] token = self.cm.ph.getSearchGroups(data, '<textarea[^>]*>([^<]+?)</textarea>')[0] if '' != token: printDBG('>>>>>>>> Captcha token[%s]' % (token)) break elif message == '': printDBG('>>>>>>>> Captcha Failed') break recaptcha_challenge_field = self.cm.ph.getSearchGroups(data, 'name="recaptcha_challenge_field"[^>]+?value="([^"]+)"')[0] imgUrl = 'https://www.google.com/recaptcha/api/%s' % (imgUrl.replace('&', '&')) message = clean_html(message) accepLabel = clean_html(self.cm.ph.getSearchGroups(data, 'type="submit"[^>]+?value="([^"]+)"')[0]) filePath = GetTmpDir('.iptvplayer_captcha.jpg') printDBG(">>>>>>>> Captcha message[%s]" % (message)) printDBG(">>>>>>>> Captcha accep label[%s]" % (accepLabel)) printDBG(">>>>>>>> Captcha imgUrl[%s] filePath[%s]" % (imgUrl, filePath)) params = {'maintype': 'image', 'subtypes': ['jpeg'], 'check_first_bytes': ['\xFF\xD8', '\xFF\xD9']} ret = self.cm.saveWebFile(filePath, imgUrl, params) if not ret.get('sts'): SetIPTVPlayerLastHostError(_('Fail to get "%s".') % imgUrl) break params = deepcopy(IPTVMultipleInputBox.DEF_PARAMS) params['accep_label'] = _('Send') params['title'] = accepLabel params['list'] = [] item = deepcopy(IPTVMultipleInputBox.DEF_INPUT_PARAMS) item['label_size'] = (300, 57) item['input_size'] = (300, 25) item['icon_path'] = filePath item['input']['text'] = '' params['list'].append(item) ret = 0 retArg = self.sessionEx.waitForFinishOpen(IPTVMultipleInputBox, params) printDBG('>>>>>>>> Captcha response[%s]' % (retArg)) if retArg is not None and len(retArg) and retArg[0]: recaptcha_response_field = retArg[0] printDBG('>>>>>>>> Captcha recaptcha_response_field[%s]' % (recaptcha_response_field)) post_data = urllib.urlencode({'recaptcha_challenge_field': recaptcha_challenge_field, 'recaptcha_response_field': recaptcha_response_field, 'submit': accepLabel}, doseq=True) else: break return token
def getMovieTab(self, url): printDBG(gettytul() + ': ' +'getMovieTab start') sts, data = self.cm.getPage(url, self.defaultParams) if sts: # check if next Page available nextPageparams = None match = re.search('Paginator[^,]+?,([^,]+?), 8, ([^,]+?),', data) if match: if int(match.group(2)) < int(match.group(1)): nextpage = (int(match.group(2))+1) * 20 p = url.split('/') if len(p) == 7: newpage = self.MAINURL + "/" + p[3] + "/" + p[4] + "/" + p[5] + "/" + str(nextpage) else: newpage = self.MAINURL + "/" + p[3] + "/" + str(nextpage) nextPageparams = {'type': 'category', 'name': 'nextpage', 'title': 'Następna strona', 'page': newpage, 'icon': ''} # get videos data = self.cm.ph.getDataBeetwenMarkers(data, 'class="kat-box-div">', '<script', False)[1].split('class="kat-box-div">') for item in data: icon = self.cm.ph.getSearchGroups(item, 'src="([^"]+?)"')[0] plot = clean_html(self.cm.ph.getDataBeetwenMarkers(item, 'class="div_opis">Opis:', '</div>', False)[1]) match = self.cm.ph.getSearchGroups(item, '<a href="([^"]+?)" class="kat-box-name">([^<]+?)<', 2) params = {'type': 'video', 'title': match[1], 'page': self.MAINURL + match[0], 'plot': plot, 'icon': icon} self.currList.append(params) if nextPageparams is not None: self.currList.append(nextPageparams)
def displayList(self, activeIdx=0): list = [] tmpList = self.stackList[-1]['list'] type = self.stackList[-1]['type'] iconType = CDisplayListItem.TYPE_CATEGORY if type == 'movie': self["title"].setText(_("Select movie")) if type == 'episode': self["title"].setText(_("Select episode")) elif type == "lang": self["title"].setText(_("Select language")) elif type == "sub": iconType = CDisplayListItem.TYPE_ARTICLE self["title"].setText(_("Select subtitles to download")) self["title"].show() for item in tmpList: dItem = CDisplayListItem(name=clean_html(item['title']), type=iconType) dItem.privateData = item['private_data'] list.append((dItem, )) self["list"].setList(list) self["list"].show() try: self["list"].moveToIndex(activeIdx) except: pass self.setListMode(True)
def listAZItems(self, cItem, nextCategory): printDBG("PlayRTSIW.listAZItems cItem[%s]" % (cItem)) type = cItem['f_type'] if self.cacheShowsMap == []: if type == 'tv': url = self.getFullUrl('/play/v2/%s/shows' % type) else: url = self.getFullUrl( '/play/radio/shows/alphabetical-sections?channelId=' + cItem['f_channel_id']) sts, data = self.cm.getPage(url) if not sts: return data = clean_html( self.cm.ph.getDataBeetwenMarkers( data, 'data-alphabetical-sections="', '"', False)[1]) try: self.cacheShowsMap = byteify(json.loads(data)) except Exception: printExc() letters = cItem.get('f_letters', '') try: for section in self.cacheShowsMap: if section['id'] not in letters: continue params = dict(cItem) params['category'] = nextCategory self._listShows(params, section['showTeaserList']) except Exception: printExc()
def getLinksForVideo(self, cItem): printDBG("IceFilms.getLinksForVideo [%s]" % cItem) urlTab = [] if len(self.cacheLinks.get(cItem['url'], [])): return self.cacheLinks[cItem['url']] rm(self.COOKIE_FILE) sts, data = self.getPage(cItem['url'], self.defaultParams) if not sts: return [] url = self.getFullUrl(self.cm.ph.getSearchGroups(data, '''<iframe[^>]+?src=['"]([^"^']+?)['"]''', 1, True)[0]) url = self.getFullUrl(url) sts, data = self.getPage(url, self.defaultParams ) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers(data, 'id="srclist"', 'These links brought')[1] data = self.cm.ph.getAllItemsBeetwenMarkers(data, 'ripdiv', '</div>') for item in data: mainTitle = self.cleanHtmlStr(self.cm.ph.getDataBeetwenMarkers(item, '<b', '</b>')[1]) sourcesTab = self.cm.ph.getAllItemsBeetwenMarkers(item, '<a', '</i>') for source in sourcesTab: sourceId = self.cm.ph.getSearchGroups(source, '''onclick=['"]go\((\d+)\)['"]''')[0] if sourceId == '': continue sourceName = self.cleanHtmlStr(clean_html(source.replace('</a>', ' '))) urlTab.append({'name':'[{0}] {1}'.format(mainTitle, sourceName), 'url':strwithmeta(sourceId, {'url':cItem['url']}), 'need_resolve':1}) self.cacheLinks[cItem['url']] = urlTab return urlTab
def cleanHtmlStr(str): str = str.replace('<', ' <') str = str.replace(' ', ' ') str = str.replace(' ', ' ') str = clean_html(str) str = str.replace('\n', ' ').replace('\r', ' ').replace('\t', ' ') return CParsingHelper.removeDoubles(str, ' ').strip()
def convertList(self, cList): hostList = [] for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = cItem.get('plot', '') description = clean_html(description.decode("utf-8")).encode("utf-8") icon = cItem.get('icon', '') hostItem = CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch) hostList.append(hostItem) return hostList
def getChannelsList(self): printDBG("SatLiveApi.getChannelsList") # login premium = config.plugins.iptvplayer.satlivetv_premium.value login = config.plugins.iptvplayer.satlivetv_login.value password = config.plugins.iptvplayer.satlivetv_password.value if premium: if self.doLogin(login, password): self.loggedIn = True self.http_params.update({'save_cookie': True, 'load_cookie': True, 'cookiefile': self.COOKIE_FILE}) else: self.sessionEx.open(MessageBox, _('Problem z zalogowanie użytkownika "%s. Sprawdź dane do logowania w konfiguracji hosta."') % login, type = MessageBox.TYPE_INFO, timeout = 10 ) # get channels channelsList = [] sts, data = self.cm.getPage(SatLiveApi.LIST_URL, self.http_params) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers(data, '<div class="tab-pane active" id="live">', '<div class="tab-pane" id="all">', False)[1] data = data.split('</li>') for item in data: tmp = self.cm.ph.getSearchGroups(item, '<h4><a href="([^"]+?)">([^<]+?)</a></h4>', 2) if '' != tmp[0]: params = {} params['url'] = SatLiveApi.MAINURL + tmp[0] params['title'] = tmp[1] icon = self.cm.ph.getSearchGroups(item, '<img class="" src="([^"]+?)"')[0] if '' != icon: params['icon'] = SatLiveApi.MAINURL + icon params['desc'] = self.cm.ph.removeDoubles(clean_html(item.replace('>', '> ')).replace('\t', ' '), ' ') channelsList.append(params) return channelsList
def displayList(self, activeIdx=0): list = [] tmpList = self.stackList[-1]['list'] type = self.stackList[-1]['type'] iconType = CDisplayListItem.TYPE_CATEGORY if type == 'movie': self["title"].setText(_("Select movie")) if type == 'episode': self["title"].setText(_("Select episode")) elif type == "lang": self["title"].setText(_("Select language")) elif type == "sub": iconType = CDisplayListItem.TYPE_ARTICLE self["title"].setText(_("Select subtitles to download")) self["title"].show() for item in tmpList: dItem = CDisplayListItem(name = clean_html(item['title']), type=iconType) dItem.privateData = item['private_data'] list.append( (dItem,) ) self["list"].setList(list) self["list"].show() try: self["list"].moveToIndex(activeIdx) except: pass self.setListMode(True)
def listFiltered(self, cItem): printDBG("SonyPlayerHU.listFiltered") site=cItem["site"] if not site in self.sites: return sitedef=self.siteDefs[self.sites.index(site)] self.tryTologin(sitedef) page=cItem.get("page",0) cItem.pop("page",None) url = sitedef["base"]+"/views/ajax?field_video_type_tid_selective="+cItem["url"].format("&field_genre_tid_selective=","&sort_by=")+"&view_name=videos&view_display_id=all_3up&view_path=videos%2Fall&pager_element=0&page="+str(page) try: sts, data = self.cm.getPage(url, self.defaultParams) if not sts: raise Exception("Can't get "+url+" page") data = json_loads(data) episodes=data[0]["settings"].get("spti_gigya_share") if not episodes: return i=next((i for i in data if i["command"] == "insert" and i["selector"] == ".view-dom-id-"), None) if i: data = i["data"] else: data = "" if 'class="pager pager-load-more"' in data: page = page + 1 else: page = 0 data = self.cm.ph.getAllItemsBeetwenMarkers(data, 'class="card video"', '</li>', False) for i,episode in enumerate(episodes): title = episode["title"] url = episode["url"] icon = episode["image"] desc = "" if i < len(data): desc = self.cm.ph.getDataBeetwenMarkers(data[i], '<div class="type">', "</div>", False)[1] tmp = self.cm.ph.getDataBeetwenMarkers(data[i], '<div class="meta">', "</div>", False)[1] tmp = self.cm.ph.getAllItemsBeetwenMarkers(tmp, '<span>', '</span>', False) if len(tmp) >= 2 and tmp[0] == "Hossz": if desc: desc = desc + " " desc = desc + tmp[1] tmp = self.cm.ph.getDataBeetwenMarkers(data[i], '<div class="more">', "/a>", False)[1] tmp = clean_html(self.cm.ph.getDataBeetwenMarkers(tmp, ">", "<", False)[1]) if desc and tmp: desc = desc + '\n' desc = desc + tmp params=dict(cItem) params.update( {"title": title, "icon": icon, "url": url, "desc": desc } ) self.addVideo(params) if page > 0 and len(self.currList) > 0: params = dict(cItem) params.update({'title':_("Next page"), 'page':page}) self.addDir(params) except Exception(): printExc()
def _getJItemStr(self, item, key, default=""): try: v = item.get(key, None) except: v = None if None == v: return default return clean_html(u"%s" % v).encode("utf-8")
def _getJItemStr(self, item, key, default=''): try: v = item.get(key, None) if None == v: return default except Exception: return default return clean_html('%s' % v)
def _getJItemStr(self, item, key, default=''): try: v = item.get(key, None) except Exception: v = None if None == v: return default return clean_html(u'%s' % v).encode('utf-8')
def _getJItemStr(self, item, key, default=''): try: v = item.get(key, None) if None == v: return default except: return default return clean_html(u'%s' % v).encode('utf-8')
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie #searchTypesOptions.append(("Seriale", "seriale")) searchTypesOptions.append(("Filmy", "filmy")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) elif cItem['type'] == 'article': type = CDisplayListItem.TYPE_ARTICLE url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = clean_html(cItem.get('title', '').decode("utf-8")).encode("utf-8") description = clean_html(cItem.get( 'plot', '').decode("utf-8")).encode("utf-8") icon = cItem.get('icon', '') hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) hostList.append(hostItem) return hostList
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie searchTypesOptions.append(("Zdjęcia", "images")) searchTypesOptions.append(("Wideo", "video")) searchTypesOptions.append(("Audio", "music")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] in ['audio', 'video', 'picture']: if 'video' == cItem['type']: type = CDisplayListItem.TYPE_VIDEO elif 'audio' == cItem['type']: type = CDisplayListItem.TYPE_AUDIO else: type = CDisplayListItem.TYPE_PICTURE url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) + clean_html( cItem.get('plot', '')) icon = cItem.get('icon', '') hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) hostList.append(hostItem) return hostList
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie searchTypesOptions.append(("Zdjęcia", "images")) searchTypesOptions.append(("Wideo", "video")) searchTypesOptions.append(("Audio", "music")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem["type"] == "category": if cItem["title"] == "Wyszukaj": type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem["type"] in ["audio", "video", "picture"]: if "video" == cItem["type"]: type = CDisplayListItem.TYPE_VIDEO elif "audio" == cItem["type"]: type = CDisplayListItem.TYPE_AUDIO else: type = CDisplayListItem.TYPE_PICTURE url = cItem.get("url", "") if "" != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get("title", "") description = clean_html(cItem.get("desc", "")) + clean_html(cItem.get("plot", "")) icon = cItem.get("icon", "") hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch, ) hostList.append(hostItem) return hostList
def listEpisodes(self, cItem): printDBG("SonyPlayerHU.listEpisodes") site=cItem["site"] if not site in self.sites: return sitedef=self.siteDefs[self.sites.index(site)] self.tryTologin(sitedef) page=cItem.get("page",0) cItem.pop("page",None) url = cItem["url"] try: sts, data = self.cm.getPage(sitedef["base"]+url+"?page="+str(page), self.defaultParams) if not sts: raise Exception("Can't get "+url+" page") if 'class="pager pager-load-more"' in data: page = page + 1 else: page = 0 data = self.cm.ph.getAllItemsBeetwenMarkers(data, 'class="card video"', '</li>', False) for i in data: tmp = self.cm.ph.getDataBeetwenMarkers(i, "<div class=promo>", "</a>", False)[1] url = sitedef["base"]+self.cm.ph.getDataBeetwenMarkers(tmp, 'href="', '">', False)[1] icon = self.cm.ph.getDataBeetwenMarkers(tmp, 'src="', '?', False)[1] title = clean_html(self.cm.ph.getDataBeetwenMarkers(tmp, "class=title>", "<", False)[1]) desc = self.cm.ph.getDataBeetwenMarkers(i, '<div class=type>', "</div>", False)[1] tmp = self.cm.ph.getDataBeetwenMarkers(i, '<div class=meta>', "</div>", False)[1] tmp = self.cm.ph.getAllItemsBeetwenMarkers(tmp, '<span>', '</span>', False) if len(tmp) >= 2 and tmp[0] == "Hossz": if desc: desc = desc + " " desc = desc + tmp[1] tmp = self.cm.ph.getDataBeetwenMarkers(i, "<div class=more>", "/a>", False)[1] tmp = clean_html(self.cm.ph.getDataBeetwenMarkers(tmp, ">", "<", False)[1]) if desc and tmp: desc = desc + '\n' desc = desc + tmp params = dict(cItem) params.update( {"title": title, "url": url, "icon": icon, "desc": desc } ) self.addVideo(params) if page > 0 and len(self.currList) > 0: params = dict(cItem) params.update({'title':_("Next page"), 'page':page}) self.addDir(params) except Exception(): printExc()
def getArticleContent(self, Index = 0): listLen = len(self.host.currList) if listLen < Index and listLen > 0: printDBG( "ERROR getArticleContent - current list is to short len: %d, Index: %d" % (listLen, Index) ) return RetHost(RetHost.ERROR, value = []) if self.host.currList[Index]["type"] != 'article': printDBG( "ERROR getArticleContent - current item has wrong type" ) return RetHost(RetHost.ERROR, value = []) retlist = [] hList = self.host.getArticleContent(Index) for item in hList: title = clean_html( item.get('title', '') ) text = clean_html( item.get('text', '') ) images = item.get("images", []) retlist.append( ArticleContent(title = title, text = text, images = images) ) return RetHost(RetHost.OK, value = retlist)
def getArticleContent(self, Index=0): listLen = len(self.host.currList) if listLen < Index and listLen > 0: printDBG("ERROR getArticleContent - current list is to short len: %d, Index: %d" % (listLen, Index)) return RetHost(RetHost.ERROR, value=[]) if self.host.currList[Index]["type"] != 'article': printDBG("ERROR getArticleContent - current item has wrong type") return RetHost(RetHost.ERROR, value=[]) retlist = [] hList = self.host.getArticleContent(Index) for item in hList: title = clean_html(item.get('title', '')) text = clean_html(item.get('text', '')) images = item.get("images", []) retlist.append(ArticleContent(title=title, text=text, images=images)) return RetHost(RetHost.OK, value=retlist)
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie #searchTypesOptions.append(("Seriale", "seriale")) searchTypesOptions.append(("Filmy", "filmy")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) elif cItem['type'] == 'article': type = CDisplayListItem.TYPE_ARTICLE url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = clean_html( cItem.get('title', '').decode("utf-8")).encode("utf-8" ) description = clean_html( cItem.get('plot', '').decode("utf-8")).encode("utf-8" ) icon = cItem.get('icon', '') hostItem = CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch) hostList.append(hostItem) return hostList
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie searchTypesOptions.append(("MUSIC", "MUSIC")) #searchTypesOptions.append(("TV", "TV")) searchTypesOptions.append(("FILM", "FILM")) #searchTypesOptions.append(("CHANNEL", "CHANNEL")) searchTypesOptions.append(("COMMUNITY", "COMMUNITY")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem.get('search_item', False): type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) + clean_html( cItem.get('plot', '')) icon = cItem.get('icon', '') hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) hostList.append(hostItem) return hostList
def getMoreItem(self, cUrl, data): moreItem = {} data = self.cm.ph.getDataBeetwenNodes(data, ('<div', '>', 'show_more'), ('</div', '>'))[1] ajaxData = clean_html( self.cm.ph.getSearchGroups( data, '''\sdata\-infiniteAjaxScroll=['"]([^'^"]+?)['"]''')[0]) queryData = clean_html( self.cm.ph.getSearchGroups( data, '''\sdata\-query=['"]([^'^"]+?)['"]''')[0]) try: data = byteify(json.loads(ajaxData)) moreItem['params'] = data moreItem['query'] = queryData moreItem['next'] = self.getFullUrl( data['url'] + '?' + queryData + '&page={0}', cUrl) moreItem['pages'] = data.get('k', 0) except Exception: printExc() printDBG(moreItem) return moreItem
def getCategoriesList(self): printDBG("TvSportCdaApi.getCategoriesList") sts,data = self.cm.getPage(TvSportCdaApi.MAINURL) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers(data, '<div id="nav">', '<div class="clear">', False)[1] catsList = [] data = data.split('menu-item-ancestor">') if len(data): del data[0] for item in data: tmp = self.cm.ph.getSearchGroups(item, '<a[^>]*?>(.+?)</a>')[0] catsList.append( {'title':clean_html(tmp), 'url':tmp} ) return catsList
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie searchTypesOptions.append(("MUSIC", "MUSIC")) #searchTypesOptions.append(("TV", "TV")) searchTypesOptions.append(("FILM", "FILM")) #searchTypesOptions.append(("CHANNEL", "CHANNEL")) searchTypesOptions.append(("COMMUNITY", "COMMUNITY")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem.get('search_item', False): type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) + clean_html(cItem.get('plot', '')) icon = cItem.get('icon', '') hostItem = CDisplayListItem(name = title, description = description, type = type, urlItems = hostLinks, urlSeparateRequest = 1, iconimage = icon, possibleTypesOfSearch = possibleTypesOfSearch) hostList.append(hostItem) return hostList
def convertList(self, cList): hostList = [] searchTypesOptions = [] # ustawione alfabetycznie # searchTypesOptions.append(("Items", "items")) # searchTypesOptions.append(("Channel", "channel")) for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem["type"] == "category": if cItem["title"] == "Wyszukaj": type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem["type"] == "video": type = CDisplayListItem.TYPE_VIDEO url = cItem.get("url", "") if "" != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get("title", "") description = clean_html(cItem.get("desc", "")) + clean_html(cItem.get("plot", "")) icon = cItem.get("icon", "") hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch, ) hostList.append(hostItem) return hostList
def listTeaserItems(self, cItem): printDBG("PlayRTSIW.listTeaserItems") sts, data = self.cm.getPage(cItem['url']) if not sts: return tmp = self.cm.ph.getAllItemsBeetwenMarkers(data, 'data-teaser="', '"', False) for data in tmp: data = clean_html(data) try: data = byteify(json.loads(data)) self._listItems(cItem, data) except Exception: printExc()
def getCategoriesList(self): printDBG("TvSportCdaApi.getCategoriesList") sts, data = self.cm.getPage(TvSportCdaApi.MAINURL) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers(data, '<div id="nav">', '<div class="clear">', False)[1] catsList = [] data = data.split('menu-item-ancestor">') if len(data): del data[0] for item in data: tmp = self.cm.ph.getSearchGroups(item, '<a[^>]*?>(.+?)</a>')[0] catsList.append({'title': clean_html(tmp), 'url': tmp}) return catsList
def convertList(self, cList): hostList = [] for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') title = clean_html(title.decode("utf-8")).encode("utf-8") description = cItem.get('plot', '') description = clean_html( description.decode("utf-8")).encode("utf-8") icon = cItem.get('icon', '') hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) hostList.append(hostItem) return hostList
def getChannelsList(self): printDBG("SatLiveApi.getChannelsList") # login premium = config.plugins.iptvplayer.satlivetv_premium.value login = config.plugins.iptvplayer.satlivetv_login.value password = config.plugins.iptvplayer.satlivetv_password.value if premium: if self.doLogin(login, password): self.loggedIn = True self.http_params.update({ 'save_cookie': True, 'load_cookie': True, 'cookiefile': self.COOKIE_FILE }) else: self.sessionEx.open( MessageBox, _('Problem z zalogowanie użytkownika "%s. Sprawdź dane do logowania w konfiguracji hosta."' ) % login, type=MessageBox.TYPE_INFO, timeout=10) # get channels channelsList = [] sts, data = self.cm.getPage(SatLiveApi.LIST_URL, self.http_params) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers( data, '<div class="tab-pane active" id="live">', '<div class="tab-pane" id="all">', False)[1] data = data.split('</li>') for item in data: tmp = self.cm.ph.getSearchGroups( item, '<h4><a href="([^"]+?)">([^<]+?)</a></h4>', 2) if '' != tmp[0]: params = {} params['url'] = SatLiveApi.MAINURL + tmp[0] params['title'] = tmp[1] icon = self.cm.ph.getSearchGroups( item, '<img class="" src="([^"]+?)"')[0] if '' != icon: params['icon'] = SatLiveApi.MAINURL + icon params['desc'] = self.cm.ph.removeDoubles( clean_html(item.replace('>', '> ')).replace('\t', ' '), ' ') channelsList.append(params) return channelsList
def listsItems(self, Index, url, name = ''): printDBG( 'Host listsItems begin' ) printDBG( 'Host listsItems url[%r] '% url ) valTab = [] if name == 'main-menu': printDBG( 'Host listsItems begin name='+name ) valTab.append(CDisplayListItem('Episodes', 'http://player.dancetrippin.tv/#dj', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/dj/'], 'episodes', '', None)) valTab.append(CDisplayListItem('Sol sessions', 'http://player.dancetrippin.tv/#sol', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/sol/'], 'episodes', '', None)) valTab.append(CDisplayListItem('Other videos', 'http://player.dancetrippin.tv/#other', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/other/'], 'episodes', '', None)) valTab.append(CDisplayListItem('Ibiza Global Radio', 'http://player.dancetrippin.tv/#igr', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/igr/'], 'episodes', '', None)) return valTab # ########## # if 'episodes' == name: printDBG( 'Host listsItems begin name='+name ) self.MAIN_URL = 'http://player.dancetrippin.tv' try: data = self.cm.getURLRequestData({ 'url': url, 'use_host': False, 'use_cookie': False, 'use_post': False, 'return_data': True }) except: printExc( 'Host listsItems query error url[%r]' % url ) return valTab #printDBG( 'Host listsItems data: '+data ) result = simplejson.loads(data) if result: for item in result: ''' printDBG( 'Host listsItems number: '+str(item["number"]) ) printDBG( 'Host listsItems title: '+str(item["title"]) ) printDBG( 'Host listsItems venue: '+str(item["venue"]) ) printDBG( 'Host listsItems location: '+str(item["location"]) ) printDBG( 'Host listsItems party: '+str(item["party"]) ) printDBG( 'Host listsItems description: '+str(item["description"]) ) printDBG( 'Host listsItems dj: '+str(item["dj"]) ) ''' if self.getStr(item["image"]) <> "": phImage = 'http://www.dancetrippin.tv/media/'+self.getStr(item["image"]) else: phImage = "http://player.dancetrippin.tv/media/static/img/system/default_video.png" #printDBG( 'Host listsItems phImage: '+phImage ) phUrl = self.MAIN_URL+'/video/'+self.getStr(item["slug"])+'/' #printDBG( 'Host listsItems phUrl: '+phUrl ) desc = '['+self.getStr(item["venue"])+']['+self.getStr(item["dj"])+']['+self.getStr(item["location"])+']['+self.getStr(item["party"])+']['+self.getStr(item["description"]) desc = clean_html(desc.decode("utf-8")).encode("utf-8") valTab.append(CDisplayListItem(self.getStr(item["number"])+' '+self.getStr(item["title"]),desc,CDisplayListItem.TYPE_VIDEO, [CUrlItem('HIGH', phUrl+'?q=hd', 1),CUrlItem('MEDIUM', phUrl+'?q=sd', 1)], 0, phImage, None)) printDBG( 'Host listsItems end' ) return valTab return valTab
def getChannelsList(self): printDBG("SatLiveApi.getChannelsList") # login premium = config.plugins.iptvplayer.satlivetv_premium.value login = config.plugins.iptvplayer.satlivetv_login.value password = config.plugins.iptvplayer.satlivetv_password.value if premium: if self.doLogin(login, password): self.loggedIn = True self.http_params.update({'save_cookie': True, 'load_cookie': True, 'cookiefile': self.COOKIE_FILE}) else: self.sessionEx.open(MessageBox, _('Problem z zalogowanie użytkownika "%s. Sprawdź dane do logowania w konfiguracji hosta."') % login, type = MessageBox.TYPE_INFO, timeout = 10 ) # get channels channelsList = [] sts, data = self.cm.getPage(SatLiveApi.LIST_URL, self.http_params) if not sts: return [] data = self.cm.ph.getDataBeetwenMarkers(data, '<div class="tab-pane active" id="live">', '<div class="tab-pane" id="all">', False)[1] data = data.split('</li>') for item in data: tmp = self.cm.ph.getSearchGroups(item, '<h4><a href="([^"]+?)">([^<]+?)</a></h4>', 2) if '' != tmp[0]: params = {} params['url'] = SatLiveApi.MAINURL + tmp[0] params['title'] = tmp[1] icon = self.cm.ph.getSearchGroups(item, '<img class="" src="([^"]+?)"')[0] if '' != icon: params['icon'] = SatLiveApi.MAINURL + icon params['desc'] = self.cm.ph.removeDoubles(clean_html(item.replace('>', '> ')).replace('\t', ' '), ' ') channelsList.append(params) if True: num = 1 m = 'eyI1NzkiOiAiVFZQIDEiLCAiNjA0IjogIlBvbHNhdCBTcG9ydCIsICI2MTgiOiAiUG9sc2F0IFNwb3J0IiwgIjU3MiI6ICJUQ00iLCAiNjA2IjogIlBvbHNhdCBTcG9ydCBFeHRyYSIsICI2MDAiOiAiQ2FuYWwrIFNwb3J0IiwgIjYwMiI6ICJQb2xzYXQiLCAiNDY5IjogIkhCTyBbSERdIiwgIjEyMCI6ICJBWE4gV2hpdGUiLCAiOTgiOiAiTmF0R2VvIiwgIjEyMiI6ICJOYXRHZW8gV2lsZCIsICI5MyI6ICJIQk8iLCAiOTQiOiAiSEJPIDIiLCAiOTciOiAiQ2luZW1heCAyIiwgIjU5MSI6ICJDYW5hbCsgW0hEXSIsICI1OTAiOiAiTWluaU1pbmkiLCAiNTkzIjogIkNhbmFsKyBGaWxtIiwgIjU5MiI6ICJDYW5hbCsiLCAiNjAxIjogIlBvbHNhdCBbSERdIiwgIjU5NCI6ICJBbGVLaW5vKyIsICI1OTciOiAiQ2FuYWwrIFNlcmlhbGUiLCAiNTk2IjogIlRlbGVUb29uIiwgIjU5OSI6ICJDYW5hbCsgRmFtaWx5IiwgIjU5OCI6ICJDYW5hbCsiLCAiMTE0IjogIkRpc2NvdmVyeSBTY2llbmNlIiwgIjExNyI6ICJEaXNuZXkgSnVuaW9yIiwgIjExMCI6ICJEaXNuZXkgWEQiLCAiMTEyIjogIkZpbG1ib3giLCAiMTE5IjogIkZPWCIsICIxMTgiOiAiVHJhdmVsIENoYW5uZWwiLCAiNTI4IjogIlR1cmJvIFh0cmEiLCAiNTg3IjogIm5TcG9ydCIsICI1ODQiOiAiVFZQIFNlcmlhbGUiLCAiNTg1IjogIlRWUCBTcG9ydCIsICI1ODIiOiAiVFZQIDIgW0hEXSIsICI1ODMiOiAiVFZQIEluZm8iLCAiNTgwIjogIlRWUCAxIFtIRF0iLCAiNTgxIjogIlRWUCAyIiwgIjYxMiI6ICJVbmtub3duIiwgIjYxMyI6ICJVbmtub3duIiwgIjYxMCI6ICJVbmtub3duIiwgIjYxMSI6ICJUVk4gMjQiLCAiNTg4IjogIm5TcG9ydCBbSERdIiwgIjU4OSI6ICJDYW5hbCsgU3BvcnQgW0hEXSIsICIxMDgiOiAiRGlzY292ZXJ5IGxpZmUiLCAiMTA5IjogIkFYTiIsICIxMDIiOiAiRXVyb3Nwb3J0IDIiLCAiMTAxIjogIkV1cm9zcG9ydCIsICIxMDYiOiAiSEJPIENvbWVkeSIsICIxMDciOiAiS2lubyBQb2xza2EiLCAiMTA0IjogIlRMQyIsICI0NzAiOiAiRGlzY292ZXJ5IFtIRF0iLCAiNDcxIjogIk5hdEdlbyBbSERdIiwgIjQ3NiI6ICJCQkMgZWFydGgiLCAiNDc0IjogIkRpc2NvdmVyeSIsICI0NzgiOiAiVmlhc2F0IE5hdHVyZSIsICI0NzkiOiAiVmlhc2F0IEhpc3RvcnkiLCAiNjE2IjogIlBvbHNhdCBIRCIsICI2MTciOiAiUG9sc2F0IiwgIjYxOSI6ICJQb2xzYXQgU3BvcnQgRXh0cmEifQ==' try: m = byteify(json.loads(base64.b64decode(m))) except: m = {} for a in base64.b64decode('OTMsOTQsOTcsOTgsMTAxLDEwMiwxMDQsMTA2LDEwOSwxMTAsMTEyLDExNCwxMTcsMTE4LDExOSwxMjAsMTIyLDQ2OSw0NzAsNDcxLDQ3NCw0NzYsNDc4LDQ3OSw1MjgsNTcxLDU3Miw1NzksNTgwLDU4MSw1ODIsNTgzLDU4NCw1ODUsNTg3LDU4OCw1ODksNTkwLDU5MSw1OTIsNTkzLDU5NCw1OTUsNTk2LDU5Nyw1OTgsNTk5LDYwMCw2MTAsNjExLDYxMiw2MTMsNjE2LDYxNyw2MTgsNjE5').split(','): channelsList.append({'title':'Test %s' % m.get(a, ''), 'url':SatLiveApi.MAINURL+'/id/%s/' % a, 'icon':'http://web-live.tv/uploads/transmissions/Transmission/live/%s.jpg?%s' % (a, time.time()), 'desc':''}) num += 1 return channelsList
def convertList(self, cList): hostList = [] searchTypesOptions = [] for cItem in cList: hostLinks = [] type = CDisplayListItem.TYPE_UNKNOWN possibleTypesOfSearch = None if cItem['type'] == 'category': if cItem['title'] == 'Wyszukaj': type = CDisplayListItem.TYPE_SEARCH possibleTypesOfSearch = searchTypesOptions else: type = CDisplayListItem.TYPE_CATEGORY elif cItem['type'] == 'video': type = CDisplayListItem.TYPE_VIDEO url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) elif cItem['type'] == 'article': type = CDisplayListItem.TYPE_ARTICLE url = cItem.get('url', '') if '' != url: hostLinks.append(CUrlItem("Link", url, 1)) title = cItem.get('title', '') description = clean_html(cItem.get('desc', '')) icon = self.host.getFullUrl(cItem.get('icon', '')) hostItem = CDisplayListItem( name=title, description=description, type=type, urlItems=hostLinks, urlSeparateRequest=1, iconimage=icon, possibleTypesOfSearch=possibleTypesOfSearch) hostList.append(hostItem) return hostList
def _cleanHtmlStr(self, str): str = self.cm.ph.replaceHtmlTags(str, ' ').replace('\n', ' ') return clean_html( self.cm.ph.removeDoubles(str, ' ').replace(' )', ')').strip())
def _getStr(self, v, default=''): return clean_html(self._encodeStr(v, default))
def getLastApiError(self): self.lastApiError['message'] = clean_html(self._getStr(self.lastApiError['message'], '')) return self.lastApiError
def _cleanHtmlStr(self, str): str = self.cm.ph.replaceHtmlTags(str, " ").replace("\n", " ") return clean_html(self.cm.ph.removeDoubles(str, " ").replace(" )", ")").strip())
def _cleanHtmlStr(self, str): str = str.replace('<', ' <').replace('\n', ' ').replace('\r', ' ').replace('\t', ' ') return self.cm.ph.removeDoubles(clean_html(str), ' ').strip()
def getLastApiError(self): self.lastApiError['message'] = clean_html( self._getStr(self.lastApiError['message'], '')) return self.lastApiError
def cleanHtmlStr(str): str = str.replace('<', ' <').replace('\n', ' ').replace('\r', ' ').replace('\t', ' ') return CParsingHelper.removeDoubles(clean_html(str), ' ').strip()
def _cleanHtmlStr(self, str): str = self.cm.ph.replaceHtmlTags(str, ' ').replace('\n', ' ') return clean_html(self.cm.ph.removeDoubles(str, ' ').replace(' )', ')').strip())
def parseListBase(self, data, type='video'): printDBG("parseListBase----------------") urlPatterns = { 'video' : ['video' , 'href="[ ]*?(/watch\?v=[^"]+?)"' , ''], 'channel' : ['category', 'href="(/[^"]+?)"' , ''], 'playlist' : ['category', 'list=([^"]+?)"' , '/playlist?list='], 'movie' : ['video' , 'data-context-item-id="([^"]+?)"' , '/watch?v='], 'live' : ['video' , 'href="(/watch\?v=[^"]+?)"' , ''], 'tray' : ['video' , 'data-video-id="([^"]+?)"' , '/watch?v='], } currList = [] for i in range(len(data)): #printDBG("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") # get requaired params url = urlPatterns[type][2] + self.getAttributes(urlPatterns[type][1], data[i]) # get title title = '' #self.getAttributes('title="([^"]+?)"', data[i]) if '' == title: title = self.getAttributes('data-context-item-title="([^"]+?)"', data[i]) if '' == title: title = self.getAttributes('data-video-title="([^"]+?)"', data[i]) if '' == title: sts,title = CParsingHelper.getDataBeetwenMarkers(data[i], '<h3 class="yt-lockup-title">', '</h3>', False) if '' == title: sts,title = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('<span [^>]*?class="title[^>]*?>'), re.compile('</span>'), False) if '' == title: sts,title = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('class="pl-video-title-link[^>]*?>'), re.compile('<'), False) if '' == title: titleMarker = self.cm.ph.getSearchGroups(data[i], '(<[^">]+?"yt-lockup-title[^"]*?"[^>]*?>)')[0] if '' != titleMarker: tidx = titleMarker.find(' ') if tidx > 0: tmarker = titleMarker[1:tidx] title = self.cm.ph.getDataBeetwenMarkers(data[i], titleMarker, '</%s>' % tmarker)[1] if '' != title: title = CParsingHelper.removeDoubles(remove_html_markup(title, ' '), ' ') img = self.getAttributes('data-thumb="([^"]+?\.jpg)"', data[i]) if '' == img: img = self.getAttributes('src="([^"]+?\.jpg)"', data[i]) time = self.getAttributes('data-context-item-time="([^"]+?)"', data[i]) if '' == time: time = self.getAttributes('class="video-time">([^<]+?)</span>', data[i]) if '' == time: sts, time = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('pl-video-time"[^>]*?>'), re.compile('<'), False) if '' == time: sts, time = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('timestamp"[^>]*?>'), re.compile('<'), False) time = time.strip() # desc sts,desc = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('class="video-description[^>]+?>'), re.compile('</p>'), False) if '' == desc: sts,desc = CParsingHelper.getDataBeetwenReMarkers(data[i], re.compile('class="yt-lockup-description[^>]+?>'), re.compile('</div>'), False) desc = CParsingHelper.removeDoubles(remove_html_markup(desc, ' '), ' ') urlTmp = url.split(';') if len(urlTmp) > 0: url = urlTmp[0] if type == 'video': url = url.split('&')[0] # printDBG('url [%s] ' % url) # printDBG('title [%s] ' % title) # printDBG('img [%s] ' % img) # printDBG('time [%s] ' % time) # printDBG('desc [%s] ' % desc) if title != '' and url != '' and img != '': correctUrlTab = [url, img] for i in range(len(correctUrlTab)): if not correctUrlTab[i].startswith('http:') and not correctUrlTab[i].startswith('https:'): if correctUrlTab[i].startswith("//"): correctUrlTab[i] = 'http:' + correctUrlTab[i] else: correctUrlTab[i] = 'http://www.youtube.com' + correctUrlTab[i] else: if correctUrlTab[i].startswith('https:'): correctUrlTab[i] = "http:" + correctUrlTab[i][6:] title = clean_html(title.decode("utf-8")).encode("utf-8") desc = clean_html(desc.decode("utf-8")).encode("utf-8") params = {'type': urlPatterns[type][0], 'category': type, 'title': title, 'url': correctUrlTab[0], 'icon': correctUrlTab[1], 'time': time, 'desc': desc} currList.append(params) return currList
def decodeHtml(text): return clean_html(text.decode("utf-8", 'ignore')).encode("utf-8")
def listsItems(self, Index, url, name=''): printDBG('Host listsItems begin') printDBG('Host listsItems url[%r] ' % url) valTab = [] if name == 'main-menu': printDBG('Host listsItems begin name=' + name) valTab.append( CDisplayListItem( 'Episodes', 'http://player.dancetrippin.tv/#dj', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/dj/'], 'episodes', '', None)) valTab.append( CDisplayListItem( 'Sol sessions', 'http://player.dancetrippin.tv/#sol', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/sol/'], 'episodes', '', None)) valTab.append( CDisplayListItem( 'Other videos', 'http://player.dancetrippin.tv/#other', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/other/'], 'episodes', '', None)) valTab.append( CDisplayListItem( 'Ibiza Global Radio', 'http://player.dancetrippin.tv/#igr', CDisplayListItem.TYPE_CATEGORY, ['http://player.dancetrippin.tv/video/list/igr/'], 'episodes', '', None)) return valTab # ########## # if 'episodes' == name: printDBG('Host listsItems begin name=' + name) self.MAIN_URL = 'http://player.dancetrippin.tv' try: data = self.cm.getURLRequestData({ 'url': url, 'use_host': False, 'use_cookie': False, 'use_post': False, 'return_data': True }) except: printExc('Host listsItems query error url[%r]' % url) return valTab #printDBG( 'Host listsItems data: '+data ) result = simplejson.loads(data) if result: for item in result: ''' printDBG( 'Host listsItems number: '+str(item["number"]) ) printDBG( 'Host listsItems title: '+str(item["title"]) ) printDBG( 'Host listsItems venue: '+str(item["venue"]) ) printDBG( 'Host listsItems location: '+str(item["location"]) ) printDBG( 'Host listsItems party: '+str(item["party"]) ) printDBG( 'Host listsItems description: '+str(item["description"]) ) printDBG( 'Host listsItems dj: '+str(item["dj"]) ) ''' if self.getStr(item["image"]) <> "": phImage = 'http://www.dancetrippin.tv/media/' + self.getStr( item["image"]) else: phImage = "http://player.dancetrippin.tv/media/static/img/system/default_video.png" #printDBG( 'Host listsItems phImage: '+phImage ) phUrl = self.MAIN_URL + '/video/' + self.getStr( item["slug"]) + '/' #printDBG( 'Host listsItems phUrl: '+phUrl ) desc = '[' + self.getStr( item["venue"]) + '][' + self.getStr( item["dj"]) + '][' + self.getStr( item["location"]) + '][' + self.getStr( item["party"]) + '][' + self.getStr( item["description"]) desc = clean_html(desc.decode("utf-8")).encode("utf-8") valTab.append( CDisplayListItem( self.getStr(item["number"]) + ' ' + self.getStr(item["title"]), desc, CDisplayListItem.TYPE_VIDEO, [ CUrlItem('HIGH', phUrl + '?q=hd', 1), CUrlItem('MEDIUM', phUrl + '?q=sd', 1) ], 0, phImage, None)) printDBG('Host listsItems end') return valTab return valTab
def _getJItemStr(self, item, key, default=''): v = item.get(key, None) if None == v: return default return clean_html(u'%s' % v).encode('utf-8')
def _cleanHtmlStr(self, str): str = str.replace('<', ' <').replace('\n', ' ').replace('\r', ' ').replace('\t', ' ') return self.cm.ph.removeDoubles(clean_html(str), ' ').strip()
def decodeHtml(text): return clean_html(text.decode("utf-8", 'ignore')).encode("utf-8")
def getLinksForVideo(self, cItem): printDBG("StreamComplet.getLinksForVideo [%s]" % cItem) urlTab = [] params = dict(self.defaultParams) header = dict(self.HEADER) header['Referer'] = cItem['url'] params['header'] = header sts, data = self.cm.getPage(cItem['url'], params) if not sts: return [] if 0: adminData = self.cm.ph.getDataBeetwenMarkers(data, 'jQuery.ajax({', '});', False)[1] adminUrl = self.cm.ph.getSearchGroups(adminData, "url:'([^']+?)'")[0] adminUrl += '?' + self.cm.ph.getSearchGroups(adminData, "data:'([^']+?)'")[0] header = dict(self.HEADER) header['X-Requested-With'] = 'XMLHttpRequest' header['Referer'] = cItem['url'] paramsAdmin = dict(self.defaultParams) paramsAdmin['header'] = header sts, adminData = self.cm.getPage(adminUrl, paramsAdmin) printDBG('>>>>>>>>>>>>>> adminData[%s]' % adminData) projekktor_controlbar={"muted":false,"volume":0.5}; mainPlayerUrl = self.cm.ph.getSearchGroups(data, 'src="(http[^"]+?player[^"]+?)"')[0] #printDBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> playerUrl[%s]" % playerUrl) movieId = self.cm.ph.getSearchGroups(mainPlayerUrl+'/', 'f=([0-9]+?)/')[0] if movieId != '': playerUrl = 'http://ok.ru/video/' + movieId tmpParams = copy.deepcopy(params) tmpParams['header']['User-Agent'] = self.USER_AGENT2 sts, data = self.cm.getPage(playerUrl, tmpParams) if not sts: return [] try: tmp = clean_html(re.search(r'data-options=(?P<quote>["\'])(?P<player>{.+?%s.+?})(?P=quote)' % movieId, data).group('player')) tmp = byteify( json.loads( tmp ) ) tmp = byteify( json.loads( tmp['flashvars']['metadata'] ) ) for item in tmp['videos']: videoUrl = self.up.decorateUrl(item['url'], {'User-Agent':self.USER_AGENT2}) urlTab.append({'name':item['name'], 'url':videoUrl, 'need_resolve':0}) except: printExc() playerUrl = 'http://m.ok.ru/video/' + movieId tmpParams['header']['User-Agent'] = self.USER_AGENT sts, data = self.cm.getPage(playerUrl, tmpParams) if not sts: return [] videoUrl = self.cm.ph.getSearchGroups(data, 'href="(http[^"]+?moviePlaybackRedirect[^"]+?)"')[0].replace('&', '&') if videoUrl.startswith('http'): videoUrl = self.up.decorateUrl(videoUrl, {'User-Agent':self.USER_AGENT}) urlTab.insert(0, {'name':'default', 'url':videoUrl, 'need_resolve':0}) return urlTab playerUrl = mainPlayerUrl.replace('&', '&') sts, data = self.cm.getPage(playerUrl, params) if not sts: return [] printDBG(data) videoUrl = self.cm.ph.getSearchGroups(data, """src:[^'^"]+?['"]([^'^"]+?)['"]""")[0] if videoUrl != '' and videoUrl != 'vimplevideo.mp4': videoUrl = 'http://media.vimple.me/playeryw.swf/' + videoUrl videoUrl = self.up.decorateUrl(videoUrl, {'User-Agent':self.USER_AGENT}) return [{'name':'vimeo.me', 'url':videoUrl, 'need_resolve':0}] newPlayerUrl = self.cm.ph.getSearchGroups(data, '''["'](http[^"^']+?embed_player.php[^"^']+?)["']''')[0] if 'http%3A%2F%2F' in newPlayerUrl: newPlayerUrl = urllib.unquote(newPlayerUrl) for item in [cItem['url'], playerUrl, newPlayerUrl]: url = self.up.decorateUrl(item, {'Referer':cItem['url']}) tmp = self.up.getVideoLinkExt(url) for item in tmp: item['need_resolve'] = 0 urlTab.append(item) return urlTab
def getLocal(self, id, default): message = self._getStr(self.locales.get(id, default)) if len(message): return clean_html(message) else: return default