Ejemplo n.º 1
0
def hideItem(name,
             imdb=None,
             tvdb=None,
             season=None,
             episode=None,
             refresh=True):
    sections = ['progress_watched', 'calendar']
    sections_display = [control.lang(40072), control.lang(40073)]
    selection = control.selectDialog([i for i in sections_display],
                                     heading=control.addonInfo('name') +
                                     ' - ' + control.lang(40074))

    if selection == -1:
        return

    section = sections[selection]

    if episode is not None:
        post = {"shows": [{"ids": {"tvdb": tvdb}}]}
    else:
        post = {"movies": [{"ids": {"imdb": imdb}}]}

    getTrakt('users/hidden/%s' % section, post=post)[0]

    if refresh:
        control.refresh()
    control.trigger_widget_refresh()
    if control.setting('trakt.general.notifications') == 'true':
        control.notification(
            title=32315,
            message=control.lang(33053) % (name, sections_display[selection]),
            icon='default',
            sound=(control.setting('notification.sound') == 'true'))
Ejemplo n.º 2
0
def nhlResolve(url):
    try:
        setSettings()

        try: url, selectGame, side = re.compile('(.+?)x0xe(.+?)x0xe(.+?)$').findall(url)[0]
        except: selectGame, side = None, None

        header = '|' + urllib.urlencode({'User-Agent': 'PS4 libhttp/1.76 (PlayStation 4)'})
        base = re.compile('(.*/).+[.]m3u8').findall(url)

        if not url.endswith('m3u8'):
            return player().run(url + header, selectGame ,side)

        result = client.request(url)

        result = re.compile('BANDWIDTH=(\d*)\n(.+?[.]m3u8)').findall(result)
        result = [(int(int(i[0]) / 1000), i[1]) for i in result]
        result = sorted(result, reverse=True)
        result = [(str(i[0]), base[0] + i[1]) for i in result]

        q = [i[0] for i in result]
        u = [i[1] for i in result]
        select = control.selectDialog(q, control.lang(30756).encode('utf-8'))
        if select == -1: return
        url = u[select]

        player().run(url + header, selectGame ,side)
    except:
        return
Ejemplo n.º 3
0
def resolve(url):

		html = client.request(url)
		links = re.findall('id=[\"\']([^\"\']+)[\"\']><a href=[\"\']#\d+[\"\']><div.+?>([^<]+)<',html)
		if len(links)<2:
			urls = re.findall('<iframe.+?src=[\'"](.+?)[\'"]',html)
			import urlresolver
			for url in urls:
				resolved = urlresolver.resolve(url)
				if resolved:
					return resolved
					break	
		else:
			import requests
			choices = [x[1] for x in links]
			i = control.selectDialog(choices,heading='Choose a link:')
			ref = url
			headers = {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With':'XMLHttpRequest','Referer':ref, 'Origin':'http://fullmatchtv.com', 'Host':'fullmatchtv.com'}
			s = requests.Session()

			

			acp_pid = re.findall("id=[\"\']acp_post[\"\'].+?value=[\"\'](\d+)[\"\']",html)[0]
			post_data = {'acp_currpage' : int(i)+1,
						'acp_pid' : acp_pid,
						'acp_shortcode' : 'acp_shortcode',
						'action' : 'pp_with_ajax' 
						}
			result = s.post('http://fullmatchtv.com/wp-admin/admin-ajax.php', data=post_data, headers=headers).content
			url = re.findall('<iframe.+?src=[\'"](.+?)[\'"]',result)[0]
			import urlresolver
			return urlresolver.resolve(url)
Ejemplo n.º 4
0
def AppSelect(title, id):

    type = ['Download App', 'Install App']
    select = control.selectDialog(type)
    if select == 0: downloadApp(title, id)
    elif select == 1: installApp(title, id)
    else: return
Ejemplo n.º 5
0
def playlistManager(name=None, url=None, meta=None, art=None):
    try:
        items = []
        items += [(control.lang(32065), 'playlistAdd')]
        items += [(control.lang(35518), 'playlistRemove')]
        items += [(control.lang(35517), 'playlistShow')]
        items += [(control.lang(35516), 'playlistClear')]
        control.hide()
        select = control.selectDialog([i[0] for i in items],
                                      heading=control.addonInfo('name') +
                                      ' - ' + control.lang(35522))
        if select == -1: return
        if select >= 0:
            if select == 0:
                control.busy()
                playlistAdd(name, url, meta, art)
                control.hide()
            elif select == 1:
                control.busy()
                playlistRemove(name)
                control.hide()
            elif select == 2:
                control.busy()
                playlistShow()
                control.hide()
            elif select == 3:
                control.busy()
                playlistClear()
                control.hide()
    except:
        log_utils.error()
        control.hide()
Ejemplo n.º 6
0
    def views(self):
        try:
            control.idle()

            items = [("Filme", 'movies'), ("TV-Serien", 'tvshows'),
                     ("Staffeln", 'seasons'),
                     ("Episoden", 'episodes')]

            select = control.selectDialog([i[0] for i in items], "[B]LASTSHIP[/B]: Anzeige-Typen")

            if select == -1: return

            content = items[select][1]

            title = "HIER KLICKEN, UM ANSICHT ZU SPEICHERN"
            url = '%s?action=addView&content=%s' % (sys.argv[0], content)

            poster, banner, fanart = control.addonPoster(), control.addonBanner(), control.addonFanart()

            item = control.item(label=title)
            item.setInfo(type='Video', infoLabels={'title': title})
            item.setArt({'icon': poster, 'thumb': poster, 'poster': poster, 'banner': banner})
            item.setProperty('Fanart_Image', fanart)

            control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False)
            control.content(int(sys.argv[1]), content)
            control.directory(int(sys.argv[1]), cacheToDisc=True)

            from resources.lib.modules import views
            views.setView(content, {})
        except:
            return
Ejemplo n.º 7
0
    def views(self):
        try:
            control.idle()

            items = [ (control.lang(32001).encode('utf-8'), 'movies'), (control.lang(32002).encode('utf-8'), 'tvshows'), (control.lang(32054).encode('utf-8'), 'seasons'), (control.lang(32038).encode('utf-8'), 'episodes') ]

            select = control.selectDialog([i[0] for i in items], control.lang(32049).encode('utf-8'))

            if select == -1: return

            content = items[select][1]

            title = control.lang(32059).encode('utf-8')
            url = '%s?action=addView&content=%s' % (sys.argv[0], content)

            poster, banner, fanart = control.addonPoster(), control.addonBanner(), control.addonFanart()

            item = control.item(label=title)
            item.setInfo(type='Video', infoLabels = {'title': title})
            item.setArt({'icon': poster, 'thumb': poster, 'poster': poster, 'banner': banner})
            item.setProperty('Fanart_Image', fanart)

            control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False)
            control.content(int(sys.argv[1]), content)
            control.directory(int(sys.argv[1]), cacheToDisc=True)

            from resources.lib.modules import cache
            views.setView(content, {})
        except:
            return
Ejemplo n.º 8
0
 def acount_info_to_dialog(self):
     from datetime import datetime
     import time
     try:
         userInfo = self.acount_info()
         try:
             expires = datetime.strptime(userInfo['expiration'],
                                         FormatDateTime)
         except:
             expires = datetime(*(time.strptime(userInfo['expiration'],
                                                FormatDateTime)[0:6]))
         days_remaining = (expires - datetime.today()).days
         expires = expires.strftime("%A, %B %d, %Y")
         items = []
         items += [control.lang(40035) % userInfo['email']]
         items += [control.lang(40036) % userInfo['username']]
         items += [control.lang(40037) % userInfo['type'].capitalize()]
         items += [control.lang(40041) % expires]
         items += [control.lang(40042) % days_remaining]
         items += [control.lang(40038) % userInfo['points']]
         return control.selectDialog(items, 'Real-Debrid')
     except:
         log_utils.error()
         pass
     return
Ejemplo n.º 9
0
def nhlResolve(url):
    try:
        setSettings()

        try:
            url, selectGame, side = re.compile(
                '(.+?)x0xe(.+?)x0xe(.+?)$').findall(url)[0]
        except:
            selectGame, side = None, None

        header = '|' + urllib.urlencode(
            {'User-Agent': 'PS4 libhttp/1.76 (PlayStation 4)'})
        base = re.compile('(.*/).+[.]m3u8').findall(url)

        if not url.endswith('m3u8'):
            return player().run(url + header, selectGame, side)

        result = client.request(url)

        result = re.compile('BANDWIDTH=(\d*)\n(.+?[.]m3u8)').findall(result)
        result = [(int(int(i[0]) / 1000), i[1]) for i in result]
        result = sorted(result, reverse=True)
        result = [(str(i[0]), base[0] + i[1]) for i in result]

        q = [i[0] for i in result]
        u = [i[1] for i in result]
        select = control.selectDialog(q, control.lang(30756).encode('utf-8'))
        if select == -1: return
        url = u[select]

        player().run(url + header, selectGame, side)
    except:
        return
Ejemplo n.º 10
0
def setviews():

    try:
        control.idle()

        items = [
            (control.lang(32017).encode('utf-8'), 'addons'),
            (control.lang(32018).encode('utf-8'), 'movies'),
            (control.lang(32019).encode('utf-8'), 'files')
        ]

        select = control.selectDialog([i[0] for i in items], 'SELECT')

        if select == -1:
            raise Exception()

        content = items[select][1]

        title = control.lang(32020).encode('utf-8')

        poster, banner, fanart = ICON, BANNER, FANART

        addon.add_directory({'mode': 'addView', 'content': content},
                            {'type': 'video', 'title': title, 'icon': poster, 'thumb': poster,
                             'poster': poster, 'banner': banner},
                            img=ICON, fanart=FANART)
        control.content(int(sys.argv[1]), content)
        control.directory(int(sys.argv[1]))
        view.setView(content, {})
    except:
        quit()
Ejemplo n.º 11
0
 def views(self):
     try:
         control.idle()
         items = [(control.lang(32001).encode('utf-8'), 'movies'),
                  (control.lang(32002).encode('utf-8'), 'tvshows'),
                  (control.lang(32054).encode('utf-8'), 'seasons'),
                  (control.lang(32038).encode('utf-8'), 'episodes')]
         select = control.selectDialog([i[0] for i in items],
                                       control.lang(32049).encode('utf-8'))
         if select == -1: return
         content = items[select][1]
         title = control.lang(32059).encode('utf-8')
         url = '%s?action=addView&content=%s' % (sys.argv[0], content)
         poster, banner, fanart = control.addonPoster(
         ), control.addonBanner(), control.addonFanart()
         item = control.item(label=title)
         item.setInfo(type='Video', infoLabels={'title': title})
         item.setArt({
             'icon': poster,
             'thumb': poster,
             'poster': poster,
             'banner': banner
         })
         item.setProperty('Fanart_Image', fanart)
         control.addItem(handle=int(sys.argv[1]),
                         url=url,
                         listitem=item,
                         isFolder=False)
         control.content(int(sys.argv[1]), content)
         control.directory(int(sys.argv[1]), cacheToDisc=True)
         from resources.lib.modules import views
         views.setView(content, {})
     except:
         return
Ejemplo n.º 12
0
 def acount_info_to_dialog(self):
     from datetime import datetime
     import math
     try:
         accountInfo = self.get_acount_info()
         expires = datetime.fromtimestamp(accountInfo['premium_until'])
         days_remaining = (expires - datetime.today()).days
         expires = expires.strftime("%A, %B %d, %Y")
         points_used = int(
             math.floor(float(accountInfo['space_used']) / 1073741824.0))
         space_used = float(int(accountInfo['space_used'])) / 1073741824
         percentage_used = str(
             round(float(accountInfo['limit_used']) * 100.0, 1))
         items = []
         items += [control.lang(40040) % accountInfo['customer_id']]
         items += [control.lang(40041) % expires]
         items += [control.lang(40042) % days_remaining]
         items += [control.lang(40043) % points_used]
         items += [control.lang(40044) % space_used]
         items += [control.lang(40045) % percentage_used]
         return control.selectDialog(items, 'Premiumize')
     except:
         log_utils.error()
         pass
     return
Ejemplo n.º 13
0
def colorChoicePI():
    selectList = []
    for i in colorChart:
        selectList.append(colorStringPI(i, i))
    color = control.selectDialog(selectList)
    if color == -1: return
    control.setSetting('prem.identify', colorChart[color])
    control.openSettings(query='2.3')
Ejemplo n.º 14
0
def colorChoiceUI():
    selectList = []
    for i in colorChart:
        selectList.append(colorStringUI(i, i))
    color = control.selectDialog(selectList)
    if color == -1: return
    control.setSetting('unaired.identify', colorChart[color])
    control.openSettings(query='0.16')
Ejemplo n.º 15
0
def colorChoice():
    selectList = []
    for i in colorChart:
        selectList.append(colorString(i, i))
    color = control.selectDialog(selectList)
    if color == -1: return
    control.setSetting('my_ColorChoice', colorChart[color])
    control.execute('Container.Refresh')
Ejemplo n.º 16
0
    def search(self, url):
        try:
            apiLang = control.apiLanguage().get('youtube', 'en')

            if apiLang != 'en':
                url += "&relevanceLanguage=%s" % apiLang

            #log_utils.log('yt_url: ' + str(url))
            result = client.request(url)
            if result == None:
                log_utils.log('yt_api_failed_resp: ' + str(result))
                control.infoDialog(
                    'Please utilise your own API key[CR]on YouTube add-on',
                    'API key quota limit reached',
                    time=5000)
                return
            result = six.ensure_text(result)

            json_items = json.loads(result).get('items', [])
            items = [i.get('id', {}).get('videoId') for i in json_items]

            if self.mode == '1':
                labels = [
                    i.get('snippet', {}).get('title') for i in json_items
                ]
                labels = [client.replaceHTMLCodes(i) for i in labels]
                select = control.selectDialog(labels, control.lang(32121))
                if select == -1: return
                items = [items[select]]

            elif self.mode == '2':
                if self.content in ['seasons', 'episodes']:
                    labels = [
                        i.get('snippet', {}).get('title') for i in json_items
                    ]
                    labels = [client.replaceHTMLCodes(i) for i in labels]
                    select = control.selectDialog(labels, control.lang(32121))
                    if select == -1: return
                    items = [items[select]]

            for vid_id in items:
                url = self.resolve(vid_id)
                if url:
                    return url
        except:
            return
Ejemplo n.º 17
0
def add():
	type = ['Add with Link', 'Add with File']
	select = control.selectDialog(type)
	if select == 1: add_file()
	elif select == 0: 
		k = control.keyboard('', 'Paste torrent Link') ; k.doModal()	
		q = k.getText() if k.isConfirmed() else None

		if (q == None or q == ''): return
		add_download(q, q)
Ejemplo n.º 18
0
	def get(self, url):
		try:
			items = re.compile('<sublink(?:\s+name=|)(?:\'|\"|)(.*?)(?:\'|\"|)>(.+?)</sublink>').findall(url)
			if len(items) == 0: return url
			if len(items) == 1: return items[0][1]
			items = [('Link %s' % (int(items.index(i))+1) if i[0] == '' else i[0], i[1]) for i in items]
			select = control.selectDialog([i[0] for i in items], control.infoLabel('listitem.label'))
			if select == -1: return False
			else: return items[select][1]
		except:
			log_utils.error()
Ejemplo n.º 19
0
    def resolve(self, url):
        urls = url.split('##')
        choices = ['Link %s' % (i + 1) for i in range(len(urls))]

        if len(choices) == 1:
            index = 0
        else:
            index = control.selectDialog(choices, 'Odaberite link:')
        if index > -1:
            url = urls[index]
            if 'morescreens' in url:
                from resources.lib.resolvers import hrti
                return hrti.resolve(url)

            elif 'streamlive.to' in url:
                from resources.lib.resolvers import streamlive
                return streamlive.resolve(url)

            elif 'dailymotion' in url:
                import urlresolver
                return urlresolver.resolve(url)

            #nova tv, doma tv
            specy = {
                'http://www.sipragezabava.com/kanal_3_hr.php':
                'http://prvenstvoliga.blogspot.hr/2014/12/nova-tv.html',
                'http://www.netraja.net/2014/05/doma-tv.html':
                'http://www.prvenstvoliga.blogspot.hr/2014/05/doma-tv.html'
            }
            if url in specy.keys():
                urlx = []
                src = []
                html = client.request(
                    specy[url],
                    referer=
                    'http://prvenstvoliga.blogspot.com/search/label/Hrvatska')
                urls = re.findall('target=[\"\']([^\"\']+)[\"\'].+?</embed>',
                                  html)
                i = 0
                for url in urls:
                    i += 1
                    src += ['Link %s' % i]

                dialog = xbmcgui.Dialog()
                index = dialog.select('Odaberite:', src)
                if index == -1:
                    return ''
                return urlx[index]

            import liveresolver
            return liveresolver.resolve(url)

        return ''
Ejemplo n.º 20
0
	def sch_links(self,key):
		dicty = dict(self.sch_dict())
		urls = dicty[key]
		choices = []
		links = re.findall('href=[\"\']([^\"\']+)[\"\'].+?>([^<]+)<',urls)
		for link in links:
			choices.append(link[1])

		index = control.selectDialog(choices,heading='Choose the source')
		if index>-1:
			return links[index][0]
		return ''
Ejemplo n.º 21
0
def logView():
	modes = ['View Log', 'Upload Log to Pastebin']
	logPaths = []
	logNames = []
	select = control.selectDialog(modes)

	try:
		if select == -1: raise Exception()
		logfile_path = xbmc.translatePath('special://logpath')
		logfile_names = ('kodi.log', 'kodi.old.log', 'spmc.log', 'spmc.old.log', 'tvmc.log', 'freetelly.log', 'ftmc.log', 'firemc.log', 'nodi.log')
		for logfile_name in logfile_names:
			log_file_path = os.path.join(logfile_path, logfile_name)
			if os.path.isfile(log_file_path): 
				logNames.append(logfile_name)
				logPaths.append(log_file_path)
			
		selectLog = control.selectDialog(logNames)
		selectedLog = logPaths[selectLog]
		if selectLog == -1: raise Exception()
		if select == 0:
			from resources.lib.modules import TextViewer
			TextViewer.text_view(selectedLog)
		elif select == 1:
			f = open(selectedLog, 'r')
			text = f.read()
			f.close()
			from resources.lib.api import pastebin
			upload_Link = pastebin.api().paste(text)
			print ("LOGVIEW UPLOADED LINK", upload_Link)
			if upload_Link != None:
				if not "Error" in upload_Link:
					label = "Log Link: [COLOR skyblue][B]" + upload_Link + "[/B][/COLOR]"
					dialog.ok(AddonTitle, "Log Uploaded to Pastebin", label)
				else: dialog.ok(AddonTitle, "Cannot Upload Log to Pastebin", "Reason " + upload_Link)
			else:dialog.ok(AddonTitle, "Cannot Upload Log to Pastebin", "")
			
	except:pass
		
			
##############################    END    #########################################
Ejemplo n.º 22
0
def upload_LogFile(name):
    from resources.lib.modules.control import notification
    url = 'https://paste.kodi.tv/'
    log_file = joinPath(LOGPATH, '%s.log' % name.lower())
    if not existsPath(log_file):
        return notification(
            message='Log File not found, likely logging is not enabled.')
    try:
        import requests
        from resources.lib.modules.control import addonVersion, selectDialog, getHighlightColor
        f = open(log_file, 'r', encoding='utf-8', errors='ignore')
        text = f.read()
        f.close()
        UserAgent = 'DG %s' % addonVersion('plugin.video.dg')
        response = requests.post(url + 'documents',
                                 data=text.encode('utf-8', errors='ignore'),
                                 headers={'User-Agent': UserAgent})
        # log('log_response=%s' % response)
        if 'key' in response.json():
            result = url + response.json()['key']
            log('%s log file uploaded to: %s' % (name, result))
            from sys import platform as sys_platform
            supported_platform = any(value in sys_platform
                                     for value in ('win32', 'linux2'))
            highlight_color = getHighlightColor()
            list = [
                ('[COLOR %s]url:[/COLOR]  %s' % (highlight_color, str(result)),
                 str(result))
            ]
            if supported_platform:
                list += [('[COLOR %s]  -- Copy url To Clipboard[/COLOR]' %
                          highlight_color, ' ')]
            select = selectDialog(
                [i[0] for i in list],
                lang(32196) if name.lower() == 'dg' else lang(32199))
            if 'Copy url To Clipboard' in list[select][0]:
                from resources.lib.modules.source_utils import copy2clip
                copy2clip(list[select - 1][1])
        elif 'message' in response.json():
            notification(message='%s Log upload failed: %s' %
                         (name, str(response.json()['message'])))
            log('%s Log upload failed: %s' %
                (name, str(response.json()['message'])),
                level=LOGERROR)
        else:
            notification(message='%s Log upload failed' % name)
            log('%s Log upload failed: %s' % (name, response.text),
                level=LOGERROR)
    except:
        error('%s log upload failed' % name)
        notification(message='pastebin post failed: See log for more info')
Ejemplo n.º 23
0
 def listamount(self):
     try:
         control.idle()
         items = [('10', '10'), ('20', '20'), ('30', '30'), ('40', '40'),
                  ('50', '50'), ('60', '60'), ('70', '70'), ('80', '80'),
                  ('90', '90'), ('100', '100')]
         select = control.selectDialog([i[0] for i in items],
                                       'Items per Page')
         if select == -1: return
         items = items[select][1]
         control.setSetting('useramount', '%s' % items)
         control.refresh()
     except:
         return
Ejemplo n.º 24
0
def manager(name, imdb, tvdb, content):
    try:
        post = {"movies": [{"ids": {"imdb": imdb}}]} if content == 'movie' else {"shows": [{"ids": {"tvdb": tvdb}}]}

        items = [(control.lang(32516).encode('utf-8'), '/sync/collection')]
        items += [(control.lang(32517).encode('utf-8'), '/sync/collection/remove')]
        items += [(control.lang(32518).encode('utf-8'), '/sync/watchlist')]
        items += [(control.lang(32519).encode('utf-8'), '/sync/watchlist/remove')]
        items += [(control.lang(32520).encode('utf-8'), '/users/me/lists/%s/items')]

        result = getTraktAsJson('/users/me/lists')
        lists = [(i['name'], i['ids']['slug']) for i in result]
        lists = [lists[i//2] for i in range(len(lists)*2)]
        for i in range(0, len(lists), 2):
            lists[i] = ((control.lang(32521) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items' % lists[i][1])
        for i in range(1, len(lists), 2):
            lists[i] = ((control.lang(32522) % lists[i][0]).encode('utf-8'),
                        '/users/me/lists/%s/items/remove' % lists[i][1])
        items += lists

        select = control.selectDialog([i[0] for i in items], control.lang(32515).encode('utf-8'))

        if select == -1:
            return
        elif select == 4:
            t = control.lang(32520).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            new = k.getText() if k.isConfirmed() else None
            if (new is None or new == ''):
                return
            result = __getTrakt('/users/me/lists', post={"name": new, "privacy": "private"})[0]

            try:
                slug = utils.json_loads_as_str(result)['ids']['slug']
            except Exception:
                return notification.infoDialog(
                    msg=control.lang(32515).encode('utf-8'),
                    title=str(name),
                    style='ERROR')
            result = __getTrakt(items[select][1] % slug, post=post)[0]
        else:
            result = __getTrakt(items[select][1], post=post)[0]

        icon = control.infoLabel('ListItem.Icon') if result is not None else 'ERROR'

        notification.infoDialog(msg=control.lang(32515).encode('utf-8'), title=str(name), style=icon)
    except Exception:
        return
Ejemplo n.º 25
0
    def get(self, url):
        try:
            items = re.compile('<sublink(?:\s+name=|)(?:\'|\"|)(.*?)(?:\'|\"|)>(.+?)</sublink>').findall(url)

            if len(items) == 0: return url
            if len(items) == 1: return items[0][1]

            items = [('Link %s' % (int(items.index(i))+1) if i[0] == '' else i[0], i[1]) for i in items]

            select = control.selectDialog([i[0] for i in items], control.infoLabel('listitem.label'))

            if select == -1: return False
            else: return items[select][1]
        except:
            pass
Ejemplo n.º 26
0
def restoreFolder():
    names = []
    links = []
    zipFolder = control.setting('restore.path')
    if zipFolder == '' or zipFolder == None:
        control.infoDialog('Please Setup a Zip Files Location first')
        control.openSettings(query='2.0')
        return
    for zipFile in os.listdir(zipFolder):
        if zipFile.endswith(".zip"):
            url = xbmc.translatePath(os.path.join(zipFolder, zipFile))
            names.append(zipFile)
            links.append(url)
    select = control.selectDialog(names)
    if select != -1: restore(links[select])
Ejemplo n.º 27
0
 def sortby(self):
     try:
         control.idle()
         items = [('Popularity', 'moviemeter'), ('Alphabetical', 'alpha'),
                  ('IMDb Rating', 'user_rating'),
                  ('Number of Votes', 'num_votes'),
                  ('US Box Office by Gross', 'boxoffice_gross_us'),
                  ('By Year', 'year'), ('By Release Date', 'release_date')]
         select = control.selectDialog([i[0] for i in items],
                                       'Sort Lists By')
         if select == -1: return
         items = items[select][1]
         control.setSetting('uservar', '%s' % items)
         control.refresh()
     except:
         return
Ejemplo n.º 28
0
    def get(self, url):
        try:
            items = re.compile('<sublink>(.+?)</sublink>').findall(url)
            if len(items) == 0: items = [url]
            items = [('Link %s' % (int(items.index(i))+1), i) for i in items]

            if len(items) == 1:
                url = items[0][1]
            else:
                select = control.selectDialog([i[0] for i in items], control.infoLabel('listitem.label'))
                if select == -1: return False
                else: url = items[select][1]

            return url
        except:
            pass
Ejemplo n.º 29
0
 def getPeople(self, name, url):
     try:
         select = control.selectDialog(['Movies', 'TV Shows', 'Biography'],
                                       heading=name)
         if select == -1: return
         elif select == 0:
             from resources.lib.indexers import movies
             movies.movies().get(self.person_movie_link % url)
         elif select == 1:
             from resources.lib.indexers import tvshows
             tvshows.tvshows().get(self.person_tv_link % url)
         elif select == 2:
             self.bio_txt(url, name)
     except:
         log_utils.log('getPeople', 1)
         pass
Ejemplo n.º 30
0
def dialogselect_folder(id):
    folder = premiumizeFolder + id
    url = urlparse.urljoin(premiumize_Api, folder)
    r = reqJson(url)
    r = r['content']
    labels = []
    sources = []
    types = []
    IDs = []
    for result in r:
        type = result['type']
        fileLabel = type
        id = result['id']
        name = result['name'].encode('utf-8')
        name = normalize(name)
        playLink = '0'
        isFolder = True
        isPlayable = 'false'
        url = '0'
        if type == 'file':
            playLink = result['link']
            ext = playLink.split('.')
            fileLabel = type + " " + str(ext[-1])
            try:
                size = result['size']
                size = getSize(size)
            except:
                size = ''
            if size != '': fileLabel = fileLabel + " | " + str(size)
            isFolder = False
            isPlayable = 'true'
            url = playLink
        label = "[B]" + fileLabel.upper() + " |[/B] " + str(name)
        IDs.append(id)
        labels.append(label)
        sources.append(url)
        types.append(type)
        IDs.append(id)
    select = control.selectDialog(labels)
    if select == -1: return '0'
    selected_type = types[select]
    selected_url = sources[select]
    selected_id = IDs[select]
    if selected_type != 'file':
        selected_url = dialogselect_folder(selected_id)
    return selected_url
Ejemplo n.º 31
0
    def search(self, url):
        try:
            apiLang = control.apiLanguage().get('youtube', 'en')

            if apiLang != 'en':
                url += '&relevanceLanguage=%s' % apiLang

            r = cache.get(client.request, 24, url)
            result = utils.json_loads_as_str(r)

            json_items = result['items']
            ids = [i['id']['videoId'] for i in json_items]
            if not ids: return

            if self.mode == '1':
                vids = []

                for i in json_items:
                    name = client.replaceHTMLCodes(i['snippet']['title'])
                    if control.getKodiVersion() >= 17:
                        icon = i['snippet']['thumbnails']['default']['url']
                        li = control.item(label=name)
                        li.setArt({
                            'icon': icon,
                            'thumb': icon,
                            'poster': icon
                        })
                        vids.append(li)
                    else:
                        vids.append(name)

                select = control.selectDialog(vids,
                                              control.lang(32121) % 'YouTube',
                                              useDetails=True)
                if select == -1: return 'canceled'
                vid_id = ids[select]
                url = self.yt_plugin_url % vid_id
                return url

            for vid_id in ids:
                url = resolve(vid_id)
                if url:
                    return url
            return
        except:
            return
Ejemplo n.º 32
0
def manager(name, imdb, tvdb, content):
    try:
        user = re.sub('[^a-z0-9]', '-', control.setting('trakt.user').strip().lower())
        post = {"movies": [{"ids": {"imdb": imdb}}]} if content == 'movie' else {"shows": [{"ids": {"tvdb": tvdb}}]}

        items = [(control.lang(30472).encode('utf-8'), '/sync/collection')]
        items += [(control.lang(30473).encode('utf-8'), '/sync/collection/remove')]
        items += [(control.lang(30474).encode('utf-8'), '/sync/watchlist')]
        items += [(control.lang(30475).encode('utf-8'), '/sync/watchlist/remove')]
        items += [(control.lang(30476).encode('utf-8'), '/users/%s/lists/%s/items' % (user, '%s'))]

        result = getTrakt('/users/%s/lists' % user)
        result = json.loads(result)
        lists = [(i['name'], i['ids']['slug']) for i in result]
        lists = [lists[i//2] for i in range(len(lists)*2)]
        for i in range(0, len(lists), 2):
            lists[i] = ((control.lang(30477) + ' ' + lists[i][0]).encode('utf-8'), '/users/%s/lists/%s/items' % (user, lists[i][1]))
        for i in range(1, len(lists), 2):
            lists[i] = ((control.lang(30478) + ' ' + lists[i][0]).encode('utf-8'), '/users/%s/lists/%s/items/remove' % (user, lists[i][1]))
        items += lists

        select = control.selectDialog([i[0] for i in items], control.lang(30471).encode('utf-8'))

        if select == -1:
            return
        elif select == 4:
            t = control.lang(30476).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            new = k.getText() if k.isConfirmed() else None
            if (new == None or new == ''): return
            url = '/users/%s/lists' % user
            result = getTrakt('/users/%s/lists' % user, post={"name": new, "privacy": "private"})

            try: slug = json.loads(result)['ids']['slug']
            except: return control.infoDialog('Failed', heading=name)
            result = getTrakt(items[select][1] % slug, post=post)
        else:
            result = getTrakt(items[select][1], post=post)

        info = 'Successful' if not result == None else 'Failed'
        control.infoDialog(info, heading=name)
    except:
        return
Ejemplo n.º 33
0
def manager(name, imdb, tvdb, content):
    try:
        post = {"movies": [{"ids": {"imdb": imdb}}]} if content == 'movie' else {"shows": [{"ids": {"tvdb": tvdb}}]}

        items = [(control.lang(32516).encode('utf-8'), '/sync/collection')]
        items += [(control.lang(32517).encode('utf-8'), '/sync/collection/remove')]
        items += [(control.lang(32518).encode('utf-8'), '/sync/watchlist')]
        items += [(control.lang(32519).encode('utf-8'), '/sync/watchlist/remove')]
        items += [(control.lang(32520).encode('utf-8'), '/users/me/lists/%s/items')]

        result = getTrakt('/users/me/lists')
        result = json.loads(result)
        lists = [(i['name'], i['ids']['slug']) for i in result]
        lists = [lists[i//2] for i in range(len(lists)*2)]
        for i in range(0, len(lists), 2):
            lists[i] = ((control.lang(32521) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items' % lists[i][1])
        for i in range(1, len(lists), 2):
            lists[i] = ((control.lang(32522) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items/remove' % lists[i][1])
        items += lists

        select = control.selectDialog([i[0] for i in items], control.lang(32515).encode('utf-8'))

        if select == -1:
            return
        elif select == 4:
            t = control.lang(32520).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            new = k.getText() if k.isConfirmed() else None
            if (new == None or new == ''): return
            result = getTrakt('/users/me/lists', post={"name": new, "privacy": "private"})

            try: slug = json.loads(result)['ids']['slug']
            except: return control.infoDialog(control.lang(32515).encode('utf-8'), heading=str(name), sound=True, icon='ERROR')
            result = getTrakt(items[select][1] % slug, post=post)
        else:
            result = getTrakt(items[select][1], post=post)

        icon = control.infoLabel('ListItem.Icon') if not result == None else 'ERROR'

        control.infoDialog(control.lang(32515).encode('utf-8'), heading=str(name), sound=True, icon=icon)
    except:
        return
Ejemplo n.º 34
0
def resolve(url):

    html = client.request(url)
    links = re.findall(
        'id=[\"\']([^\"\']+)[\"\']><a href=[\"\']#\d+[\"\']><div.+?>([^<]+)<',
        html)
    if len(links) < 2:
        urls = re.findall('<iframe.+?src=[\'"](.+?)[\'"]', html)
        import urlresolver
        for url in urls:
            resolved = urlresolver.resolve(url)
            if resolved:
                return resolved
                break
    else:
        import requests
        choices = [x[1] for x in links]
        i = control.selectDialog(choices, heading='Choose a link:')
        ref = url
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'X-Requested-With': 'XMLHttpRequest',
            'Referer': ref,
            'Origin': 'http://fullmatchtv.com',
            'Host': 'fullmatchtv.com'
        }
        s = requests.Session()

        acp_pid = re.findall(
            "id=[\"\']acp_post[\"\'].+?value=[\"\'](\d+)[\"\']", html)[0]
        post_data = {
            'acp_currpage': int(i) + 1,
            'acp_pid': acp_pid,
            'acp_shortcode': 'acp_shortcode',
            'action': 'pp_with_ajax'
        }
        result = s.post('http://fullmatchtv.com/wp-admin/admin-ajax.php',
                        data=post_data,
                        headers=headers).content
        url = re.findall('<iframe.+?src=[\'"](.+?)[\'"]', result)[0]
        import urlresolver
        return urlresolver.resolve(url)
Ejemplo n.º 35
0
	def moviesListToLibrary(self, url):
		url = getattr(self, url + '_link')
		u = urlparse(url).netloc.lower()
		try:
			control.hide()
			if u in self.tmdb_link: items = tmdb_indexer.userlists(url)
			elif u in self.trakt_link: items = self.trakt_user_list(url, self.trakt_user)
			items = [(i['name'], i['url']) for i in items]
			message = 32663
			if 'themoviedb' in url: message = 32681
			select = control.selectDialog([i[0] for i in items], control.lang(message))
			list_name = items[select][0]
			if select == -1: return
			link = items[select][1]
			link = link.split('&sort_by')[0]
			from resources.lib.modules import library
			library.libmovies().range(link, list_name)
		except:
			log_utils.error()
			return
Ejemplo n.º 36
0
 def account_info_to_dialog(self):
     from datetime import datetime
     try:
         account_info = self.account_info()['user']
         username = account_info['username']
         email = account_info['email']
         status = 'Premium' if account_info['isPremium'] else 'Not Active'
         expires = datetime.fromtimestamp(account_info['premiumUntil'])
         days_remaining = (expires - datetime.today()).days
         heading = control.lang(40059).upper()
         items = []
         items += [control.lang(40036) % username]
         items += [control.lang(40035) % email]
         items += [control.lang(40037) % status]
         items += [control.lang(40041) % expires]
         items += [control.lang(40042) % days_remaining]
         return control.selectDialog(items, 'AllDebrid')
     except:
         log_utils.error()
     return
Ejemplo n.º 37
0
def manager(name, imdb, tvdb, content):
    try:
        post = {"movies": [{"ids": {"imdb": imdb}}]} if content == 'movie' else {"shows": [{"ids": {"tvdb": tvdb}}]}

        items = [("Add to [B]Collection[/B]", '/sync/collection')]
        items += [("Remove from [B]Collection[/B]", '/sync/collection/remove')]
        items += [("Add to [B]Watchlist[/B]", '/sync/watchlist')]
        items += [("Remove from [B]Watchlist[/B]", '/sync/watchlist/remove')]
        items += [("Add to [B]new List[/B]", '/users/me/lists/%s/items')]

        result = getTraktAsJson('/users/me/lists')
        lists = [(i['name'], i['ids']['slug']) for i in result]
        lists = [lists[i//2] for i in range(len(lists)*2)]
        for i in range(0, len(lists), 2):
            lists[i] = (("Add to [B]%s[/B]" % lists[i][0]), '/users/me/lists/%s/items' % lists[i][1])
        for i in range(1, len(lists), 2):
            lists[i] = (("Remove from [B]%s[/B]" % lists[i][0]), '/users/me/lists/%s/items/remove' % lists[i][1])
        items += lists

        select = control.selectDialog([i[0] for i in items], "Trakt Manager")

        if select == -1:
            return
        elif select == 4:
            t = "Add to [B]new List[/B]"
            k = control.keyboard('', t) ; k.doModal()
            new = k.getText() if k.isConfirmed() else None
            if (new == None or new == ''): return
            result = __getTrakt('/users/me/lists', post={"name": new, "privacy": "private"})[0]

            try: slug = utils.json_loads_as_str(result)['ids']['slug']
            except: return control.infoDialog("Trakt Manager", heading=str(name), sound=True, icon='ERROR')
            result = __getTrakt(items[select][1] % slug, post=post)[0]
        else:
            result = __getTrakt(items[select][1], post=post)[0]

        icon = control.infoLabel('ListItem.Icon') if not result == None else 'ERROR'

        control.infoDialog("Trakt Manager", heading=str(name), sound=True, icon=icon)
    except:
        return
Ejemplo n.º 38
0
def CCstream(url):
    try:
        control.idle()

        url = urlparse.urljoin('http://kisscartoon.me', url)

        result = cloudflare.request(url)

        items = client.parseDOM(result,'select', attrs={'id':'selectQuality'}) 
        items = client.parseDOM(items, 'option', ret='value')

        url = []

        for item in items:
            try:
                u = base64.b64decode(item)
                u = u.encode('utf-8')

                if u[-3:] == 'm37': q = '1080P'
                elif u[-3:] == 'm22': q = '720P'
                elif u[-3:] == 'm18': q = '360P'
                else: q = 'UNKNOWN'

                url.append({'q': q, 'u': u})
            except:
                pass

        if len(url) > 1:
            q = [i['q'] for i in url]
            u = [i['u'] for i in url]
            select = control.selectDialog(q)
            if select == -1: return
            url = u[select]

        else:
            url = url[0]['u']

        player().run(url)
    except:
        return
Ejemplo n.º 39
0
    def sourcesDialog(self, items, progress=True):
        try:
            sources = [{'label': '00 | [B]%s[/B]' % control.lang(30509).encode('utf-8').upper()}] + items

            labels = [i['label'] for i in sources]

            select = control.selectDialog(labels)
            if select == 0: return self.sourcesDirect(items, progress=progress)
            if select == -1: return 'close://'

            next = [y for x,y in enumerate(items) if x >= select]
            prev = [y for x,y in enumerate(items) if x < select][::-1]

            items = [items[select-1]]
            items = [i for i in items+next+prev][:20]

            if progress == True:
                self.progressDialog = control.progressDialog
                self.progressDialog.create(control.addonInfo('name'), '')
                self.progressDialog.update(0)

            block = None

            for i in range(len(items)):
                try:
                    if progress == True:
                        if self.progressDialog.iscanceled(): break
                        self.progressDialog.update(int((100 / float(len(items))) * i), str(items[i]['label']), str(' '))

                    if items[i]['source'] == block: raise Exception()

                    w = workers.Thread(self.sourcesResolve, items[i])
                    w.start()

                    m = ''

                    for x in range(3600):
                        if progress == True:
                            if self.progressDialog.iscanceled(): return self.progressDialog.close()
                        if xbmc.abortRequested == True: return sys.exit()
                        k = control.condVisibility('Window.IsActive(virtualkeyboard)')
                        if k: m += '1'; m = m[-1]
                        if (w.is_alive() == False or x > 30) and not k: break
                        k = control.condVisibility('Window.IsActive(yesnoDialog)')
                        if k: m += '1'; m = m[-1]
                        if (w.is_alive() == False or x > 30) and not k: break
                        time.sleep(0.5)

                    for x in range(30):
                        if m == '': break
                        if progress == True:
                            if self.progressDialog.iscanceled(): return self.progressDialog.close()
                        if xbmc.abortRequested == True: return sys.exit()
                        if w.is_alive() == False: break
                        time.sleep(0.5)


                    if w.is_alive() == True: block = items[i]['source']

                    if self.url == None: raise Exception()

                    self.selectedSource = items[i]['label']

                    try: self.progressDialog.close()
                    except: pass

                    control.execute('Dialog.Close(virtualkeyboard)')
                    control.execute('Dialog.Close(yesnoDialog)')
                    return self.url
                except:
                    pass

            try: self.progressDialog.close()
            except: pass

        except:
            try: self.progressDialog.close()
            except: pass
Ejemplo n.º 40
0
    def sourcesDialog(self, items):
        try:
            labels = [i['label'] for i in items]

            select = control.selectDialog(labels)
            if select == -1: return 'close://'

            next = [y for x,y in enumerate(items) if x >= select]
            prev = [y for x,y in enumerate(items) if x < select][::-1]

            items = [items[select]]
            items = [i for i in items+next+prev][:20]

            header = control.addonInfo('name')
            header2 = header.upper()

            progressDialog = control.progressDialog if control.setting('progress.dialog') == '0' else control.progressDialogBG
            progressDialog.create(header, '')
            progressDialog.update(0)

            block = None

            for i in range(len(items)):
                try:
                    if items[i]['source'] == block: raise Exception()

                    w = workers.Thread(self.sourcesResolve, items[i])
                    w.start()

                    try:
                        if progressDialog.iscanceled(): break
                        progressDialog.update(int((100 / float(len(items))) * i), str(items[i]['label']), str(' '))
                    except:
                        progressDialog.update(int((100 / float(len(items))) * i), str(header2), str(items[i]['label']))

                    m = ''

                    for x in range(3600):
                        try:
                            if xbmc.abortRequested == True: return sys.exit()
                            if progressDialog.iscanceled(): return progressDialog.close()
                        except:
                            pass

                        k = control.condVisibility('Window.IsActive(virtualkeyboard)')
                        if k: m += '1'; m = m[-1]
                        if (w.is_alive() == False or x > 30) and not k: break
                        k = control.condVisibility('Window.IsActive(yesnoDialog)')
                        if k: m += '1'; m = m[-1]
                        if (w.is_alive() == False or x > 30) and not k: break
                        time.sleep(0.5)


                    for x in range(30):
                        try:
                            if xbmc.abortRequested == True: return sys.exit()
                            if progressDialog.iscanceled(): return progressDialog.close()
                        except:
                            pass

                        if m == '': break
                        if w.is_alive() == False: break
                        time.sleep(0.5)


                    if w.is_alive() == True: block = items[i]['source']

                    if self.url == None: raise Exception()

                    self.selectedSource = items[i]['label']

                    try: progressDialog.close()
                    except: pass

                    control.execute('Dialog.Close(virtualkeyboard)')
                    control.execute('Dialog.Close(yesnoDialog)')
                    return self.url
                except:
                    pass

            try: progressDialog.close()
            except: pass

        except:
            try: progressDialog.close()
            except: pass