def list_videos_category(plugin, item_id, category_url, page, **kwargs): resp = urlquick.get(category_url + "?page=%s" % page) root = resp.parse() for video_datas in root.iterfind(".//div"): if video_datas.get("class") is not None: if "col-xs-12 col-md-12 col-lg-12" in video_datas.get("class"): video_title = video_datas.findall(".//span/a")[1].text video_image = video_datas.find(".//img").get("src") video_url = URL_ROOT + video_datas.find(".//a").get("href") video_plot = "" if video_datas.find(".//p") is not None: video_plot = video_datas.find(".//p").text item = Listitem() item.label = video_title item.art["thumb"] = video_image item.info["plot"] = video_plot item.set_callback( get_video_url, item_id=item_id, video_label=LABELS[item_id] + " - " + item.label, video_url=video_url, ) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, category_url=category_url, page=str(int(page) + 1))
def list_videos(plugin, item_id, context_id, program_id, page, **kwargs): resp = urlquick.get(URL_VIDEOS % (program_id, context_id, page)) json_parser = json.loads(resp.text) for video_datas in json_parser['items']: video_title = video_datas["image"]["alt"].replace(' | Video', '') video_image = video_datas["image"]["src"] video_url = URL_ROOT + video_datas["url"] item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, context_id=context_id, program_id=program_id, page=str(int(page) + 1))
def list_programs_videos(plugin, item_id, **kwargs): """ Build programs listing - Les feux de l'amour - ... """ resp = urlquick.get(URL_VIDEOS_DATAS) context_id = re.compile('contextId\" value=\"(.*?)\"').findall( resp.text)[0] root = resp.parse( "select", attrs={"class": "filter__input i-arrow-select-small-red"}) for program_datas in root.iterfind(".//option"): program_title = program_datas.get('label') program_id = program_datas.get('value') item = Listitem() item.label = program_title item.set_callback(list_videos, item_id=item_id, context_id=context_id, program_id=program_id, page='1') item_post_treatment(item) yield item
def list_videos_films_series_1(plugin, item_id, page, show_url, **kwargs): resp = urlquick.get(show_url + '?page=%s' % page) root = resp.parse() for episode in root.iterfind( ".//div[@class='card video-card video-card-row mdl-fixed']"): item = Listitem() item.label = episode.find('.//img').get('alt') try: video_id = re.compile('cmedia=(.*?)&').findall( episode.find(".//a[@class='meta-title-link']").get('href'))[0] except IndexError: continue if episode.find('.//img').get('data-src') is not None: item.art['thumb'] = episode.find('.//img').get('data-src') else: item.art['thumb'] = episode.find('.//img').get('src') item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_id=video_id) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item # More videos... yield Listitem.next_page(item_id=item_id, page=page + 1, show_url=show_url)
def list_videos_search(plugin, item_id, page, search_query, **kwargs): resp = urlquick.get(URL_SEARCH_VIDEOS % (page, search_query)) root = resp.parse("table", attrs={"class": "totalwidth noborder purehtml"}) for episode in root.iterfind(".//tr"): if episode.find('.//img') is not None: item = Listitem() item.label = episode.find('.//img').get('alt') video_id = '' if '_cmedia=' in episode.find('.//a').get('href'): video_id = re.compile(r'cmedia=(.*?)\&').findall( episode.find('.//a').get('href'))[0] elif '?cmedia=' in episode.find('.//a').get('href'): video_id = episode.find('.//a').get('href').split( '?cmedia=')[1] elif 'video-' in episode.find('.//a').get('href'): video_id = episode.find('.//a').get('href').split( '-')[1].replace('/', '') item.art['thumb'] = episode.find('.//img').get('src') item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_id=video_id) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item # More videos... yield Listitem.next_page(item_id=item_id, page=page + 1, search_query=search_query)
def list_videos_seasons(plugin, item_id, next_url, **kwargs): resp = urlquick.get(next_url) json_parser = json.loads(resp.text) program_title = json_parser['currentPage']['displayName'] for video_datas in json_parser['episodes']['contents']: if 'subtitle' in video_datas: video_title = program_title + ' ' + video_datas['title'] + ' ' + video_datas['subtitle'] else: video_title = program_title + ' ' + video_datas['title'] video_image = video_datas['URLImage'] video_plot = video_datas['summary'] video_url = video_datas['URLMedias'] item = Listitem() item.label = video_title item.art['thumb'] = video_image item.info['plot'] = video_plot item.set_callback( get_video_url, item_id=item_id, next_url=video_url, video_label=LABELS[item_id] + ' - ' + item.label, item_dict=item2dict(item)) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item
def list_shows_emissions_4(plugin, item_id, page, programs_url, **kwargs): resp = urlquick.get(programs_url + '?page=%s' % page) root = resp.parse() for program in root.iterfind(".//figure[@class='media-meta-fig']"): item = Listitem() item.label = program.find(".//h2[@class='title ']").find( './/span').find('.//a').text.strip() if program.find('.//img').get('data-attr') is not None: image_json_parser = json.loads( program.find('.//img').get('data-attr')) item.art['thumb'] = image_json_parser['src'] else: item.art['thumb'] = program.find('.//img').get('src') program_url = URL_ROOT + program.find(".//h2[@class='title ']").find( './/span').find('.//a').get('href') item.set_callback(list_shows_emissions_5, item_id=item_id, program_url=program_url) item_post_treatment(item) yield item if root.find(".//div[@class_='pager pager margin_40t']") \ is not None: # More programs... yield Listitem.next_page(item_id=item_id, programs_url=programs_url, page=page + 1)
def list_programs_concert(plugin, item_id, sub_category_code_name, sub_category_url, **kwargs): """ Build programs listing - Les feux de l'amour - ... """ resp = urlquick.get(sub_category_url) json_value = re.compile(r'_INITIAL_STATE__ \= (.*?)\}\;').findall( resp.text)[0] json_parser = json.loads(json_value + '}') value_code = json_parser['pages']['currentCode'] for sub_category_datas in json_parser['pages']['list'][value_code][ 'zones']: if sub_category_datas['code']['name'] == sub_category_code_name: for program_datas in sub_category_datas['data']: program_title = program_datas['title'] program_url = program_datas['url'] program_image = '' for image_datas in program_datas['images']['landscape'][ 'resolutions']: program_image = image_datas['url'] item = Listitem() item.label = program_title item.art['thumb'] = program_image item.set_callback(list_videos_program_concert, item_id=item_id, program_url=program_url) item_post_treatment(item) yield item
def list_categories(plugin, item_id, **kwargs): """ Build categories listing - Tous les programmes - Séries - Informations - ... """ resp = urlquick.get(URL_ROOT % DESIRED_LANGUAGE.lower()) json_value = re.compile(r'_INITIAL_STATE__ \= (.*?)\}\;').findall( resp.text)[0] # print 'json_value : ' + repr(json_value) json_parser = json.loads(json_value + '}') value_code = json_parser['pages']['currentCode'] for category_datas in json_parser['pages']['list'][value_code]['zones']: if 'category' in category_datas['code']['name']: category_title = category_datas['title'] category_url = category_datas['link']['url'] item = Listitem() item.label = category_title item.set_callback(list_sub_categories, item_id=item_id, category_url=category_url) item_post_treatment(item) yield item
def list_videos_last(plugin, item_id, page=1, **kwargs): url_last = "standard/publish/channels/%s/contents/" % item_id resp = urlquick.get(URL_API(url_last), params={ 'size': 20, 'page': page, 'filter': "with-no-vod,only-visible", 'sort': "begin_date:desc" }) json_parser = json.loads(resp.text) for video in json_parser['result']: item = Listitem() broadcast_id = populate_item(item, video, True) item.set_callback(get_video_url, item_id=item_id, broadcast_id=broadcast_id, video_label=LABELS[item_id] + ' - ' + item.label, item_dict=item2dict(item)) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item # More videos... if json_parser['cursor']['next'] is not None: yield Listitem.next_page(item_id=item_id, page=json_parser['cursor']['next'])
def list_videos_other(plugin, item_id, program_part_url, page=0, **kwargs): # URL example: http://api-front.yatta.francetv.fr/standard/publish/taxonomies/france-2_cash-investigation/contents/?size=20&page=0&sort=begin_date:desc&filter=with-no-vod,only-visible url_program = "standard/publish/taxonomies/%s/contents/" % program_part_url resp = urlquick.get(URL_API(url_program), params={ 'size': 500, 'page': page, 'filter': "with-no-vod,only-visible", 'sort': "sort = begin_date:desc" }) json_parser = json.loads(resp.text) for video in json_parser['result']: if video['type'] != 'integrale' and video['type'] != 'extrait': item = Listitem() broadcast_id = populate_item(item, video) item.set_callback(get_video_url, item_id=item_id, broadcast_id=broadcast_id, video_label=LABELS[item_id] + " - " + item.label, item_dict=item2dict(item)) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item # More videos... if json_parser['cursor']['next'] is not None and json_parser['cursor'][ 'last'] is not None: yield Listitem.next_page(item_id=item_id, program_part_url=program_part_url, page=json_parser['cursor']['next'])
def list_programs(plugin, item_id, category_title, **kwargs): """ Build programs listing - Les feux de l'amour - ... """ resp = urlquick.get(URL_SHOWS) root = resp.parse() for category_datas in root.iterfind( ".//div[@class='col-md-4 ProgramList-sub']"): if category_title in category_datas.find(".//img").get('alt'): for program_datas in category_datas.findall(".//a"): if 'emissions' in program_datas.get('href'): program_title = program_datas.text program_url = URL_ROOT + program_datas.get('href') item = Listitem() item.label = program_title item.set_callback(list_videos, item_id=item_id, program_url=program_url, page='1') item_post_treatment(item) yield item
def list_programs(plugin, item_id, category_emission_url, **kwargs): """ Build programs listing - ... """ resp = urlquick.get(category_emission_url) root = resp.parse() for program_datas in root.iterfind(".//div"): if program_datas.get("class") is not None: if "col-xs-12 col-md-12 col-sm-12 col-lg-12" in program_datas.get( "class"): program_title = program_datas.findall(".//span/a")[1].text program_image = program_datas.find(".//img").get("src") program_url = URL_ROOT + program_datas.find(".//a").get("href") program_plot = "" if program_datas.find(".//p") is not None: program_plot = program_datas.find(".//p").text item = Listitem() item.label = program_title item.art["thumb"] = program_image item.info["plot"] = program_plot item.set_callback(list_videos, item_id=item_id, program_url=program_url, page="0") item_post_treatment(item) yield item
def list_categories(plugin, item_id, **kwargs): """ Build categories listing - ... """ category_emission_url = URL_ROOT + "/fr/a24-nos-emissions" item = Listitem() item.label = "Emissions" item.set_callback(list_programs, item_id=item_id, category_emission_url=category_emission_url) item_post_treatment(item) yield item resp = urlquick.get(URL_ROOT) root = resp.parse("section", attrs={"class": "block block-project-menu"}) for category_datas in root.iterfind(".//li"): category_title = category_datas.find("a").get("title") category_url = URL_ROOT + category_datas.find("a").get("href") item = Listitem() item.label = category_title item.set_callback(list_videos_category, item_id=item_id, category_url=category_url, page="0") item_post_treatment(item) yield item
def list_seasons(plugin, item_id, program_url, **kwargs): resp = urlquick.get(program_url, headers={"User-Agent": web_utils.get_random_ua()}) root = resp.parse("ul", attrs={"class": "nav nav-tabs"}) for season_datas in root.iterfind(".//h3"): season_title = season_datas.text.strip() season_url = program_url + '#%s' % season_datas.text.split(' ')[1] item = Listitem() item.label = season_title item.set_callback(list_videos, item_id=item_id, season_url=season_url) item_post_treatment(item) yield item if root.find('.//h2') is not None: season_title = 'Series %s' % root.find('.//h2').text.strip() season_url = program_url item = Listitem() item.label = season_title item.set_callback(list_videos, item_id=item_id, season_url=season_url) item_post_treatment(item) yield item
def list_categories(plugin, item_id, **kwargs): """ Build categories listing - Tous les programmes - Séries - Informations - ... """ resp = urlquick.get(URL_REPLAY_CNEWS) root = resp.parse("menu", attrs={"class": "index-emission-menu"}) for category in root.iterfind("ul/li"): if category.find('a') is not None: category_name = category.find('a').text else: category_name = category.text if 'mission' in category_name: category_url = URL_EMISSIONS_CNEWS else: category_url = URL_VIDEOS_CNEWS if category_name != 'Les tops': item = Listitem() item.label = category_name item.set_callback(list_videos, item_id=item_id, category_url=category_url, page='0') item_post_treatment(item) yield item
def list_videos(plugin, item_id, page, **kwargs): """Add modes in the listing""" resp = requests.get(URL_REPLAYS % page) parser = htmlement.HTMLement() parser.feed(resp.text) root = parser.close() for video_datas in root.iterfind(".//li"): video_title = video_datas.find('.//a').get('title') video_image = URL_ROOT + re.compile(r'url\((.*?)\)').findall( video_datas.find(".//div[@class='imgContainer']").get('style'))[0] video_id = re.compile(r'concert\/(.*?)\/').findall( video_datas.find('.//a').get('href'))[0] item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback( get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_id=video_id) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, page=str(int(page) + 1))
def list_videos(plugin, item_id, category_url, page, **kwargs): resp = urlquick.get(category_url % page) parser = htmlement.HTMLement() parser.feed(resp.json()) data = parser.close() for video_datas in data.iterfind(".//a"): video_title = video_datas.find('.//img').get('title') video_image = video_datas.find('.//img').get('data-echo') video_url = URL_ROOT_SITE + video_datas.get('href') item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item # More videos... yield Listitem.next_page(item_id=item_id, category_url=category_url, page=str(int(page) + 1))
def list_categories(plugin, item_id, **kwargs): """ Build categories listing - Tous les programmes - Séries - Informations - ... """ resp = urlquick.get(URL_REPLAY % item_id) json_replay = re.compile('window.__data=(.*?)};').findall(resp.text)[0] json_parser = json.loads(json_replay + ('}')) for category in json_parser["templates"]["landing"]["strates"]: if category["type"] == "contentRow" or category["type"] == "contentGrid": if 'title' in category: title = category['title'] else: title = json_parser["page"]["displayName"] item = Listitem() item.label = title item.set_callback( list_contents, item_id=item_id, title_value=title) item_post_treatment(item) yield item
def list_videos(plugin, item_id, program_id, page, **kwargs): resp = resp = urlquick.get(URL_VIDEOS % (program_id, page)) root = resp.parse() for video_datas in root.iterfind(".//li[@class='item']"): video_title = video_datas.find('.//h3').text video_image = URL_ROOT + video_datas.find('.//img').get('src') video_plot = video_datas.find('.//p').text video_url = URL_ROOT + video_datas.find('.//a').get('href') date_value = video_datas.find(".//span[@class='date']").text.split( ' ')[1] item = Listitem() item.label = video_title item.art['thumb'] = video_image item.info['plot'] = video_plot item.info.date(date_value, '%d.%m.%Y') item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, program_id=program_id, page=str(int(page) + 1))
def list_shows_films_series_1(plugin, item_id, category_url, **kwargs): # Build All Types resp = urlquick.get(category_url) root = resp.parse() replay_types_films_series = root.findall( ".//ul[@class='filter-entity-word']")[0] item = Listitem() item.label = '# Toutes les videos' item.set_callback(list_videos_films_series_1, item_id=item_id, page=1, show_url=category_url) item_post_treatment(item) yield item for all_types in replay_types_films_series.findall('.//a'): item = Listitem() item.label = all_types.text show_url = URL_ROOT + all_types.get('href') item.set_callback(list_shows_films_series_2, item_id=item_id, show_url=show_url) item_post_treatment(item) yield item
def list_videos_documentaries(plugin, item_id, next_url, page, **kwargs): resp = urlquick.get(next_url) program_id = re.compile(r'\/program\.(.*?)\/prepare').findall(resp.text)[0] resp2 = urlquick.get( eval('URL_ROOT_%s' % DESIRED_LANGUAGE) + '/listing/program.%s/prepare/telecasts/10/%s' % (program_id, page)) root = resp2.parse("ul", attrs={"class": "telecast-list js-listing__list"}) for video_datas in root.iterfind( ".//div[@class='telecast-list__content']"): video_title = video_datas.find(".//img").get('alt') video_image = video_datas.find(".//img").get('data-src') video_url = eval( 'URL_ROOT_%s' % DESIRED_LANGUAGE) + video_datas.find('.//a').get('href') video_plot = video_datas.find( ".//p[@class='card__summary ']").text.strip() item = Listitem() item.label = video_title item.art['thumb'] = video_image item.info['plot'] = video_plot item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, next_url=next_url, page=str(int(page) + 1))
def list_videos_emissions_1(plugin, item_id, show_url, **kwargs): resp = urlquick.get(show_url) root = resp.parse("div", attrs={"class": "gd gd-gap-15 gd-xs-1 gd-s-2"}) for episode in root.iterfind( ".//div[@class='card video-card video-card-col mdl-fixed']"): item = Listitem() item.label = episode.find(".//img").get('alt') if episode.find('.//img').get('data-attr') is not None: image_json_parser = json.loads( episode.find('.//img').get('data-attr')) item.art['thumb'] = image_json_parser['src'] elif episode.find('.//img').get('data-src') is not None: item.art['thumb'] = episode.find('.//img').get('data-src') else: item.art['thumb'] = episode.find('.//img').get('src') if '?cmedia=' in episode.find('.//a').get('href'): video_id = episode.find('.//a').get('href').split('?cmedia=')[1] elif 'cfilm=' in episode.find('.//a').get('href') or \ 'cserie=' in episode.find('.//a').get('href'): video_id = episode.find('.//a').get('href').split( '_cmedia=')[1].split('&')[0] else: video_id = episode.find('.//a').get('href').split('-')[1].replace( '/', '') item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_id=video_id) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item
def list_videos(plugin, item_id, page, **kwargs): resp = urlquick.get( eval('URL_ROOT_%s' % DESIRED_LANGUAGE) + '/listing/type.Videoclub.category.videos/noprepare/video-rows/10/%s' % (page)) root = resp.parse("ul", attrs={"class": "media-rows js-listing__list"}) for video_datas in root.iterfind(".//div[@class='media-rows__content']"): video_title = video_datas.find(".//img").get('alt') video_image = video_datas.find(".//img").get('data-src') video_url = eval( 'URL_ROOT_%s' % DESIRED_LANGUAGE) + video_datas.find('.//a').get('href') item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, page=str(int(page) + 1))
def list_programs_videos_on_demand(plugin, item_id, page, **kwargs): """ Build programs listing - Les feux de l'amour - ... """ resp = urlquick.get(URL_SHOWS_DATAS) context_id = re.compile('contextId\" value=\"(.*?)\"').findall( resp.text)[0] resp2 = urlquick.get(URL_SHOWS % (context_id, page)) json_parser = json.loads(resp2.text) for program_datas in json_parser["items"]: program_title = program_datas["title"] program_image = '' for image_datas in program_datas["image"]["items"][0]["srcset"]: program_image = URL_ROOT + image_datas["src"] program_url = URL_ROOT + program_datas["url"] item = Listitem() item.label = program_title item.art['thumb'] = program_image item.set_callback(list_videos_on_demand, item_id=item_id, program_url=program_url, page='1') item_post_treatment(item) yield item yield Listitem.next_page(item_id=item_id, page=str(int(page) + 1))
def list_categories(plugin, item_id, **kwargs): """ Build categories listing - Tous les programmes - Séries - Informations - ... """ resp = urlquick.get(URL_NHK_LIFESTYLE) root = resp.parse() for category_datas in root.iterfind( ".//h2[@class='p-sliderSection__heading']"): if category_datas.find('.//a') is not None: if category_datas.find('.//a').get('class') is not None: if 'text-color-' in category_datas.find('.//a').get('class'): category_title = category_datas.find('.//a').text category_url = URL_NHK_LIFESTYLE + category_datas.find( './/a').get('href') item = Listitem() item.label = category_title item.set_callback(list_videos, item_id=item_id, category_url=category_url) item_post_treatment(item) yield item
def list_videos_on_demand(plugin, item_id, program_url, page, **kwargs): resp = urlquick.get(program_url) context_id = re.compile('contextId\" value=\"(.*?)\"').findall( resp.text)[0] resp2 = urlquick.get(URL_SHOWS % (context_id, page)) json_parser = json.loads(resp2.text) for video_datas in json_parser['items']: video_title = video_datas["title"] video_image = '' if 'src' in video_datas["image"]: video_image = video_datas["image"]["src"] else: for image_datas in video_datas["image"]["items"][0]["srcset"]: video_image = URL_ROOT + image_datas["src"] video_url = URL_ROOT + video_datas["url"] item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, program_url=program_url, page=str(int(page) + 1))
def list_videos(plugin, item_id, category_url, **kwargs): resp = urlquick.get(category_url) root = resp.parse() for video_datas in root.iterfind(".//div[@class='root_qT0Me']"): if video_datas.find(".//p[@class='subtitle_1hI_I']") is not None: if video_datas.find(".//p[@class='title_1APl2']").text is not None: video_title = video_datas.find( ".//p[@class='title_1APl2']" ).text + ' - ' + video_datas.find( ".//p[@class='subtitle_1hI_I']").text else: video_title = video_datas.find( ".//p[@class='subtitle_1hI_I']").text else: video_title = video_datas.find(".//p[@class='title_1APl2']").text video_image = video_datas.find('.//img').get('src') video_url = URL_ROOT + video_datas.find('.//a').get('href') item = Listitem() item.label = video_title item.art['thumb'] = video_image item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_url=video_url) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item
def list_videos(plugin, item_id, url, **kwargs): headers = {'User-Agent': 'Android'} r = urlquick.get(url, headers=headers) json_parser = json.loads(r.text) for video in json_parser['list']: item = Listitem() item.label = video['title'] item.info['plot'] = video['description'] item.info['duration'] = video['duration'] item.art["thumb"] = video['thumbnail_large_url'] vid = video['id'] item.set_callback(get_video_url, item_id=item_id, video_label=LABELS[item_id] + ' - ' + item.label, video_id=vid) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item if json_parser['has_more']: currentPage = json_parser['page'] nextPage = currentPage + 1 yield Listitem.next_page(url=url.replace("page=" + str(currentPage), "page=" + str(nextPage)), callback=list_videos, item_id=item_id)
def list_videos(plugin, item_id, program_url, page, **kwargs): resp = urlquick.get(program_url + "?page=%s" % page) root = resp.parse("div", attrs={"class": "region region-video-home"}) for video_datas in root.iterfind(".//div"): if video_datas.get("class") is not None: if "col-xs-omar col-xs-6 col-md-4 col-sm-4 col-lg-4" in video_datas.get( "class"): video_title = video_datas.findall(".//span/a")[1].text video_image = video_datas.find(".//img").get("src") video_url = URL_ROOT + video_datas.find(".//a").get("href") item = Listitem() item.label = video_title item.art["thumb"] = video_image item.set_callback( get_video_url, item_id=item_id, video_label=LABELS[item_id] + " - " + item.label, video_url=video_url, ) item_post_treatment(item, is_playable=True, is_downloadable=True) yield item yield Listitem.next_page(item_id=item_id, program_url=program_url, page=str(int(page) + 1))