def router(url): try: add_plugin_dirs( [control.join(control.addonPath, 'resources', 'lib', 'resolvers')]) forced_host = control.setting('force_host') rr = relevant_resolvers() domains = [r.domains for r in rr][1:] domain_list = [d for dm in domains for d in dm] if forced_host in domain_list: stream = HostedMediaFile(media_id=url, host=forced_host).resolve() return stream elif HostedMediaFile(url).valid_url(): stream = resolve(url) return stream else: return url except ResolverError: return url
def _(): (path, serverlist, titlelist, title) = request.parse(plugin.path, 'ServerListParser') position = Dialog().select(_addon.getLocalizedString(33500), titlelist) item = ListItem(title) url = False if position != -1: xbmc.executebuiltin('ActivateWindow(busydialognocancel)') resolveurl.add_plugin_dirs(_plugins) try: url = resolveurl.resolve(serverlist[position]) if url: edb.connect() edb.add(path) edb.close() item.setPath(url) subtitle = request.subtitle(serverlist[position]) if subtitle: item.setSubtitles([subtitle]) else: Dialog().notification(_addon.getLocalizedString(33502), '') except: Dialog().notification(_addon.getLocalizedString(33501), '') xbmc.executebuiltin('Dialog.Close(busydialognocancel)') else: xbmc.executebuiltin('Playlist.Clear') xbmc.sleep(500) xbmcplugin.setResolvedUrl(plugin.handle, isinstance(url, str), item)
def get_resolved(url): import xbmcvfs resolved = daddyFind(url) if resolved: return resolved else: logga("NO RESOLVER DADDY") resolved = wizhdFind(url) if resolved: return resolved else: logga("NO RESOLVER WIZHD") resolved = assiaFind(url) if resolved: return resolved else: logga("NO RESOLVER ASSIA") resolved = GetLSProData(url) if resolved: return resolved else: logga("NO RESOLVER DATA") try: import resolveurl except: dialog = xbmcgui.Dialog() mess = "Lo script 'script.module.resolveurl' non risulta installato." dialog.ok("Mandrakodi", mess) return url logga("TRY TO RESOLVE: " + url) xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): logging.warning("OK XXX RESOLVER ") if sys.version_info[0] > 2: xxxp = xbmcvfs.translatePath(xxx_plugins_path) else: import xbmc xxxp = xbmc.translatePath(xxx_plugins_path) resolveurl.add_plugin_dirs(xxxp) try: resolved = resolveurl.resolve(url) if resolved: logga("OK RESOLVER: " + resolved) return resolved except Exception as e: logga("NO RESOLVER") return url
def resolveMyUrl(url): import resolveurl, xbmcvfs xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): resolveurl.add_plugin_dirs(xbmc.translatePath(xxx_plugins_path)) try: resolved = resolveurl.resolve(url) except: pass if resolved: logging.error("MANDRA URL_SOLVED: " + resolved) return resolved else: return url
def play_episode(): response = request(plugin.path) document = BeautifulSoup(response.text, 'html.parser') title = document.find('h1').text.strip() all_server = document.find_all('li', {'data-video': True}) position = Dialog().select('Choose Server', [server.contents[0] for server in all_server]) if position != -1: xbmc.executebuiltin('ActivateWindow(busydialognocancel)') resolveurl.add_plugin_dirs(__plugins__) try: url = resolveurl.resolve(all_server[position].attrs['data-video']) if url: item = ListItem(title, path=url) sub = re.search('&sub=([^&]+)', all_server[position].attrs['data-video']) if sub: response = session.get( 'https://embed.watchasian.to/player/sub/index.php?id=' + sub.group(1)) item.setSubtitles([__temp__]) with open(__temp__, 'w') as o: for i, text in enumerate(re.split( 'WEBVTT\r\n\r\n|\r\n\r\n', response.text)[1:], start=1): o.write('{}\r\n{}\r\n\r\n'.format( i, text.encode('utf-8'))) xbmcplugin.setResolvedUrl(plugin.handle, True, item) else: raise except: Dialog().notification('Couldn\'t Resolve Server', '') xbmc.executebuiltin('Dialog.Close(busydialognocancel)')
def play_episode(): response = request(plugin.path) document = BeautifulSoup(response.text, 'html.parser') sources = [] for server in document.find('div', class_="anime_muti_link").find_all('a'): if server.contents[1].name == 'i': title = server.contents[2] else: title = server.contents[1] source = ListItem(title) source.setProperty("data-video", server['data-video']) if not 'hydrax' in server['data-video'] and not 'mp4upload' in server[ 'data-video']: sources.append(source) position = Dialog().select("Choose server", sources) if position != -1: # resolvedUrl = resolveUrl(sources[position].getProperty("data-video")) resolveurl.add_plugin_dirs(__plugins__) url = resolveurl.resolve(sources[position].getProperty("data-video")) print(url) xbmcplugin.setResolvedUrl(plugin.handle, True, ListItem(path=url))
import requests import xbmc import xbmcplugin import xbmcgui import xbmcaddon import xbmcvfs import cloudflare from jsunpack import unpack import resolveurl import xbmcvfs from functools import wraps xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): resolveurl.add_plugin_dirs(xbmc.translatePath(xxx_plugins_path)) from url_dispatcher import URL_Dispatcher url_dispatcher = URL_Dispatcher() USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0' #resolveurl.lib.net.get_ua() headers = { 'User-Agent': USER_AGENT, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding': 'gzip', 'Accept-Language': 'en-US,en;q=0.8', 'Connection': 'keep-alive'
import six from resources.lib.modules.player import multilinkselector adultresolver = adultresolver.streamer() URLopener = six.moves.urllib.request.URLopener quote_plus = six.moves.urllib.parse.quote_plus unquote_plus = six.moves.urllib.parse.unquote_plus buildDirectory = local_utils.buildDir xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): add_plugin_dirs(xbmc.translatePath(xxx_plugins_path)) download_icon = xbmc.translatePath( os.path.join( 'special://home/addons/script.adultflix.artwork/resources/art/main', 'downloads.png')) class MyOpener(URLopener): version = 'python-requests/2.9.1' myopener = MyOpener() urlretrieve = MyOpener().retrieve urlopen = MyOpener().open download_location = kodi.get_setting("download_location")
import xbmc,xbmcgui,os,re,urllib,time import adultresolver adultresolver = adultresolver.streamer() import kodi import xbmcaddon, os import client import utils import history import blacklist import log_utils import downloader import resolveurl, xbmcvfs xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): resolveurl.add_plugin_dirs(xbmc.translatePath(xxx_plugins_path)) dialog = xbmcgui.Dialog() @utils.url_dispatcher.register('801', ['url'], ['name', 'iconimage', 'pattern']) def resolve_url(url, name=None, iconimage=None, pattern=None): kodi.busy() try: url,site = url.split('|SPLIT|') except: site = 'Unknown' log_utils.log('Error getting site information from :: %s' % (url), log_utils.LOGERROR) if not name: name = 'Unknown' if not iconimage: iconimage = kodi.addonicon name = re.sub(r'(\[.+?\])','',name); name = name.lstrip() if '] - ' in name: name = name.split('] - ')[-1] if 'site=' in url: url,site = url.split('site=')
import requests import xbmc import xbmcplugin import xbmcgui import xbmcaddon import xbmcvfs import cloudflare from jsunpack import unpack import resolveurl import xbmcvfs from functools import wraps xxx_plugins_path = 'special://home/addons/script.module.resolveurl.xxx/resources/plugins/' if xbmcvfs.exists(xxx_plugins_path): resolveurl.add_plugin_dirs(xbmc.translatePath(xxx_plugins_path)) from url_dispatcher import URL_Dispatcher url_dispatcher = URL_Dispatcher() USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'#resolveurl.lib.net.get_ua() headers = {'User-Agent': USER_AGENT, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding': 'gzip', 'Accept-Language': 'en-US,en;q=0.8', 'Connection': 'keep-alive'} openloadhdr = headers
def conditionals(url): add_plugin_dirs(control.transPath(PLUGINS_PATH)) def yt(uri): if uri.startswith('plugin://'): return uri if len(uri) == 11: uri = YT_URL + uri try: return youtube.wrapper(uri) except YouTubeException as exp: log_debug('Youtube resolver failure, reason: ' + repr(exp)) return if 'youtu' in url or len(url) == 11: log_debug('Resolving with youtube addon...') return yt(url) elif HOSTS(url) and HostedMediaFile(url).valid_url(): try: stream = resolve_url(url) log_debug('Resolving with Resolveurl...') except HTTPError: return url return stream elif HostedMediaFile(url).valid_url(): if control.setting('show_alt_vod') == 'true': try: stream = resolve_url(url) log_debug('Resolving with Resolveurl...') except ResolverError: return except HTTPError: return url return stream else: control.okDialog('AliveGR', control.lang(30354)) return 'https://static.adman.gr/inpage/blank.mp4' elif GM_BASE in url: sources = gm_source_maker(url) stream = mini_picker(sources['links']) return conditionals(stream) elif urlparse(GK_BASE).netloc in url: streams = gk_source_maker(url) stream = mini_picker(streams['links']) if control.setting('check_streams') == 'true': return stream else: return conditionals(stream) else: log_debug('Passing direct link...') return url
def conditionals(url): add_plugin_dirs(control.transPath(PLUGINS_PATH)) def yt(uri): if uri.startswith('plugin://'): return uri if len(uri) == 11: uri = YT_URL + uri try: return youtube.wrapper(uri) except YouTubeException as exp: log_debug('Youtube resolver failure, reason: ' + repr(exp)) return if 'youtu' in url: log_debug('Resolved with youtube addon') return yt(url) elif url.startswith('iptv://'): try: if CACHE_DEBUG: hosts, urls = common.iptv(urlsplit(url).netloc) else: hosts, urls = cache.get(common.iptv, 2, urlsplit(url).netloc) except Exception: return stream = mini_picker(hosts, urls, dont_check=True) return stream elif HOSTS(url) and HostedMediaFile(url).valid_url(): try: stream = resolve_url(url) except urllib2.HTTPError: return url return stream elif HostedMediaFile(url).valid_url(): if control.setting('show_alt_vod') == 'true': try: stream = resolve_url(url) except urllib2.HTTPError: return url return stream else: control.okDialog('AliveGR', control.lang(30354)) return 'https://static.adman.gr/inpage/blank.mp4' elif GM_BASE in url: if CACHE_DEBUG: sources = source_maker(url) else: sources = cache.get(source_maker, 6, url) if not sources: return link = mini_picker(sources['hosts'], sources['links']) if not link: return stream = conditionals(link) return stream elif GK_BASE in url: if CACHE_DEBUG: stream = gk_debris(url) else: stream = cache.get(gk_debris, 48, url) if not stream: return else: return stream else: return url