def video_info(video_id): content = '' cache_file = xbmc.translatePath(utility.cache_dir() + video_id + '.cache') if xbmcvfs.exists(cache_file): file_handler = xbmcvfs.File(cache_file, 'rb') content = file_handler.read() file_handler.close() if not content: content = connect.load_site(utility.main_url + '/JSON/BOB?movieid=' + video_id) file_handler = xbmcvfs.File(cache_file, 'wb') file_handler.write(content) file_handler.close() return utility.clean_content(utility.decode(content))
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))