def uninstall_custom_site(): sites = select_custom_sites_attributes(None, 'author', 'name', 'title') if not sites: utils.notify('No custom sites installed') return sites = { '{} by {}'.format(title, author): [author, name, title] for author, name, title in sites } chosen = utils.selector("Select site to uninstall", sites, show_on_one=True) if not chosen: return author, name, title = chosen delete_custom_site(author, name) xbmc.executebuiltin('Container.Refresh') utils.notify("{}".format(title), "Site uninstalled")
def hanime_play(url, name, download=None): url = 'https://hanime.tv/rapi/v7/videos_manifests/{0}'.format(url) listhtml = utils.getHtml(url, headers=hanime_headers) streams = json.loads(listhtml)['videos_manifest']['servers'][0]['streams'] sources = { stream.get('height'): stream.get('url') for stream in streams if stream.get('url') } if sources: vp = utils.VideoPlayer(name, download=download) videourl = utils.selector('Select quality', sources, setting_valid='qualityask', sort_by=lambda x: int(x), reverse=True) if videourl: videourl = videourl + '|User-Agent:' + ua vp.play_from_direct_link(videourl)
def move_listitem(listitem_id): custom_lists = get_custom_lists() custom_lists = {row[1]: str(row[0]) for row in custom_lists} custom_lists['Main menu'] = 'main' selected_id = utils.selector('Move this item to', custom_lists, sort_by=lambda x: x[1], show_on_one=True) if selected_id: conn = sqlite3.connect(favoritesdb) c = conn.cursor() c.execute("UPDATE custom_listitems set list_id = ? WHERE rowid = ?", ( selected_id, listitem_id, )) conn.commit() conn.close() xbmc.executebuiltin('Container.Refresh')
def Lists(url): lists = {} lists['HD P**n 1080p Videos - Recent'] = siteurl + '/category/hd-1080p/' lists[ 'HD P**n 1080p Videos - Top Rated'] = siteurl + '/category/hd-1080p/SORT-top-rated/' lists[ 'HD P**n 1080p Videos - Longest'] = siteurl + '/category/hd-1080p/SORT-longest/' lists['60 FPS P**n Videos - Recent'] = siteurl + '/category/60fps/' lists[ '60 FPS P**n Videos - Top Rated'] = siteurl + '/category/60fps/SORT-top-rated/' lists[ '60 FPS P**n Videos - Longest'] = siteurl + '/category/60fps/SORT-longest/' lists['Popular P**n Videos'] = siteurl + '/popular-videos/' lists['Best HD P**n Videos'] = siteurl + '/top-rated/' lists['Currently Watched P**n Videos'] = siteurl + '/currently/' lists['4K P**n Ultra HD - Recent'] = siteurl + '/category/4k-p**n/' lists[ '4K P**n Ultra HD - Top Rated'] = siteurl + '/category/4k-p**n/SORT-top-rated/' lists[ '4K P**n Ultra HD - Longest'] = siteurl + '/category/4k-p**n/SORT-longest/' lists['HD Sex P**n Videos - Recent'] = siteurl + '/category/hd-sex/' lists[ 'HD Sex P**n Videos - Top Rated'] = siteurl + '/category/hd-sex/SORT-top-rated/' lists[ 'HD Sex P**n Videos - Longest'] = siteurl + '/category/hd-sex/SORT-longest/' lists['Amateur P**n Videos - Recent'] = siteurl + '/category/amateur/' lists[ 'Amateur P**n Videos - Top Rated'] = siteurl + '/category/amateur/SORT-top-rated/' lists[ 'Amateur P**n Videos - Longest'] = siteurl + '/category/amateur/SORT-longest/' lists['Solo Girls P**n Videos - Recent'] = siteurl + '/category/solo/' lists[ 'Solo Girls P**n Videos - Top Rated'] = siteurl + '/category/solo/top-rated/' lists[ 'Solo Girls P**n Videos - Longest'] = siteurl + '/category/solo/longest/' lists['VR P**n Videos - Recent'] = siteurl + '/category/vr-p**n/' lists[ 'VR P**n Videos - Top Rated'] = siteurl + '/category/vr-p**n/SORT-top-rated/' lists[ 'VR P**n Videos - Longest'] = siteurl + '/category/vr-p**n/SORT-longest/' url = utils.selector('Select', lists) if not url: return List(url)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") phtml = utils.getHtml(url, site.url) phtml = re.compile('(<main.+?main>)').findall(phtml)[0] sources = re.compile( r'href=([^\s]+)\s*(?:target=_blank rel="nofollow noopener noreferrer")?\s*class="external' ).findall(phtml) links = {} for link in sources: if 'adshrink' in link: link = 'http' + link.split('http')[-1] if vp.resolveurl.HostedMediaFile(link).valid_url(): links[link.split('/')[2]] = link videourl = utils.selector('Select link', links) if not videourl: vp.progress.close() return vp.play_from_link_to_resolve(videourl)
def PTPlayvid(url, name, download=None): progress.create('Play video', 'Searching for videofile.') progress.update(25, "", "Loading video page", "") videopage = utils.getHtml(url, '') sources = {} try: sources['2160p 4k'] = re.compile("video_alt_url5: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass try: sources['1440p'] = re.compile("video_alt_url4: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass try: sources['1080p'] = re.compile("video_alt_url3: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass try: sources['720p'] = re.compile("video_alt_url2: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass try: sources['480p'] = re.compile("video_alt_url: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass try: sources['360p'] = re.compile("video_url: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage)[0] except IndexError: pass videourl = utils.selector('Select quality', sources, dont_ask_valid=True, sort_by=lambda x: int(''.join([y for y in x if y.isdigit()])), reverse=True) if not videourl: progress.close() return utils.kodilog(videourl) progress.update(75, "", "Video found", "") progress.close() if download == 1: utils.downloadVideo(videourl, name) else: iconimage = xbmc.getInfoImage("ListItem.Thumb") listitem = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage) listitem.setInfo('video', {'Title': name, 'Genre': 'P**n'}) xbmc.Player().play(videourl, listitem)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") videopage = utils.getHtml(url, site.url) player = re.compile(r'<iframe.+?class=""\s*src="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage) if player: playerpage = utils.getHtml(player[0], url) else: vp.progress.close() return links = re.compile(r'"src":\s*"([^"]+)".+?"label":\s*"([^"]+)"', re.DOTALL | re.IGNORECASE).findall(playerpage) links = {x[1].replace('4K', '2160p').replace('UHD', '2160p'): x[0] for x in links} videourl = utils.selector('Choose your video', links, setting_valid='qualityask', sort_by=lambda x: int(x[:-1]), reverse=True) if not videourl: vp.progress.close() return videourl = videourl.replace("\\", "") videourl = utils.getVideoLink(videourl, url) vp.play_from_direct_link(videourl)
def getFly(url): videopage = utils.getHtml(url, '') # videos = re.compile('fileUrl="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage) videos = re.compile(r"<source src='([^']+)'.*?label='([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage) list = {} for video_link, quality in videos: quality = quality.replace('4K', '2160p') list[quality] = video_link videourl = utils.selector('Select quality', list, dont_ask_valid=True, sort_by=lambda x: int(re.findall(r'\d+', x)[0]), reverse=True) if not videourl: return if videourl.startswith('//'): videourl = 'https:' + videourl return videourl
def Playvid(url, name, download=None): videopage = utils.getHtml(url, '') videos = re.compile('"videos": {(.+?)"preview"', re.DOTALL | re.IGNORECASE).findall(videopage) videos1 = re.compile( '"([^"]+)":.+?"type": "video".+?"url": "([^"]+)",.+?"default":.+?', re.DOTALL | re.IGNORECASE).findall(videos[0]) list = {} for quality, video_link in videos1: quality = quality + 'p' list[quality] = video_link videourl = utils.selector('Select quality', list, dont_ask_valid=True, sort_by=lambda x: int(re.findall(r'\d+', x)[0]), reverse=True) if not videourl: return utils.playvid(videourl, name, download)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") phtml = utils.getHtml(url, site.url) sources = re.compile(r'class="box\s.+?href="([^"]+)', re.DOTALL | re.IGNORECASE).findall(phtml) if not sources and utils.addon.getSetting("universal_resolvers") == "true": sources = re.compile( r'class="ocult".+?Enlaces"[^>]+>(?:<b>)?(.*?)(?:...)?<', re.DOTALL | re.IGNORECASE).findall(phtml) links = {} for link in sources: if vp.resolveurl.HostedMediaFile(link).valid_url(): links[link.split('/')[2]] = link videourl = utils.selector('Select link', links) if not videourl: vp.progress.close() return vp.play_from_link_to_resolve(videourl)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download, '', 'Download:.+?href="([^"]+)"') videopage = utils.getHtml(url, '') match = re.compile(r'Download:(.+?)<\/div>', re.DOTALL | re.IGNORECASE).findall(videopage) srcs = re.compile('href="([^"]+)".+?>([^<]+)<', re.DOTALL | re.IGNORECASE).findall(match[0]) sources = {} for videourl, quality in srcs: if videourl: sources[quality] = videourl videourl = utils.selector('Select quality', sources, setting_valid='qualityask', sort_by=lambda x: int(x.split('x')[0]), reverse=True) if videourl: vp.play_from_direct_link(videourl)
def getBMW(url): videopage = utils.getHtml(url, '') #redirecturl = utils.getVideoLink(url, '') #videodomain = re.compile("http://([^/]+)/", re.DOTALL | re.IGNORECASE).findall(redirecturl)[0] videos = re.compile(r"<a href='([^']+)' style='color:#ddd'>(.+?)</a>", re.DOTALL | re.IGNORECASE).findall(videopage) list = {} for video_link, quality in videos: quality = quality.replace('4K', '2160p') list[quality] = video_link videourl = utils.selector('Select quality', list, dont_ask_valid=True, sort_by=lambda x: int(re.findall(r'\d+', x)[0]), reverse=True) if not videourl: return if videourl.startswith('//'): videourl = 'https:' + videourl return videourl
def Playvid(url, name, download=None): links = {} vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") videopage = utils.getHtml(url) iframes = re.compile(r'<iframe.+?src="([^"]+)"[^>]+>.*?</iframe', re.DOTALL | re.IGNORECASE).findall(videopage) if iframes: for link in iframes: if vp.resolveurl.HostedMediaFile(link).valid_url(): links[link.split('/')[2]] = link srcs = re.compile(r'label="([^"]+)"\s*src="([^"]+)" type=', re.DOTALL | re.IGNORECASE).findall(videopage) if srcs: for quality, videourl in srcs: links['Direct ' + quality] = videourl.replace(' ', '%20') + '|Referer=%s&User-Agent=%s&verifypeer=false' % (url, utils.USER_AGENT) videourl = utils.selector('Select link', links) if '|Referer' in videourl: vp.play_from_direct_link(videourl) else: vp.play_from_link_to_resolve(videourl)
def Playvid(url, name, download=None): links = {} vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") videopage = utils.getHtml(url) videopage = videopage.split('>Watch Online')[-1] srcs = re.compile(r'<a title="([^"]+)" href="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage) for title, src in srcs: title = utils.cleantext(title) title = title.split(' on ')[-1] if 'mangovideo' in src: html = utils.getHtml(src, url) if '=' in src: src = src.split('=')[-1] murl = re.compile(r"video_url:\s*'([^']+)'", re.DOTALL | re.IGNORECASE).findall(html) if murl: if murl[0].startswith('function/'): license = re.findall(r"license_code:\s*'([^']+)", html)[0] murl = kvs_decode(murl[0], license) else: murl = re.compile(r'action=[^=]+=([^\?]+)/\?download', re.DOTALL | re.IGNORECASE).findall(html) if murl: murl = murl[0] if murl: links[title] = murl elif vp.resolveurl.HostedMediaFile(src).valid_url(): links[title] = src videourl = utils.selector('Select server', links, setting_valid=False) if not videourl: vp.progress.close() return vp.progress.update(90, "[CR]Loading video page[CR]") if 'mango' in videourl: vp.play_from_direct_link(videourl) else: vp.play_from_link_to_resolve(videourl)
def SelectCat(url): cats = {} cats['Categories - Recent'] = siteurl + '/categories/' cats['Categories - Most Popular'] = siteurl + '/categories/?order=popular' cats['Categories - No. of Videos'] = siteurl + '/categories/?order=videos' cats['Categories - Featured'] = siteurl + '/categories/?order=featured' cats['Categories - Alphabetical'] = siteurl + '/categories/?order=alphabetical' cats['Playlists - Recent'] = siteurl + '/playlists/recent/' cats['Playlists - Most Viewed'] = siteurl + '/playlists/' cats['Playlists - Top Rated'] = siteurl + '/playlists/rated/' cats['Playlists - Most Favorited'] = siteurl + '/playlists/favorited/' cats['Models - Recent'] = siteurl + '/models/recent/' cats['Models - Most Viewed'] = siteurl + '/models/viewed/' cats['Models - Most Popular'] = siteurl + '/models/' cats['Models - Alphabetical'] = siteurl + '/models/alphabetical/' cats['Models - Most Subscribed'] = siteurl + '/models/subscribed/' cats['Models - No. of Videos'] = siteurl + '/models/videos/' url = utils.selector('Select', cats) if not url: return Cat(url)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) response = utils.getHtml(url, hdr=xhamster_headers) # match = get_xhamster_link(response) vp.progress.update(25, "", "Loading video page", "") match = re.compile('"sources":{"mp4":{([^}]+)},', re.DOTALL | re.IGNORECASE).findall(response) match0 = re.compile('"([^"]+)":"([^"]+)"', re.DOTALL | re.IGNORECASE).findall(match[0]) links = {} for quality, video_link in match0: links[quality] = video_link selected = utils.selector('Select quality', links, dont_ask_valid=True, sort_by=lambda x: int(x[:-1]), reverse=True) if not selected: return selected = selected.replace('\\/', '\\') + '|Referer=' + url vp.play_from_direct_link(selected)
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "", "Loading video page", "") videopage = utils.getHtml(url, pdreferer, headers, data='') links = re.compile( '<a href="([^"]+)" class="post_download_link clearfix">[^>]+>([^<]+)<', re.DOTALL | re.IGNORECASE).findall(videopage) sources = {} for videolink, resolution in links: sources[utils.cleantext(resolution)] = videolink videourl = utils.selector('Select quality', sources, dont_ask_valid=True, sort_by=lambda x: 1081 if 'UHD' in x else int(x[:-3]), reverse=True) if not videourl: return videourl = utils.getVideoLink(videourl, url) vp.progress.update(75, "", "Loading video page", "") vp.play_from_direct_link(videourl)
def hentaidude_eps(url): listhtml = utils.getHtml(url, site.url) if 'More Episodes From This Series:' in listhtml: episodes = re.findall( r"""href='([^']+)'\s*class="dudep".*?<p>([^<]+)""", listhtml, re.DOTALL | re.IGNORECASE) if episodes: eps = {} for url, episode in episodes: episode = episode.strip() eps[episode] = url selected_episode = utils.selector('Choose episode', eps, show_on_one=True) if not selected_episode: return hentaidude_play( selected_episode, list(eps.keys())[list(eps.values()).index(selected_episode)]) else: utils.notify('Notify', 'No other episodes found')
def disable_custom_site(): conn = sqlite3.connect(favoritesdb) conn.text_factory = str c = conn.cursor() c.execute("SELECT author, name, title FROM custom_sites WHERE enabled = 1") rows = c.fetchall() conn.close() if not rows: utils.notify('No enabled custom sites found') return sites = {'{} by {}'.format(title, author): [author, name, title] for author, name, title in rows} chosen = utils.selector("Select site to enable", sites, show_on_one=True) author, name, title = chosen conn = sqlite3.connect(favoritesdb) conn.text_factory = str c = conn.cursor() c.execute("UPDATE custom_sites SET enabled = 0 WHERE author = ? and name = ?", (author, name)) conn.commit() conn.close() xbmc.executebuiltin('Container.Refresh') utils.notify("{}".format(title), "Site disabled")
def Playvid(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "", "Loading video page", "") videohtml = utils.getHtml(url, '') stream_key = re.compile('data-streamkey="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videohtml)[0] url = 'https://spankbang.com/api/videos/stream' form_data = { 'id': stream_key, 'data': 0 } #, 'sb_csrf_session': sb_csrf_session } headers = { 'Referer': 'https://spankbang.com/', # 'X-CSRFToken': sb_csrf_session, } resp = utils.postHtml(url, form_data=form_data, headers=headers, compression=False, NoCookie=None) sources = {} srcs = re.compile('"stream_url_(240p|320p|480p|720p|1080p|4k)":\["([^"]+)"\]', re.DOTALL | re.IGNORECASE).findall(resp) for quality, videourl in srcs: if videourl: sources[quality] = videourl videourl = utils.selector('Select quality', sources, dont_ask_valid=True, sort_by=lambda x: 1081 if x == '4k' else int(x[:-1]), reverse=True) if not videourl: return vp.play_from_direct_link(videourl)
def animeidhentai_play(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "", "Loading video page", "") html = utils.getHtml(url) video_url = re.compile('data-lazy-src="([^"]+ksplayer[^"]+)"></iframe>', re.DOTALL | re.IGNORECASE).findall(html) video_url = video_url[0].replace('embed', 'download') videopage = utils.getHtml(video_url, url) match = re.compile( '''href=["']?(?P<url>[^"']+)["']?>DOWNLOAD <span>(?P<label>[^<]+)''', re.DOTALL | re.IGNORECASE).findall(videopage) vp.progress.update(50, "", "Loading video page", "") list = {} for video_link, quality in match: list[quality] = video_link selected = utils.selector('Select quality', list, dont_ask_valid=True, sort_by=lambda x: int(x[:-1]), reverse=True) if not selected: return vp.play_from_direct_link(selected)
def XTVideo(url, name, download=None): vp = utils.VideoPlayer(name, download) vp.progress.update(25, "", "Loading video page", "") html = utils.getHtml(url, url) if 'strdef.world' in html: links = vp._check_suburls(html, url) select = {} for i, link in enumerate(links, start = 1): if 'strdef.world' in link: req = urllib2.Request(link,'',utils.headers) req.add_header('Referer', url) response = urllib2.urlopen(req, timeout=30) link = response.geturl() index = 'Player ' + str(i) + ' - ' + link.rsplit('/', 1)[-1] select[index] = link videourl = utils.selector('Select video:', select, dont_ask_valid=False) if not videourl: return videourl = videourl.replace('woof.tube','verystream.com') vp.play_from_link_to_resolve(videourl) else: vp.play_from_html(html)
def Lists(url): lists = {} lists['Videos - Recent'] = siteurl + '/videos/' lists['Videos - Most Popular'] = siteurl + '/videos/popular/' lists['Videos - Most Viewed'] = siteurl + '/videos/viewed/' lists['Videos - Top Rated'] = siteurl + '/videos/rated/' lists['Videos - Most Favorited'] = siteurl + '/videos/favorited/' lists['Chinese - China'] = siteurl + '/videos/china/' lists['Chinese - Singapore'] = siteurl + '/videos/singapore/' lists['Chinese - Malaysia'] = siteurl + '/videos/malaysia/' lists['Chinese - Taiwan'] = siteurl + '/videos/taiwan/' lists['Chinese - Hong Kong'] = siteurl + '/videos/hong-kong/' lists['Korean - Korean'] = siteurl + '/videos/korean/' lists['Korean - Korean P**n'] = siteurl + '/videos/korean-p**n/' lists['Korean - Korean BJ'] = siteurl + '/videos/korean-bj/' lists['Korean - Korean BJ Couple'] = siteurl + '/videos/korean-bj-couple/' lists[ 'Korean - Korean BJ Lesbian'] = siteurl + '/videos/korean-bj-lesbian/' lists[ 'Korean - Korean BJ Uncensored'] = siteurl + '/videos/korean-bj-uncensored/' lists['Japanese - Japanese'] = siteurl + '/videos/japanese/' lists['Japanese - JAV Censored'] = siteurl + '/videos/jav-censored/' lists['Japanese - JAV Uncensored'] = siteurl + '/videos/jav-uncensored/' lists['Japanese - JAV Amateur'] = siteurl + '/videos/jav-amateur/' lists['Western'] = siteurl + '/videos/western/' lists['Movies - Recent'] = siteurl + '/videos/p**n-movies/' lists['Movies - Top Rated'] = siteurl + '/videos/p**n-movies/rated/' lists['Movies - Longest'] = siteurl + '/videos/p**n-movies/longest/' lists['Professional - Recent'] = siteurl + '/videos/professional/' lists['Professional - Top Rated'] = siteurl + '/videos/professional/rated/' lists['Professional - Longest'] = siteurl + '/videos/professional/longest/' lists['Homemade - Recent'] = siteurl + '/videos/homemade/' lists['Homemade - Top Rated'] = siteurl + '/videos/homemade/rated/' lists['Homemade - Longest'] = siteurl + '/videos/homemade/longest/' url = utils.selector('Select', lists) if not url: return List(url)
def Play(url, name, download=None): siteurl = getBaselink(url) vp = utils.VideoPlayer(name, download) vp.progress.update(25, "[CR]Loading video page[CR]") vpage = utils.getHtml(url, siteurl) sources = {} license = re.compile(r"license_code:\s*'([^']+)", re.DOTALL | re.IGNORECASE).findall(vpage)[0] patterns = [r"video_url:\s*'([^']+)[^;]+?video_url_text:\s*'([^']+)", r"video_alt_url:\s*'([^']+)[^;]+?video_alt_url_text:\s*'([^']+)", r"video_alt_url2:\s*'([^']+)[^;]+?video_alt_url2_text:\s*'([^']+)", r"video_url:\s*'([^']+)',\s*postfix:\s*'\.mp4',\s*(preview)"] for pattern in patterns: items = re.compile(pattern, re.DOTALL | re.IGNORECASE).findall(vpage) for surl, qual in items: qual = '00' if qual == 'preview' else qual surl = kvs_decode(surl, license) sources.update({qual: surl}) videourl = utils.selector('Select quality', sources, setting_valid='qualityask', sort_by=lambda x: 1081 if x == '4k' else int(x[:-1]), reverse=True) if not videourl: vp.progress.close() return vp.play_from_direct_link(videourl)
def PTPlayvid(url, name, download=None): vp = utils.VideoPlayer(name, download=download) vp.progress.update(25, "", "Loading video page", "") hdr = dict(utils.headers) hdr['Cookie'] = 'PHPSESSID=' + utils.addon.getSetting('session') + '; kt_member=' + utils.addon.getSetting('kt_member') videopage = utils.getHtml(url, hdr=hdr) if 'video is a private video' in videopage: utils.notify('PRIVATE VIDEO','Add an account in settings to watch private videos!') return if 'video_url_text' not in videopage: videourl = re.compile("video_url: '([^']+)'", re.DOTALL | re.IGNORECASE).search(videopage).group(1) else: sources = {} srcs = re.compile("video(?:_alt_|_)url(?:[0-9]|): '([^']+)'.*?video(?:_alt_|_)url(?:[0-9]|)_text: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage) for src, quality in srcs: sources[quality] = src videourl = utils.selector('Select quality', sources, dont_ask_valid=True, sort_by=lambda x: int(''.join([y for y in x if y.isdigit()])), reverse=True) if not videourl: return vp.direct_regex = '(' + re.escape(videourl) + ')' vp.play_from_html(videopage)
def getHQWO(url): videopage1 = utils.getHtml(url, '') videos1 = re.compile( "<script type='text/javascript' src='([^']+)'></script>", re.DOTALL | re.IGNORECASE).findall(videopage1) url = videos1[-1] videopage2 = utils.getHtml(url, '') videos = re.compile('"file": "([^"]+)".*?"label": "([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage2) list = {} for video_link, quality in videos: quality = quality.replace('4K', '2160p') list[quality] = video_link videourl = utils.selector('Select quality', list, dont_ask_valid=True, sort_by=lambda x: int(re.findall(r'\d+', x)[0]), reverse=True) if not videourl: return if videourl.startswith('//'): videourl = 'https:' + videourl return videourl
def LiveCategories(url): try: cathtml = utils.getHtml(url, '') except Exception as e: utils.notify('Categories', e.message) return cJson = json.loads(cathtml) cat = [ item for item in cJson if ('status' not in item and 'requestkey' not in item) ] selectedCat = utils.selector('Select server', cat) #xbmcgui.Dialog().textviewer(url, str(selectedCat)) for item in cJson[selectedCat]: catId = str(item['CategoryId']) catName = item['Name'] catLive = str(item['LiveCount']) utils.addDir( catName + ' [COLOR hotpink]' + catLive + '[/COLOR]', 'http://api.naiadsystems.com/search/v1/list?categoryid=' + catId, 581, '', '') xbmcplugin.endOfDirectory(utils.addon_handle)
def PPlayvid(url, name, download=None): utils.kodilog(url) vp = utils.VideoPlayer(name, download) vp.progress.update(25, "", "Loading video page", "") videopage = utils.getHtml(url) if 'porn00' in url: alternatives = re.compile('div id="alternatives".+?href="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videopage) for alternative in alternatives: videopage += utils.getHtml(alternative) links = {} videolinks = re.compile('iframe.+?src="([^"]+)" width', re.DOTALL | re.IGNORECASE).findall(videopage) for link in videolinks: if vp.resolveurl.HostedMediaFile( link) and 'www.porn00.org' not in link: links[link.split('/')[2]] = link if 'www.porn00.org/player/' in link: html = utils.getHtml(link) srcs = re.compile('''<source src='([^']+)' title="([^"]+)"''', re.DOTALL | re.IGNORECASE).findall(html) for (vlink, title) in srcs: links['direct ' + title] = vlink + '|Referer=' + link videourl = utils.selector('Select link', links, dont_ask_valid=False, reverse=True) vp.progress.update(75, "", "Loading video page", "") if '|Referer' in videourl: vp.play_from_direct_link(videourl) else: vp.play_from_link_to_resolve(videourl) if 'pornaq' in url: videourl = re.compile("<source src='([^']+)' title", re.DOTALL | re.IGNORECASE).findall(videopage)[0] utils.kodilog(videourl) vp.play_from_direct_link(videourl + '|Referer=' + url)
def Play(url, name, download=None): vp = utils.VideoPlayer(name, download=download) vp.progress.update(25, "[CR]Loading video page[CR]") videohtml = utils.getHtml(url) match = re.compile(r'data-localize="([^"]+)".+?">([^<]+)<', re.DOTALL | re.IGNORECASE).findall(videohtml) streams = {} if match: for m in match: (data, stream) = m streams[stream] = data else: return vp.progress.update(50, "[CR]Loading video page[CR]") streamdata = utils.selector('Select', streams) if not streamdata: return match = re.compile(r'var ' + streamdata + r'.+?"iframe_url":"([^"]+)"', re.DOTALL | re.IGNORECASE).findall(videohtml) if match: link = base64.b64decode(match[0]).decode('utf-8') else: return vp.progress.update(75, "[CR]Loading video page[CR]") streamhtml = utils.getHtml(link, url, error='raise') match = re.compile(r'''var OLID = '([^']+)'.+?src="([^']+)''', re.DOTALL | re.IGNORECASE).findall(streamhtml) if match: (olid, vurl) = match[0] olid = olid[::-1] else: return src = vurl + olid src = utils.getVideoLink(src, link) vp.play_from_link_to_resolve(src)
def hanime_eps(url): url = 'https://hw.hanime.tv/api/v8/video?id=' + url try: listhtml = utils.getHtml(url, headers=hanime_headers) except Exception as e: utils.notify('Notify', e) return None try: eps = {} episodes = json.loads(listhtml)['hentai_franchise_hentai_videos'] for episode in episodes: name = episode['name'] if episode['is_censored'] is False: name = name + " [COLOR hotpink][I]Uncensored[/I][/COLOR]" eps[name] = episode['slug'] selected_episode = utils.selector('Choose episode', eps, show_on_one=True) if not selected_episode: return hanime_play(selected_episode, [x for x, y in eps.items() if y is selected_episode][0]) except: utils.notify('Notify', 'No other episodes found')
def PTPlayvid(url, name, download=None): progress.create('Play video', 'Searching for videofile.') progress.update(25, "", "Loading video page", "") videopage = utils.getHtml(url, '') if 'video_url_text' not in videopage: videourl = re.compile("video_url: '([^']+)'", re.DOTALL | re.IGNORECASE).search(videopage).group(1) else: sources = {} srcs = re.compile("video(?:_alt_|_)url(?:[0-9]|): '([^']+)'.*?video(?:_alt_|_)url(?:[0-9]|)_text: '([^']+)'", re.DOTALL | re.IGNORECASE).findall(videopage) for src, quality in srcs: sources[quality] = src videourl = utils.selector('Select quality', sources, dont_ask_valid=True, sort_by=lambda x: int(''.join([y for y in x if y.isdigit()])), reverse=True) if not videourl: progress.close() return progress.update(75, "", "Video found", "") progress.close() if download == 1: utils.downloadVideo(videourl, name) else: iconimage = xbmc.getInfoImage("ListItem.Thumb") listitem = xbmcgui.ListItem(name, iconImage="DefaultVideo.png", thumbnailImage=iconimage) listitem.setInfo('video', {'Title': name, 'Genre': 'P**n'}) xbmc.Player().play(videourl, listitem)