Exemple #1
0
	def addSearch(self, url):
			try:
				skip = 0
				if '|SPLITER|' in url:
					keep = url
					url,matcher = url.split('|SPLITER|')
					skip = 1
					section = 1
				elif '|SECTION|' in url:
					matcher = url.replace('|SECTION|','')
					section = 1
				else: 
					section = 0
			except: section = 0
			link = 'https://t2k-repository.ml/IT/IT/tRmKGjTbr/xmls/clowns.xml'
			if skip == 0:
				if section == 1:
					keyboard = control.keyboard('', control.lang(30702))
					keyboard.doModal()
					if not (keyboard.isConfirmed()): return
					url = keyboard.getText()
					keep = url + '|SPLITER|' + matcher
				else:
					if (url is None or url == ''):
						keyboard = control.keyboard('', control.lang(30702))
						keyboard.doModal()
						if not (keyboard.isConfirmed()): return
						url = keyboard.getText()
			if (url is None or url == ''): return
			if section == 1: input = keep
			else: input = url
			def search(): return [input]
			query = cache.get(search, 600000000, table='rel_srch')
			def search(): return [x for y,x in enumerate((query + [input])) if x not in (query + [input])[:y]]
			cache.get(search, 0, table='rel_srch')
			links = client.request(link)
			links = re.findall(r'<link>(.+?)</link>', links)
			if section == 0: links = [i for i in links if str(i).startswith('http')]
			else: links = [i for i in links if str(i).startswith('http') and matcher.lower() in str(i).lower()]
			self.list = [] ; threads = []
			for link in links: threads.append(workers.Thread(self.it_list, link))
			[i.start() for i in threads]
			[i.join() for i in threads]
			self.list = [i for i in self.list if url.lower() in i['name'].lower()]
			for i in self.list:
				try:
					name = ''
					if not i['vip'] in ['No-Name TV']: name += '[B]%s[/B] | ' % i['vip'].upper()
					name += i['name']
					i.update({'name' : name})
				except: pass
			for i in self.list: i.update({'content': 'videos'})
			self.addDirectory(self.list)
Exemple #2
0
    def search(self, query=None):
        try:
            if control.infoLabel('Container.PluginName') == '':
                return control.dialog.ok('Exodus',
                                         control.lang(30518).encode('utf-8'),
                                         '', '')

            if not control.infoLabel('ListItem.Title') == '':
                self.query = control.window.getProperty(
                    '%s.movie.search' % control.addonInfo('id'))

            elif query == None:
                t = control.lang(30201).encode('utf-8')
                k = control.keyboard('', t)
                k.doModal()
                self.query = k.getText() if k.isConfirmed() else None

            else:
                self.query = query

            if (self.query == None or self.query == ''): return

            control.window.setProperty(
                '%s.movie.search' % control.addonInfo('id'), self.query)

            url = self.search_link % urllib.quote_plus(self.query)
            self.list = cache.get(self.trakt_list, 0, url, self.trakt_user)

            self.worker()
            self.movieDirectory(self.list)
            return self.list
        except:
            return
 def search_new(self):
     k = control.keyboard('', control.lang(32010))
     k.doModal()
     query = k.getText() if k.isConfirmed() else None
     if not query: return control.closeAll()
     try:
         from sqlite3 import dbapi2 as database
     except ImportError:
         from pysqlite2 import dbapi2 as database
     try:
         dbcon = database.connect(control.searchFile)
         dbcur = dbcon.cursor()
         dbcur.execute('''INSERT INTO easynews VALUES (?,?)''',
                       (None, query))
         dbcur.connection.commit()
     except:
         from resources.lib.modules import log_utils
         log_utils.error()
     finally:
         dbcur.close()
         dbcon.close()
     control.closeAll()
     control.execute(
         'ActivateWindow(Videos,plugin://plugin.video.venom/?action=en_searchResults&query=%s,return)'
         % quote_plus(query))
def captcha_resolve(response, cap_cookie):
    import os
    from resources.lib.modules import client
    from resources.lib.modules import control

    try:
        i = os.path.join(control.dataPath, 'img')
        f = control.openFile(i, 'w')
        f.write(client.request(response, cookie=cap_cookie))
        f.close()
        f = control.image(450, 5, 375, 115, i)
        d = control.windowDialog
        d.addControl(f)
        control.deleteFile(i)
        d.show()
        t = ''
        k = control.keyboard('', t)
        k.doModal()
        c = k.getText() if k.isConfirmed() else None
        if c == '': c = None
        d.removeControl(f)
        d.close()
        return c
    except:
        return
Exemple #5
0
 def rename(self, type, folder_id=None, folder_name=None):
     try:
         if type == 'folder':
             url = folder_rename_url
             t = control.lang(40049) % type
         else:
             if not control.yesnoDialog(
                     control.lang(40049) % folder_name +
                     ': [B](YOU MUST ENTER MATCHING FILE EXT.)[/B]', '',
                     ''):
                 return
             url = item_rename_url
             t = control.lang(
                 40049
             ) % type + ': [B](YOU MUST ENTER MATCHING FILE EXT.)[/B]'
         k = control.keyboard('', t)
         k.doModal()
         q = k.getText() if k.isConfirmed() else None
         if not q: return
         data = {'id': folder_id, 'name': q}
         response = self._post(url, data=data)
         if not response: return
         if 'status' in response:
             if response.get('status') == 'success': control.refresh()
     except:
         log_utils.error()
    def search(self, query=None):
        if query is None:
            keydialog = control.keyboard('', "Enter Search")
            keydialog.doModal()
            self.query = keydialog.getText() if keydialog.isConfirmed() else None
        else:
            self.query = query

        if self.query is None or self.query is '':
            return

        if query is None:
            control.execute("Container.Update(%s?action=search&query=%s, false)" % (sys.argv[0], self.query))
            return

        result = client.request("http://www.masterani.me/api/anime/search?search=%s&sb=true" % self.query)
        result = json.loads(result)

        print result

        if len(result) is 0:
            return

        for i in result:
            self.list.append({'anime_id': i['id'], 'status': 1})

        self.worker()
        self.add_directory(self.list)
Exemple #7
0
def _get_keyboard(default="", heading="", hidden=False):

    keyboard = control.keyboard(default, heading, hidden)
    keyboard.doModal()
    if keyboard.isConfirmed():
        return unicode(keyboard.getText(), "utf-8")
    return default
Exemple #8
0
    def search(self, query=None):
        try:
            if not control.infoLabel('ListItem.Title') == '':
                self.query = control.window.getProperty(
                    '%s.tvshow.search' % control.addonInfo('id'))

            elif query == None:
                t = control.lang(30231).encode('utf-8')
                k = control.keyboard('', t)
                k.doModal()
                self.query = k.getText() if k.isConfirmed() else None
            else:
                self.query = query

            if (self.query == None or self.query == ''): return

            control.window.setProperty(
                '%s.tvshow.search' % control.addonInfo('id'), self.query)

            url = self.search_link % urllib.quote_plus(self.query)
            self.list = cache.get(self.trakt_list, 0, url)

            self.worker()
            self.tvshowDirectory(self.list)
            return self.list
        except:
            return
Exemple #9
0
    def search(self, query=None):
        if query is None:
            keydialog = control.keyboard('', "Enter Search")
            keydialog.doModal()
            self.query = keydialog.getText() if keydialog.isConfirmed(
            ) else None
        else:
            self.query = query

        if self.query is None or self.query is '':
            return

        if query is None:
            control.execute(
                "Container.Update(%s?action=search&query=%s, false)" %
                (sys.argv[0], self.query))
            return

        result = client.request(
            "http://www.masterani.me/api/anime/search?search=%s&sb=true" %
            self.query)
        result = json.loads(result)

        print result

        if len(result) is 0:
            return

        for i in result:
            self.list.append({'anime_id': i['id'], 'status': 1})

        self.worker()
        self.add_directory(self.list)
    def search(self, query=None):
        if query is None:
            keydialog = control.keyboard('', "Enter Search")
            keydialog.doModal()
            self.query = keydialog.getText() if keydialog.isConfirmed() else None
        else:
            self.query = query

        if self.query is None or self.query is '': return

        result = client.request("https://www.masterani.me/api/anime/filter?search=%s&order=relevance_desc&page=1&detailed=1" % self.query)
        try:
            result = json.loads(result)
            result = result['data']
        except:
            xbmcgui.Dialog().notification("Masterani Redux", "No results for \"%s\"." % self.query)

        print result

        if len(result) is 0:
            return        
        
        items = masterani.extract_data_from_filter_list(result)

        #self.worker()
        self.add_directory(items)
Exemple #11
0
def _get_keyboard(default="", heading="", hidden=False):

    keyboard = control.keyboard(default, heading, hidden)
    keyboard.doModal()
    if keyboard.isConfirmed():
        return six.ensure_text(keyboard.getText())
    return default
	def search_new(self):
# need fix for when context menu returns here brings keyboard input back up
		t = control.lang(32010)
		k = control.keyboard('', t)
		k.doModal()
		q = k.getText() if k.isConfirmed() else None
		if not q: return
		try: from sqlite3 import dbapi2 as database
		except ImportError: from pysqlite2 import dbapi2 as database
		try:
			dbcon = database.connect(control.searchFile)
			dbcur = dbcon.cursor()
			dbcur.execute("INSERT INTO movies VALUES (?,?)", (None, q))
			# dbcur.execute("INSERT INTO movies VALUES (?,?)", (None, py_tools.ensure_text(q))) # ensure_text?, search of BRÜNO not saved to db in 18?
			dbcur.connection.commit()
		except:
			log_utils.error()
		finally:
			dbcur.close() ; dbcon.close()
		url = self.search_link + quote_plus(q)
		if control.getKodiVersion() >= 18:
			self.get(url)
		else:
			url = '%s?action=moviePage&url=%s' % (argv[0], quote_plus(url))
			control.execute('Container.Update(%s)' % url)
Exemple #13
0
    def cartoons(self, url):
        try:
            if url == self.cartoonsearch_link:
                k = control.keyboard('', '')
                k.setHeading(control.infoLabel('ListItem.Label'))
                k.doModal()
                if k.getText() == '' or not k.isConfirmed(): return
                url = self.cartoonsearch_link % urllib.quote_plus(
                    k.getText().split()[0])

            self.list = cache.get(self.cartoon_list, 0, url)

            for i in self.list:
                i.update({
                    'nextaction':
                    'phtoons.cartoons',
                    'nexticon':
                    self.cartoons_image % (random.randint(1, 10)),
                    'nextfanart':
                    self.cartoons_fanart
                })

            for i in self.list:
                i.update({'action': 'phtoons.cartoonstreams'})
            for i in self.list:
                i.update({'fanart': self.cartoons_fanart})

            self.addDirectory(self.list)
            return self.list
        except:
            pass
Exemple #14
0
	def person(self):
		k = control.keyboard('', control.lang(32010))
		k.doModal()
		q = k.getText().strip() if k.isConfirmed() else None
		if not q: return
		url = self.persons_link + quote_plus(q)
		self.persons(url)
Exemple #15
0
 def search_new(self):
     control.hide()
     t = control.lang(32010)
     k = control.keyboard('', t)
     k.doModal()
     q = k.getText() if k.isConfirmed() else None
     if not q: return
     try:
         from sqlite3 import dbapi2 as database
     except:
         from pysqlite2 import dbapi2 as database
     try:
         dbcon = database.connect(control.searchFile)
         dbcur = dbcon.cursor()
         dbcur.execute("INSERT INTO furk VALUES (?,?)", (None, q))
         dbcur.connection.commit()
     except:
         log_utils.error()
     finally:
         dbcur.close()
         dbcon.close()
     url = quote_plus(q)
     if control.getKodiVersion() >= 18:
         self.furk_meta_search(url)
     else:
         url = '%s?action=furkMetaSearch&url=%s' % (sys.argv[0],
                                                    quote_plus(url))
         control.execute('Container.Update(%s)' % url)
Exemple #16
0
    def search(self, query=None):
        if control.infoLabel('Container.PluginName') == '':
            return control.dialog.ok('Exodus',
                                     control.lang(30518).encode('utf-8'), '',
                                     '')

        if not control.infoLabel('ListItem.Title') == '':
            self.query = control.window.getProperty('%s.channel.search' %
                                                    control.addonInfo('id'))

        elif query == None:
            t = control.lang(30201).encode('utf-8')
            k = control.keyboard('', t)
            k.doModal()
            self.query = k.getText() if k.isConfirmed() else None

        else:
            self.query = query

        if (self.query == None or self.query == ''): return

        control.window.setProperty(
            '%s.channel.search' % control.addonInfo('id'), self.query)

        response = get(
            control.apollo_static_link +
            'search.php?type=livetv&search=%s' % urllib.quote_plus(self.query),
            verify=False)
        data = json.loads(response.text)

        for channel in data['result']:
            try:
                self.list.append({
                    'id':
                    str(channel['id']),
                    'name':
                    str(channel['name'].encode('utf-8')),
                    'title':
                    '',
                    'hd':
                    str(channel['hd']),
                    'url':
                    'plugin://' + control.addon().getAddonInfo('id') +
                    '/?action=apollo&imdb=9999&season=%s&title=%s' %
                    (channel['id'], channel['id']),
                    'poster':
                    str(channel['logo'])
                })
            except:
                print "####### ERROR Getting List from Server: %s %s" % (str(
                    channel['id']), channel)
                pass

        try:
            self.list = sorted(self.list, key=lambda k: k['name'])
        except:
            pass

        self.channelDirectory(self.list, 99)
        return self.list
Exemple #17
0
    def search(self, query=None):
        if query is None:
            keydialog = control.keyboard('', "Enter Search")
            keydialog.doModal()
            self.query = keydialog.getText() if keydialog.isConfirmed(
            ) else None
        else:
            self.query = query

        if self.query is None or self.query is '': return

        result = client.request(
            "https://www.masterani.me/api/anime/filter?search=%s&order=relevance_desc&page=1&detailed=1"
            % self.query.replace(" ", "%20"))
        try:
            result = json.loads(result)
        except:
            xbmcgui.Dialog().notification(
                "Masterani Redux", "No results for \"%s\"." % self.query)

        print result

        if len(result) is 0:
            return

        items = masterani.extract_data_from_filter_list(result)

        #self.worker()
        self.add_directory(items)
Exemple #18
0
def listAdd(successNotification=True):
    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"
                      })

    try:
        slug = json.loads(result)['ids']['slug']
        if successNotification:
            control.notification(title=32070,
                                 message=33661,
                                 icon='INFO',
                                 sound=notificationSound)
        return slug
    except:
        control.notification(title=32070,
                             message=33584,
                             icon='iNFO',
                             sound=notificationSound)
        return None
Exemple #19
0
    def search(self, query=None):
        try:
            if control.infoLabel('Container.PluginName') == '':
                return control.dialog.ok('Exodus', control.lang(30518).encode('utf-8'), '', '')

            if not control.infoLabel('ListItem.Title') == '':
                self.query = control.window.getProperty('%s.movie.search' % control.addonInfo('id'))

            elif query == None:
                t = control.lang(30201).encode('utf-8')
                k = control.keyboard('', t) ; k.doModal()
                self.query = k.getText() if k.isConfirmed() else None

            else:
                self.query = query

            if (self.query == None or self.query == ''): return

            control.window.setProperty('%s.movie.search' % control.addonInfo('id'), self.query)

            url = self.search_link % urllib.quote_plus(self.query)
            self.list = cache.get(self.trakt_list, 0, url)

            self.worker()
            self.movieDirectory(self.list)
            return self.list
        except:
            return
Exemple #20
0
    def person(self):
        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t) ; k.doModal()
        q = k.getText().strip() if k.isConfirmed() else None
        if not q: return

        url = self.persons_link + urllib.quote_plus(q)
        self.persons(url)
Exemple #21
0
    def person(self):
        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t) ; k.doModal()
        q = k.getText().strip() if k.isConfirmed() else None
        if not q: return


        url = self.persons_link + urllib.quote_plus(q)
        self.persons(url)
    def addSearch(self, url=None):
        try:
            link = 'http://cosmix.offshorepastebin.com/Weblinks/adult/search.xml'

            if (url == None or url == ''):
                keyboard = control.keyboard(
                    '',
                    control.lang(30702).encode('utf-8'))
                keyboard.doModal()
                if not (keyboard.isConfirmed()): return
                url = keyboard.getText()

            if (url == None or url == ''): return

            def search():
                return [url]

            query = cache.get(search, 600000000, table='rel_srch')

            def search():
                return [
                    x for y, x in enumerate((query + [url]))
                    if x not in (query + [url])[:y]
                ]

            cache.get(search, 0, table='rel_srch')

            links = client.request(link)
            links = re.findall('<link>(.+?)</link>', links)
            links = [i for i in links if str(i).startswith('http')]

            self.list = []
            threads = []
            for link in links:
                threads.append(workers.Thread(self.jizzplanet_list, link))
            [i.start() for i in threads]
            [i.join() for i in threads]

            self.list = [
                i for i in self.list if url.lower() in i['name'].lower()
            ]

            for i in self.list:
                try:
                    name = ''
                    if not i['vip'] in ['jizzplanet TV']:
                        name += '[B]%s[/B] | ' % i['vip'].upper()
                    name += i['name']
                    i.update({'name': name})
                except:
                    pass

            for i in self.list:
                i.update({'content': 'videos'})
            self.addDirectory(self.list)
        except:
            pass
    def getText(self, title, hidden=False):
        entered_text = ''
        keyb = control.keyboard('', title, hidden)
        keyb.doModal()

        if (keyb.isConfirmed()):
            entered_text = keyb.getText()

        return entered_text
Exemple #24
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)
Exemple #25
0
def searchApp():

    k = control.keyboard('', 'Search APP')
    k.doModal()
    q = k.getText() if k.isConfirmed() else None

    if (q == None or q == ''): return
    query = '/apps/search/query=%s/limit=50' % q
    url = aptoide_API + query
    getAppsUrl(url)
Exemple #26
0
    def addSearch(self, url=None):
        try:
            link = 'http://brettusbuilds.com/.WHITE%20DEVIL/SEARCH/SEARCH.XML'

            if (url == None or url == ''):
                keyboard = control.keyboard(
                    '',
                    control.lang(30702).encode('utf-8'))
                keyboard.doModal()
                if not (keyboard.isConfirmed()): return
                url = keyboard.getText()

            if (url == None or url == ''): return

            def search():
                return [url]

            query = cache.get(search, 600000000, table='rel_srch')

            def search():
                return [
                    x for y, x in enumerate((query + [url]))
                    if x not in (query + [url])[:y]
                ]

            cache.get(search, 0, table='rel_srch')

            links = client.request(link)
            links = re.findall('<link>(.+?)</link>', links)
            links = [i for i in links if str(i).startswith('http')]

            self.list = []
            threads = []
            for link in links:
                threads.append(workers.Thread(self.streams_list, link))
            [i.start() for i in threads]
            [i.join() for i in threads]

            self.list = [
                i for i in self.list if url.lower() in i['name'].lower()
            ]

            for i in self.list:
                try:
                    name = ''
                    if not i['vip'] in ['streams TV']:
                        name += '[B]%s[/B] | ' % i['vip'].upper()
                    name += i['name']
                    i.update({'name': name})
                except:
                    pass

            self.addDirectory(self.list, mode=False)
        except:
            pass
    def searchMenu(self):
        control.idle()

        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t); k.doModal()
        q = k.getText() if k.isConfirmed() else None

        if q is None or q == '': return

        url = '%s?action=search&q=%s&page=1' % (sys.argv[0], urllib.quote_plus(q))
        control.execute('Container.Update(%s)' % url)
    def searchMenu(self):

        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t)
        k.doModal()
        q = k.getText()

        if not k.isConfirmed():
            return

        self.search(q)
Exemple #29
0
def renameItem(title, id, type):
	data = {'id': id , 'type': type}
	if type == 'folder': renameUrl = '/api/folder/rename'
	elif type == 'torrent': renameUrl = '/api/transfer/rename'
	else: renameUrl = premiumizeRenameItem
	k = control.keyboard(title, 'Rename Item') ; k.doModal()	
	q = k.getText() if k.isConfirmed() else None
	if (q == None or q == ''): return
	data['name'] = q
	url = urlparse.urljoin(premiumize_Api, renameUrl) 
	r = reqJson(url, data=data)
	control.refresh()
Exemple #30
0
    def search_new(self):
        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t) ; k.doModal()
        q = k.getText().strip() if k.isConfirmed() else None
        if not q: return

        search_history = control.setting('moviesearch')
        if q not in search_history.split('\n'):
            control.setSetting('moviesearch', q + '\n' + search_history)

        url = self.search_link + urllib.quote_plus(q)
        self.get(url)
Exemple #31
0
	def traktSearchLists(self, media_type):
		k = control.keyboard('', getLS(32010))
		k.doModal()
		q = k.getText() if k.isConfirmed() else None
		if not q: return control.closeAll()
		page_limit = getSetting('page.item.limit')
		url = 'https://api.trakt.tv/search/list?limit=%s&page=1&query=' % page_limit + quote_plus(q)
		control.closeAll()
		if media_type == 'movies':
			control.execute('ActivateWindow(Videos,plugin://plugin.video.venom/?action=movies_PublicLists&url=%s,return)' % (quote_plus(url)))
		else:
			control.execute('ActivateWindow(Videos,plugin://plugin.video.venom/?action=tv_PublicLists&url=%s,return)' % (quote_plus(url)))
Exemple #32
0
    def search_new(self):
        t = control.lang(32010).encode('utf-8')
        k = control.keyboard('', t) ; k.doModal()
        q = k.getText().strip() if k.isConfirmed() else None
        if not q: return


        search_history = control.setting('moviesearch')
        if q not in search_history.split('\n'):
            control.setSetting('moviesearch', q + '\n' + search_history)


        url = self.search_link + urllib.quote_plus(q)
        self.get(url)
Exemple #33
0
def listAdd(successNotification=True):
	t = control.lang(32520)
	k = control.keyboard('', t) ; k.doModal()
	new = k.getText() if k.isConfirmed() else None
	if not new: return
	result = getTrakt('/users/me/lists', post = {"name" : new, "privacy" : "private"})
	try:
		slug = jsloads(result)['ids']['slug']
		if successNotification:
			control.notification(title=32070, message=33661)
		return slug
	except:
		control.notification(title=32070, message=33584)
		return None
Exemple #34
0
def ACsearch(url, image, fanart):
    keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
    keyboard.setHeading('CARTOON SEARCH')
    keyboard.doModal()
    if not keyboard.isConfirmed(): return

    search = keyboard.getText()
    search = re.sub(r'\W+|\s+','+', search)
    if search == '': return

    url = 'http://www.animedreaming.tv/search.php?searchquery='+search
    url = url.encode('utf-8')

    ACcat(url, image, fanart)
Exemple #35
0
    def search(self):
        try:
            control.idle()

            k = control.keyboard('', 'Zoeken') ; k.doModal()
            q = k.getText() if k.isConfirmed() else None

            if (q == None or q == ''): return

            url = self.search_link % (urllib.quote_plus(q))
            url = '%s?action=search_results&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.execute('Container.Update(%s)' % url)
        except:
            return
Exemple #36
0
def ACsearch(url, image, fanart):
    keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
    keyboard.setHeading(control.infoLabel('ListItem.Label'))
    keyboard.doModal()
    if not keyboard.isConfirmed(): return

    search = keyboard.getText()
    search = re.sub(r'\W+|\s+', '+', search)
    if search == '': return

    url = 'http://www.animedreaming.tv/search.php?searchquery=' + search
    url = url.encode('utf-8')

    ACcat(url, image, fanart)
Exemple #37
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
Exemple #38
0
def listAdd(successNotification = True):
	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']
		if successNotification:
			interface.Dialog.notification(title = 32515, message = 33661, icon = interface.Dialog.IconSuccess)
		return slug
	except:
		interface.Dialog.notification(title = 32515, message = 33584, icon = interface.Dialog.IconError)
		return None
Exemple #39
0
def ACsearch(url, image, fanart):
    keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
    keyboard.setHeading('CARTOON SEARCH')
    keyboard.doModal()
    if not keyboard.isConfirmed(): return

    search = keyboard.getText()
    search = re.sub(r'\W+|\s+','-', search)
    if search == '': return

    url = 'http://cartoons8.co/search/?s='+search
    url = url.encode('utf-8')
   
    
    ACcat(url, image, fanart)
Exemple #40
0
    def person(self):
        try:
            control.idle()

            t = control.lang(32010).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            q = k.getText() if k.isConfirmed() else None

            if (q == None or q == ''): return

            url = self.persons_link + urllib.quote_plus(q)
            url = '%s?action=moviePersons&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.execute('Container.Update(%s)' % url)
        except:
            return
Exemple #41
0
    def anime(self, url):
        try:
            if url == self.animesearch_link:
                k = control.keyboard('', '') ; k.setHeading(control.infoLabel('ListItem.Label')) ; k.doModal()
                if k.getText() == '' or not k.isConfirmed(): return
                url = self.animesearch_link % urllib.quote_plus(k.getText())

            self.list = cache.get(self.anime_list, 0, url)

            for i in self.list: i.update({'action': 'phtoons.animestreams'})
            for i in self.list: i.update({'fanart': self.anime_fanart})

            self.addDirectory(self.list)
            return self.list
        except:
            pass
Exemple #42
0
    def search_new(self):
            t = control.lang(32010).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            q = k.getText().strip() if k.isConfirmed() else None
            if not q: return
            if (q == None or q == ''): return

            try: from sqlite3 import dbapi2 as database
            except: from pysqlite2 import dbapi2 as database

            dbcon = database.connect(control.searchFile)
            dbcur = dbcon.cursor()
            dbcur.execute("INSERT INTO movies VALUES (?,?)", (None,q))
            dbcon.commit()
            dbcur.close()
            url = self.search_link + urllib.quote_plus(q)
            self.get(url)
Exemple #43
0
    def cartoons(self, url):
        try:
            if url == self.cartoonsearch_link:
                k = control.keyboard('', '') ; k.setHeading(control.infoLabel('ListItem.Label')) ; k.doModal()
                if k.getText() == '' or not k.isConfirmed(): return
                url = self.cartoonsearch_link % urllib.quote_plus(k.getText().split()[0])

            self.list = cache.get(self.cartoon_list, 0, url)

            for i in self.list: i.update({'nextaction': 'phtoons.cartoons', 'nexticon': self.cartoons_image % (random.randint(1,10)), 'nextfanart': self.cartoons_fanart})

            for i in self.list: i.update({'action': 'phtoons.cartoonstreams'})
            for i in self.list: i.update({'fanart': self.cartoons_fanart})

            self.addDirectory(self.list)
            return self.list
        except:
            pass
Exemple #44
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
Exemple #45
0
    def person(self, query=None):
        try:
            if query == None:
                t = control.lang(30201).encode('utf-8')
                k = control.keyboard('', t) ; k.doModal()
                self.query = k.getText() if k.isConfirmed() else None
            else:
                self.query = query

            if (self.query == None or self.query == ''): return

            url = self.persons_link % urllib.quote_plus(self.query)
            self.list = cache.get(self.imdb_person_list, 0, url)

            for i in range(0, len(self.list)): self.list[i].update({'action': 'movies'})
            self.addDirectory(self.list)
            return self.list
        except:
            return
Exemple #46
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
Exemple #47
0
    def search_new(self):
            control.idle()

            t = control.lang(32010).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            q = k.getText() if k.isConfirmed() else None

            if (q == None or q == ''): return

            try: from sqlite3 import dbapi2 as database
            except: from pysqlite2 import dbapi2 as database

            dbcon = database.connect(control.searchFile)
            dbcur = dbcon.cursor()
            dbcur.execute("INSERT INTO furk VALUES (?,?)", (None,q))
            dbcon.commit()
            dbcur.close()
            url = urllib.quote_plus(q)
            url = '%s?action=furkMetaSearch&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.execute('Container.Update(%s)' % url)
Exemple #48
0
    def person(self, query=None):
        try:
            control.idle()

            sysloc = [urlparse.urlparse(sys.argv[0]).netloc, 'plugin.program.super.favourites' ]

            sysplg = True if control.infoLabel('Container.PluginName') in sysloc else False

            if query == None:
                t = control.lang(32010).encode('utf-8')
                k = control.keyboard('', t) ; k.doModal()
                query = k.getText() if k.isConfirmed() else None

            if (query == None or query == '' or sysplg == False): return

            url = self.persons_link + urllib.quote_plus(query)
            url = '%s?action=moviePersons&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            control.execute('Container.Update(%s)' % url)
        except:
            return
Exemple #49
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
    def search_new(self):
            control.idle()

            t = control.lang(32010).encode('utf-8')
            k = control.keyboard('', t) ; k.doModal()
            q = k.getText() if k.isConfirmed() else None

            if (q == None or q == ''): return

            #try: from sqlite3 import dbapi2 as database
            #except: from pysqlite2 import dbapi2 as database

            #dbcon = database.connect(control.searchFile)
            #dbcur = dbcon.cursor()
            #dbcur.execute("INSERT INTO movies VALUES (?,?)", (None,q))
            #dbcon.commit()
            #dbcur.close()
            url = self.search_link + q.replace(" ", "+")
            #url = '%s?action=moviePage&url=%s' % (sys.argv[0], urllib.quote_plus(url))
            #control.execute('Container.Update(%s)' % url)
            movies().get(url)
Exemple #51
0
    def addSearch(self, url=None):
        try:
            link = 'http://phoenixtv.offshorepastebin.com/main/search.xml'

            if (url == None or url == ''):
                keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
                keyboard.doModal()
                if not (keyboard.isConfirmed()): return
                url = keyboard.getText()

            if (url == None or url == ''): return

            def search(): return [url]
            query = cache.get(search, 600000000, table='rel_srch')
            def search(): return [x for y,x in enumerate((query + [url])) if x not in (query + [url])[:y]]
            cache.get(search, 0, table='rel_srch')

            links = client.request(link)
            links = re.findall('<link>(.+?)</link>', links)
            links = [i for i in links if str(i).startswith('http')]

            self.list = [] ; threads = [] 
            for link in links: threads.append(workers.Thread(self.streamhub_list, link))
            [i.start() for i in threads] ; [i.join() for i in threads]

            self.list = [i for i in self.list if url.lower() in i['name'].lower()]

            for i in self.list:
                try:
                    name = ''
                    if not i['vip'] in ['Phoenix TV']: name += '[B]%s[/B] | ' % i['vip'].upper()
                    name += i['name']
                    i.update({'name' : name})
                except:
                    pass

            for i in self.list: i.update({'content': 'videos'})
            self.addDirectory(self.list)
        except:
            pass
Exemple #52
0
def authTrakt():
    try:
        if getTraktCredentialsInfo() == True:
            if control.yesnoDialog(control.lang(30479).encode('utf-8'), control.lang(30481).encode('utf-8'), '', 'Trakt', control.lang(30483).encode('utf-8'), control.lang(30482).encode('utf-8')):
                control.setSetting(id='trakt.user', value='')
                control.setSetting(id='trakt.token', value='')
                control.setSetting(id='trakt.refresh', value='')
            raise Exception()

        if control.yesnoDialog(control.lang(30484).encode('utf-8') + '[COLOR skyblue]http://trakt.tv/pin/7920[/COLOR]', control.lang(30485).encode('utf-8'), control.lang(30486).encode('utf-8'), 'Trakt', control.lang(30487).encode('utf-8'), control.lang(30488).encode('utf-8')): raise Exception()

        k = control.keyboard('', control.lang(30487).encode('utf-8'))
        k.doModal() ; pin = k.getText() if k.isConfirmed() else None
        if pin == '' or pin == None: raise Exception()

        trakt_base = 'http://api-v2launch.trakt.tv'

        headers = {'Content-Type': 'application/json', 'trakt-api-key': 'c029c80fd3d3a5284ee820ba1cf7f0221da8976b8ee5e6c4af714c22fc4f46fa', 'trakt-api-version': '2'}

        post = {'client_id': 'c029c80fd3d3a5284ee820ba1cf7f0221da8976b8ee5e6c4af714c22fc4f46fa', 'client_secret': '90a1840447a1e39d350023263902fe7010338d19789e6260f18df56a8b07a68a', 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', 'grant_type': 'authorization_code', 'code': pin}

        result = client.request(urlparse.urljoin(trakt_base, '/oauth/token'), post=json.dumps(post), headers=headers)
        result = json.loads(result)

        token, refresh = result['access_token'], result['refresh_token']

        headers['Authorization'] = 'Bearer %s' % token

        result = client.request(urlparse.urljoin(trakt_base, '/users/me'), headers=headers)
        result = json.loads(result)

        user = result['username']

        control.setSetting(id='trakt.user', value=user)
        control.setSetting(id='trakt.token', value=token)
        control.setSetting(id='trakt.refresh', value=refresh)
        raise Exception()
    except:
        control.openSettings('3.1')
Exemple #53
0
def implementsearch():
    from resources.lib.modules import control;

    try:

        control.idle();

        title = control.lang(32726).encode('utf-8');
        kb = control.keyboard('', title); 
        
        kb.doModal();
        
        text = kb.getText() if kb.isConfirmed() else None;

        if (text == None or text == ''): 
            return None;

        else:
            return text;

    except Exception as inst:
        logger.error(inst);

        return None;
Exemple #54
0
def searchDirectory(query=None):
    if (query == None or query == ''):
        keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
        keyboard.doModal()
        if not (keyboard.isConfirmed()): return
        query = keyboard.getText()

    if (query == None or query == ''): return

    def search(): return [query]
    result = cache.get(search, 600000000, table='rel_srch')
    def search(): return [x for y,x in enumerate((result + [query])) if x not in (result + [query])[:y]]
    result = cache.get(search, 0, table='rel_srch')


    global global_search ; global_search = []

    def worker(url):
        global_search.append(str(client.request(url)))

    servers = client.request(phLink)
    servers = str(servers).replace('\n','')
    servers = re.findall('</name><link>(.+?)</link>', servers)
    servers = [urlparse.urlparse(i).netloc for i in servers]
    servers = [phSearch % i for i in servers if not 'mecca' in i]

    threads = []
    for server in servers: threads.append(workers.Thread(worker, server))
    [i.start() for i in threads]
    [i.join() for i in threads]

    urls = []
    for i in global_search:
        try: r = base64.b64decode(i)
        except: r = ''
        if '</' in r: urls += [r]
        else: urls += [i]

    global_search = []

    urls = [str(i).replace('\n','') for i in urls]
    urls = [re.findall('<link>(.+?)</link>', i)[:30] for i in urls]
    urls = sum(urls, [])

    threads = []
    for url in urls: threads.append(workers.Thread(worker, url))
    [i.start() for i in threads]
    [i.join() for i in threads]

    links = []
    for i in global_search:
        try: r = base64.b64decode(i)
        except: r = ''
        if '</' in r: links += [r]
        else: links += [i]

    global_search = []

    for link in links:
        try:
            link = str(link).replace('\r','').replace('\n','').replace('\t','').replace('&nbsp;','')

            try: fanart = re.findall('<fanart>(.+?)</fanart>', link)[0]
            except: fanart = '0'

            try: vip = re.findall('<poster>(.+?)</poster>', link)[0]
            except: vip = ''

            if vip == 'Team Phoenix': vip = ''

            try: content = re.findall('<meta>(.+?)</meta>', link)[0]
            except: content = '0'

            try: tvshow = re.findall('<tvshow>(.+?)</tvshow>', link)[0]
            except: tvshow = '0'

            if content in ['seasons', 'episodes'] and tvshow == '0':
                content = '0'


            dirs = re.compile('<dir>(.+?)</dir>').findall(link)

            for dir in dirs:
                try:
                    data = {}

                    name = re.findall('<name>(.+?)</name>', dir)[0]
                    name = cleantitle(name)

                    if not query.lower() in name.lower() : raise Exception()

                    url = re.findall('<link>(.+?)</link>', dir)[0]

                    try: image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0]
                    except: image = '0'

                    try: fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0]
                    except: fanart2 = fanart

                    if content =='tvshows':
                        try:
                            title = cleantitle(name).encode('utf-8')
                            data = {'title': title, 'tvshowtitle': title}
                        except:
                            pass

                    if re.search('[a-zA-Z]', vip): name += ' [COLOR orange]%s[/COLOR]' % vip

                    addDirectoryItem(name, url, 'ndmode', image, image, fanart2, '0', content, data)
                except:
                    pass


            items = re.compile('<item>(.+?)</item>').findall(link)

            for item in items:
                try:

                    data = {}

                    name = re.findall('<title>(.+?)</title>', item)[0]
                    name = cleantitle(name)

                    if not query.lower() in name.lower() : raise Exception()

                    url = re.findall('<link>(.+?)</link>', item)[0]

                    try: image = re.findall('<thumbnail>(.+?)</thumbnail>', item)[0]
                    except: image = '0'

                    try: fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0]
                    except: fanart2 = fanart

                    if content =='movies':
                        try:
                            title = cleantitle(name).encode('utf-8')
                            data = {'title': title}

                            title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0]
                            title = cleantitle(title).encode('utf-8')
                            data = {'title': title, 'year': year}
                        except:
                            pass

                    if re.search('[a-zA-Z]', vip): name += ' [COLOR orange]%s[/COLOR]' % vip

                    if 'sublink' in url:
                        addDirectoryItem(name, url, 'subDirectory', image, image, fanart2, '0', content, data, isFolder=True)
                    else:
                        addDirectoryItem(name, url, 'resolveUrl', image, image, fanart2, '0', content, data, isFolder=False)
                except:
                    pass
        except:
            pass

    control.directory(int(sys.argv[1]), cacheToDisc=True)
Exemple #55
0
	def addSearch(self, url):
	
			try:
				skip = 0
				if '|SPLITER|' in url:
					keep = url
					url,matcher = url.split('|SPLITER|')
					skip = 1
					section = 1
				elif '|SECTION|' in url:
					matcher = url.replace('|SECTION|','')
					section = 1
				else: 
					section = 0
			except: section = 0

			link = 'http://'

			if skip == 0:
				if section == 1:
					keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
					keyboard.doModal()
					if not (keyboard.isConfirmed()): return
					url = keyboard.getText()
					keep = url + '|SPLITER|' + matcher
				else:
					if (url == None or url == ''):
						keyboard = control.keyboard('', control.lang(30702).encode('utf-8'))
						keyboard.doModal()
						if not (keyboard.isConfirmed()): return
						url = keyboard.getText()

			if (url == None or url == ''): return

			if section == 1:
				input = keep
			else: 
				input = url
			def search(): return [input]
			query = cache.get(search, 600000000, table='rel_srch')

			def search(): return [x for y,x in enumerate((query + [input])) if x not in (query + [input])[:y]]
			cache.get(search, 0, table='rel_srch')

			links = client.request(link)
			links = re.findall('<link>(.+?)</link>', links)
			if section == 0: links = [i for i in links if str(i).startswith('http')]
			else: links = [i for i in links if str(i).startswith('http') and matcher.lower() in str(i).lower()]
			
			self.list = [] ; threads = [] 
			for link in links: threads.append(workers.Thread(self.noname_list, link))
			[i.start() for i in threads] ; [i.join() for i in threads]

			
			self.list = [i for i in self.list if url.lower() in i['name'].lower()]

			for i in self.list:
				try:
					name = ''
					if not i['vip'] in ['noname TV']: name += '[B]%s[/B] | ' % i['vip'].upper()
					name += i['name']
					i.update({'name' : name})
				except:
					pass

			for i in self.list: i.update({'content': 'videos'})
			self.addDirectory(self.list)