def cookies(): if xbmcvfs.exists(utility.cookie_file()): xbmcvfs.delete(utility.cookie_file()) utility.log('Cookie file deleted.') utility.notification(30301) if xbmcvfs.exists(utility.session_file()): xbmcvfs.delete(utility.session_file()) utility.log('Session file deleted.') utility.notification(30302)
def save_session(): temp_file = utility.session_file() + '.tmp' if xbmcvfs.exists(temp_file): xbmcvfs.delete(temp_file) session_backup = pickle.dumps(session) file_handler = xbmcvfs.File(temp_file, 'wb') file_handler.write(session_backup) file_handler.close() if xbmcvfs.exists(utility.session_file()): xbmcvfs.delete(utility.session_file()) xbmcvfs.rename(temp_file, utility.session_file())
def new_session(): global session session = requests.Session() session.headers.update({'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'}) session.max_redirects = 5 session.allow_redirects = True session.verify = certifi.where() if xbmcvfs.exists(utility.session_file()): file_handler = xbmcvfs.File(utility.session_file(), 'rb') content = file_handler.read() file_handler.close() session = pickle.loads(content)
def new_session(): global session session = requests.Session() session.headers.update({ 'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' }) session.max_redirects = 5 session.allow_redirects = True session.verify = certifi.where() if xbmcvfs.exists(utility.session_file()): file_handler = xbmcvfs.File(utility.session_file(), 'rb') content = file_handler.read() file_handler.close() session = pickle.loads(content)
def genres(video_type): post_data = '' match = [] xbmcplugin.addSortMethod(plugin_handle, xbmcplugin.SORT_METHOD_LABEL) if not xbmcvfs.exists(utility.session_file()): login.login() if video_type == 'tv': post_data = '{"paths":[["genres",83,"subgenres",{"from":0,"to":20},"summary"],["genres",83,"subgenres",' \ '"summary"]],"authURL":"%s"}' % utility.get_setting('authorization_url') elif video_type == 'movie': post_data = '{"paths":[["genreList",{"from":0,"to":24},["id","menuName"]],["genreList"]],"authURL":"%s"}' \ % utility.get_setting('authorization_url') else: pass content = utility.decode(connect.load_site(utility.evaluator(), post=post_data)) matches = json.loads(content)['value']['genres'] for item in matches: try: match.append((unicode(matches[item]['id']), matches[item]['menuName'])) except Exception: try: match.append((unicode(matches[item]['summary']['id']), matches[item]['summary']['menuName'])) except Exception: pass for genre_id, title in match: if video_type == 'tv': add.directory(title, utility.main_url + '/browse/genre/' + genre_id + '?bc=83', 'list_videos', '', video_type) elif not genre_id == '83' and video_type == 'movie': add.directory(title, utility.main_url + '/browse/genre/' + genre_id, 'list_videos', '', video_type) xbmcplugin.endOfDirectory(plugin_handle)
def videos(url, video_type, run_as_widget=False): post_data = '' i = 1 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() if 'recently-added' in url: post_data = utility.recently_added % utility.get_setting( 'authorization_url') elif 'genre' in url: post_data = utility.genre % (url.split('?')[1], utility.get_setting('authorization_url')) elif 'my-list' in url: post_data = utility.my_list % utility.get_setting('authorization_url') content = utility.decode( connect.load_site(utility.evaluator(), post=post_data)) matches = json.loads(content)['value']['videos'] for video_id in matches: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(matches), matches[video_id]['title']) video(unicode(video_id), '', '', False, False, video_type, url) i += 1 if utility.get_setting('force_view') == 'true' and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def genres(video_type): post_data = '' match = [] xbmcplugin.addSortMethod(plugin_handle, xbmcplugin.SORT_METHOD_LABEL) if not xbmcvfs.exists(utility.session_file()): login.login() if video_type == 'tv': post_data = utility.series_genre % utility.get_setting( 'authorization_url') elif video_type == 'movie': post_data = utility.movie_genre % utility.get_setting( 'authorization_url') else: pass content = utility.decode( connect.load_site(utility.evaluator(), post=post_data)) matches = json.loads(content)['value']['genres'] for item in matches: try: match.append( (unicode(matches[item]['id']), matches[item]['menuName'])) except Exception: try: match.append((unicode(matches[item]['summary']['id']), matches[item]['summary']['menuName'])) except Exception: pass for genre_id, title in match: if video_type == 'tv': add.directory(title, 'genre?' + genre_id, 'list_videos', '', video_type) elif not genre_id == '83' and video_type == 'movie': add.directory(title, 'genre?' + genre_id, 'list_videos', '', video_type) xbmcplugin.endOfDirectory(plugin_handle)
def search(search_string, video_type, run_as_widget=False): i = 1 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() post_data = '{"paths":[["search","%s",{"from":0,"to":48},["summary","title"]],["search","%s",["id","length",' \ '"name","trackIds","requestId"]]],"authURL":"%s"}' % (search_string, search_string, utility.get_setting('authorization_url')) content = utility.decode(connect.load_site(utility.evaluator(), post=post_data)) try: matches = json.loads(content)['value']['videos'] for k in matches: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(matches), '...') video(unicode(matches[k]['summary']['id']), '', '', False, False, video_type, '') i += 1 if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle) except Exception: utility.notification(utility.get_string(30306)) pass
def search(search_string, video_type, run_as_widget=False): i = 1 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() post_data = '{"paths":[["search","%s",{"from":0,"to":48},["summary","title"]],["search","%s",["id","length",' \ '"name","trackIds","requestId"]]],"authURL":"%s"}' % (search_string, search_string, utility.get_setting('authorization_url')) content = utility.decode( connect.load_site(utility.evaluator_url % (utility.get_setting('netflix_application'), utility.get_setting('netflix_version')), post=post_data)) try: matches = json.loads(content)['value']['videos'] for k in matches: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(matches), '...') video(unicode(matches[k]['summary']['id']), '', '', False, False, video_type, '') i += 1 if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle) except Exception: utility.notification(utility.get_string(30306)) pass
def genres(video_type): post_data = '' match = [] xbmcplugin.addSortMethod(plugin_handle, xbmcplugin.SORT_METHOD_LABEL) if not xbmcvfs.exists(utility.session_file()): login.login() if video_type == 'tv': post_data = utility.series_genre % utility.get_setting('authorization_url') elif video_type == 'movie': post_data = utility.movie_genre % utility.get_setting('authorization_url') else: pass content = utility.decode(connect.load_site(utility.evaluator(), post=post_data)) matches = json.loads(content)['value']['genres'] for item in matches: try: match.append((unicode(matches[item]['id']), matches[item]['menuName'])) except Exception: try: match.append((unicode(matches[item]['summary']['id']), matches[item]['summary']['menuName'])) except Exception: pass for genre_id, title in match: if video_type == 'tv': add.directory(title, 'genre?' + genre_id, 'list_videos', '', video_type) elif not genre_id == '83' and video_type == 'movie': add.directory(title, 'genre?' + genre_id, 'list_videos', '', video_type) xbmcplugin.endOfDirectory(plugin_handle)
def new_session(): global session session = requests.Session() session.mount('https://', HTTPSAdapter()) session.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ' 'like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' }) session.max_redirects = 5 session.allow_redirects = True if xbmcvfs.exists(utility.session_file()): file_handler = xbmcvfs.File(utility.session_file(), 'rb') content = file_handler.read() file_handler.close() session = pickle.loads(content)
def videos(url, video_type, run_as_widget=False): post_data = '' i = 1 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() if 'recently-added' in url: post_data = utility.recently_added % utility.get_setting('authorization_url') elif 'genre' in url: post_data = utility.genre % (url.split('?')[1], utility.get_setting('authorization_url')) elif 'my-list' in url: post_data = utility.my_list % utility.get_setting('authorization_url') content = utility.decode(connect.load_site(utility.evaluator(), post=post_data)) matches = json.loads(content)['value']['videos'] for video_id in matches: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(matches), matches[video_id]['title']) video(unicode(video_id), '', '', False, False, video_type, url) i += 1 if utility.get_setting('force_view') == 'true' and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def view_activity(video_type, run_as_widget=False): count = 0 video_ids = [] loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() content = utility.decode( connect.load_site(utility.main_url + '/WiViewingActivity')) series_id = re.compile('(<li .*?data-series=.*?</li>)', re.DOTALL).findall(content) for i in range(1, len(series_id), 1): entry = series_id[i] if not run_as_widget: utility.progress_window(loading_progress, (count + 1) * 100 / len(series_id), '...') match_id = re.compile('data-movieid="(.*?)"', re.DOTALL).findall(entry) if match_id: video_id = match_id[0] match = re.compile('class="col date nowrap">(.+?)<', re.DOTALL).findall(entry) date = match[0] match_title1 = re.compile('class="seriestitle">(.+?)</a>', re.DOTALL).findall(entry) match_title2 = re.compile('class="col title">.+?>(.+?)<', re.DOTALL).findall(entry) if match_title1: title = utility.unescape(match_title1[0]).replace('</span>', '') elif match_title2: title = match_title2[0] else: title = '' title = date + ' - ' + title if video_id not in video_ids: video_ids.append(video_id) # due to limitations in the netflix api, there is no way to get the series_id of an # episode, so the 4 param is set to True to treat tv episodes the same as movies. added = video(video_id, title, '', True, False, video_type, '') if added: count += 1 if count == 20: break if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_activity') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def view_activity(video_type, run_as_widget=False): count = 0 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() content = utility.decode( connect.load_site(utility.activity_url % (utility.get_setting('api_url'), utility.get_setting('authorization_url')))) matches = json.loads(content)['viewedItems'] try: for item in matches: series_id = 0 is_episode = False video_id = unicode(item['movieID']) date = item['dateStr'] try: series_id = item['series'] series_title = item['seriesTitle'] title = item['title'] title = series_title + ' ' + title except Exception: title = item['title'] if not run_as_widget: utility.progress_window(loading_progress, (count + 1) * 500 / len(matches), title) title = date + ' - ' + title if series_id > 0: is_episode = True added = video(video_id, title, '', is_episode, False, video_type, '') if added: count += 1 if count == 20: break except Exception: utility.notification(utility.get_string(30306)) pass if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_activity') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def view_activity(video_type, run_as_widget=False): count = 0 video_ids = [] loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() content = utility.decode(connect.load_site(utility.main_url + '/WiViewingActivity')) series_id = re.compile('(<li .*?data-series=.*?</li>)', re.DOTALL).findall(content) for i in range(1, len(series_id), 1): entry = series_id[i] if not run_as_widget: utility.progress_window(loading_progress, (count + 1) * 100 / len(series_id), '...') match_id = re.compile('data-movieid="(.*?)"', re.DOTALL).findall(entry) if match_id: video_id = match_id[0] match = re.compile('class="col date nowrap">(.+?)<', re.DOTALL).findall(entry) date = match[0] match_title1 = re.compile('class="seriestitle">(.+?)</a>', re.DOTALL).findall(entry) match_title2 = re.compile('class="col title">.+?>(.+?)<', re.DOTALL).findall(entry) if match_title1: title = utility.unescape(match_title1[0]).replace('</span>', '') elif match_title2: title = match_title2[0] else: title = '' title = date + ' - ' + title if video_id not in video_ids: video_ids.append(video_id) # due to limitations in the netflix api, there is no way to get the series_id of an # episode, so the 4 param is set to True to treat tv episodes the same as movies. added = video(video_id, title, '', True, False, video_type, '') if added: count += 1 if count == 20: break if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_activity') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def view_activity(video_type, run_as_widget=False): count = 0 loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() content = utility.decode(connect.load_site(utility.activity_url % ( utility.get_setting('netflix_application'), utility.get_setting('netflix_id'), utility.get_setting('authorization_url')))) matches = json.loads(content)['viewedItems'] try: for item in matches: series_id = 0 is_episode = False video_id = unicode(item['movieID']) date = item['dateStr'] try: series_id = item['series'] series_title = item['seriesTitle'] title = item['title'] title = series_title + ' ' + title except Exception: title = item['title'] if not run_as_widget: utility.progress_window(loading_progress, (count + 1) * 500 / len(matches), title) title = date + ' - ' + title if series_id > 0: is_episode = True added = video(video_id, title, '', is_episode, False, video_type, '') if added: count += 1 if count == 20: break except Exception: utility.notification(utility.get_string(30306)) pass if utility.get_setting('force_view') and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_activity') + ')') xbmcplugin.endOfDirectory(plugin_handle)
def genres(video_type): post_data = '' match = [] xbmcplugin.addSortMethod(plugin_handle, xbmcplugin.SORT_METHOD_LABEL) if not xbmcvfs.exists(utility.session_file()): login.login() if video_type == 'tv': post_data = '{"paths":[["genres",83,"subgenres",{"from":0,"to":20},"summary"],["genres",83,"subgenres",' \ '"summary"]],"authURL":"%s"}' % utility.get_setting('authorization_url') elif video_type == 'movie': post_data = '{"paths":[["genreList",{"from":0,"to":24},["id","menuName"]],["genreList"]],"authURL":"%s"}' \ % utility.get_setting('authorization_url') else: pass content = utility.decode( connect.load_site(utility.evaluator_url % (utility.get_setting('netflix_application'), utility.get_setting('netflix_version')), post=post_data)) matches = json.loads(content)['value']['genres'] for k in matches: try: match.append((unicode(matches[k]['id']), matches[k]['menuName'])) except Exception: try: match.append((unicode(matches[k]['summary']['id']), matches[k]['summary']['menuName'])) except Exception: pass for genre_id, title in match: if video_type == 'tv': add.directory( title, utility.main_url + '/browse/genre/' + genre_id + '?bc=83', 'list_videos', '', video_type) elif not genre_id == '83' and video_type == 'movie': add.directory(title, utility.main_url + '/browse/genre/' + genre_id, 'list_videos', '', video_type) xbmcplugin.endOfDirectory(plugin_handle)
def videos(url, video_type, run_as_widget=False): loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() content = utility.decode(connect.load_site(url)) if not 'id="page-LOGIN"' in content: if utility.get_setting( 'single_profile' ) == 'true' and 'id="page-ProfilesGate"' in content: profiles.force_choose() else: if '<div id="queue"' in content: content = content[content.find('<div id="queue"'):] content = utility.clean_content(content) match = None if not match: match = re.compile('"\$type":"leaf",.*?"id":([0-9]+)', re.DOTALL).findall(content) print '1: ' + str(match) if not match: match = re.compile('<a href="\/watch\/([0-9]+)', re.DOTALL).findall(content) print '2: ' + str(match) if not match: match = re.compile('<span id="dbs(.+?)_.+?alt=".+?"', re.DOTALL).findall(content) print '3: ' + str(match) if not match: match = re.compile('<span class="title.*?"><a id="b(.+?)_', re.DOTALL).findall(content) print '4: ' + str(match) if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content) print '5: ' + str(match) if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content) print '6: ' + str(match) print len(match) i = 1 for video_id in match: if int(video_id) > 10000000: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(match), '...') video(video_id, '', '', False, False, video_type, url) i += 1 match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url) match2 = re.compile('&from=(.+?)&', re.DOTALL).findall(url) match_api_root = re.compile('"API_ROOT":"(.+?)"', re.DOTALL).findall(content) match_api_base = re.compile('"API_BASE_URL":"(.+?)"', re.DOTALL).findall(content) match_identifier = re.compile('"BUILD_IDENTIFIER":"(.+?)"', re.DOTALL).findall(content) if 'agid=' in url and match_api_root and match_api_base and match_identifier: genre_id = url[url.find('agid=') + 5:] add.directory( utility.get_string(30110), match_api_root[0] + match_api_base[0] + '/' + match_identifier[0] + '/wigenre?genreId=' + genre_id + '&full=false&from=51&to=100&_retry=0', 'list_videos', '', video_type) elif match1: current_page = match1[0] next_page = str(int(current_page) + 1) add.directory( utility.get_string(30110), url.replace('&pn=' + current_page + '&', '&pn=' + next_page + '&'), 'list_videos', '', video_type) elif match2: current_from = match2[0] next_from = str(int(current_from) + 50) current_to = str(int(current_from) + 49) next_to = str(int(current_from) + 99) add.directory( utility.get_string(30110), url.replace('&from=' + current_from + '&', '&from=' + next_from + '&').replace( '&to=' + current_to + '&', '&to=' + next_to + '&'), 'list_videos', '', video_type) if utility.get_setting( 'force_view') == 'true' and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle) else: delete.cookies() utility.log('User is not logged in.', loglevel=xbmc.LOGERROR) utility.notification(utility.get_string(30303))
def videos(url, video_type, run_as_widget=False): loading_progress = None if not run_as_widget: loading_progress = xbmcgui.DialogProgress() loading_progress.create('Netflix', utility.get_string(30205) + '...') utility.progress_window(loading_progress, 0, '...') xbmcplugin.setContent(plugin_handle, 'movies') if not xbmcvfs.exists(utility.session_file()): login.login() ''' the next part is necessary during the changing phase. Otherwise data are not available. ''' if 'recently-added' in url: postdata = utility.recently_added % utility.get_setting('authorization_url') content = utility.decode(connect.load_site(utility.evaluator(), post=postdata)) else: content = utility.decode(connect.load_site(url)) if not 'id="page-LOGIN"' in content or url == 'recently-added': if utility.get_setting('single_profile') == 'true' and 'id="page-ProfilesGate"' in content: profiles.force_choose() else: if '<div id="queue"' in content: content = content[content.find('<div id="queue"'):] if not 'recently-added' in url: content = utility.clean_content(content) match = None if not match: match = re.compile('"\$type":"leaf",.*?"id":([0-9]+)', re.DOTALL).findall(content) print '1: ' + str(match) if not match: match = re.compile('<a href="\/watch\/([0-9]+)', re.DOTALL).findall(content) print '2: ' + str(match) if not match: match = re.compile('<span id="dbs(.+?)_.+?alt=".+?"', re.DOTALL).findall(content) print '3: ' + str(match) if not match: match = re.compile('<span class="title.*?"><a id="b(.+?)_', re.DOTALL).findall(content) print '4: ' + str(match) if not match: match = re.compile('"boxart":".+?","titleId":(.+?),', re.DOTALL).findall(content) print '5: ' + str(match) if not match: match = re.compile('WiPlayer\?movieid=([0-9]+?)&', re.DOTALL).findall(content) print '6: ' + str(match) if 'recently-added' in url: matches = json.loads(content)['value']['videos'] for video_id in matches: match.append(unicode(video_id)) print '7: ' + str(match) print len(match) i = 1 for video_id in match: if int(video_id) > 10000000 or 'recently-added' in url: if not run_as_widget: utility.progress_window(loading_progress, i * 100 / len(match), '...') video(video_id, '', '', False, False, video_type, url) i += 1 match1 = re.compile('&pn=(.+?)&', re.DOTALL).findall(url) match2 = re.compile('&from=(.+?)&', re.DOTALL).findall(url) match_api_root = re.compile('"API_ROOT":"(.+?)"', re.DOTALL).findall(content) match_api_base = re.compile('"API_BASE_URL":"(.+?)"', re.DOTALL).findall(content) match_identifier = re.compile('"BUILD_IDENTIFIER":"(.+?)"', re.DOTALL).findall(content) if 'agid=' in url and match_api_root and match_api_base and match_identifier: genre_id = url[url.find('agid=') + 5:] add.directory(utility.get_string(30110), match_api_root[0] + match_api_base[0] + '/' + match_identifier[ 0] + '/wigenre?genreId=' + genre_id + '&full=false&from=51&to=100&_retry=0', 'list_videos', '', video_type) elif match1: current_page = match1[0] next_page = str(int(current_page) + 1) add.directory(utility.get_string(30110), url.replace('&pn=' + current_page + '&', '&pn=' + next_page + '&'), 'list_videos', '', video_type) elif match2: current_from = match2[0] next_from = str(int(current_from) + 50) current_to = str(int(current_from) + 49) next_to = str(int(current_from) + 99) add.directory(utility.get_string(30110), url.replace('&from=' + current_from + '&', '&from=' + next_from + '&').replace( '&to=' + current_to + '&', '&to=' + next_to + '&'), 'list_videos', '', video_type) if utility.get_setting('force_view') == 'true' and not run_as_widget: xbmc.executebuiltin('Container.SetViewMode(' + utility.get_setting('view_id_videos') + ')') xbmcplugin.endOfDirectory(plugin_handle) else: delete.cookies() utility.log('User is not logged in.', loglevel=xbmc.LOGERROR) utility.notification(utility.get_string(30303))