def search(self): query = common.getUserInput(self.language(1000), "") if query: if self.addon.getSetting('translit') == 'true': print "Module translit enabled" try: keyword = translit.rus(query) except Exception: keyword = translit.rus(query) else: keyword = query url = self.url + "/q/" + keyword + '/' self.getPlaylist(url)
def generate_nfo(category, media_title): if "(ts)" in category: return media_title_orig = media_title if TRANSLIT == "true": media_title = translit.eng(media_title) nfo = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>\n' nfo += '<movie>\n' nfo += " <title>" + encode_( encode_( media_title_orig.split('[')[0].split('(')[0].split('/') [0].strip())) + "</title>\n" year = get_media_year(media_title_orig) if year: nfo += " <year>" + year + "</year>\n" nfo += "</movie>\n" dirlib = os.path.join(DIRECTORY.decode("utf-8"), category) if not os.path.exists(dirlib): os.makedirs(dirlib) name = dirlib + "/" + encode_(media_title) + ".nfo" if os.path.exists(name) and (xbmcgui.Dialog().yesno( ".strm", "", "Exist .nfo file. Continue?") == False): return try: f = open(name, "w+") f.write(nfo + "\n") f.close() except Exception, e: xbmc.log('[%s]: WRITE EXCEPT [%s]' % (ID, e), 4) show_message(e) return
def Search(params): mode = params['mode'] if 'mode' in params else None kbd = xbmc.Keyboard() if mode == 'clips': kbd.setHeading("Поиск по клипам") else: kbd.setHeading("Поиск") kbd.doModal() uri = {} if kbd.isConfirmed(): query = kbd.getText() if use_translit: try: query = translit.rus(query) print 'detransified query: ' + query if debug_mode: ShowMessage(addon_name, 'Detransified search query: ' + query) except: pass query = urllib.quote_plus(query) else: return True if mode == 'clips': uri['url'] = '/load/' else: uri['url'] = '/board' uri['post'] = 'query=%s&a=2' % query uri['mode'] = 'search' ListCat(uri)
def getUserInput(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(1000)) kbd.doModal() keyword = None s = None if kbd.isConfirmed(): s = kbd.getText() if self.addon.getSetting('translit') == 'true': try: keyword = translit.rus(s) except:pass try: keyword = self.encode(keyword) except:keyword = s else: keyword = s words = [] history = self.addon.getSetting('history') if history: words = history.split(",") if keyword and keyword not in words: words.append(keyword) self.addon.setSetting('history', ','.join(words)) return keyword
def getUserInput(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(1000)) kbd.doModal() keyword = None s = None if kbd.isConfirmed(): s = kbd.getText() if self.addon.getSetting('translit') == 'true': try: keyword = translit.rus(s) except: pass try: keyword = self.encode(keyword) except: keyword = s else: keyword = s words = [] history = self.addon.getSetting('history') if history: words = history.split(",") if keyword and keyword not in words: words.append(keyword) self.addon.setSetting('history', ','.join(words)) return keyword
def search(self): query = common.getUserInput(self.language(1000), "") if query: if self.addon.getSetting('translit') == 'true': print "Module translit enabled" try: keyword = translit.rus(query).encode('utf-8','ignore') except Exception, e: keyword = translit.rus(query) else: keyword = query url =self.url + '/search/?q=' + urllib.quote_plus(keyword.replace(' ', '+')) self.getSongs(url)
def search(self): query = common.getUserInput(self.language(1000), "") if query: if self.addon.getSetting('translit') == 'true': print "Module translit enabled" try: keyword = translit.rus(query).encode('utf-8', 'ignore') except Exception, e: keyword = translit.rus(query) else: keyword = query url = self.url + '/search/?q=' + urllib.quote_plus( keyword.replace(' ', '+')) self.getSongs(url)
def gettranslit(msg): if use_translit == 'true': try: return translit.rus(msg) except: return msg else: return msg
def search(): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(language(2002)) kbd.doModal() keyword='' if kbd.isConfirmed(): keyword = kbd.getText() if Addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) path = "/do=search" # Advanced search: titles only values = { 'beforeafter' : 'after', 'catlist[]' : '0', 'do' : 'search', 'full_search' : '1', 'replyless' : '0', 'replylimit' : '0', 'resorder' : 'desc', 'result_from' : '1', 'result_num' : '30', 'search_start' : '1', 'searchdate' : '0', 'searchuser' : '', 'showposts' : '0', 'sortby' : 'date', 'subaction' : 'search', 'titleonly' : '3' } try: # Apple TV values['story'] = keyword data = urllib.urlencode(values) req = Request(BASE_URL+path, data) except UnicodeEncodeError: # Desktop values['story'] = keyword.encode('cp1251') data = urllib.urlencode(values) req = Request(BASE_URL+path, data) try: response = urlopen(req) except URLError, e: if hasattr(e, 'reason'): print 'We failed to reach a server.' print 'Reason: ', e.reason elif hasattr(e, 'code'): print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code
def generate_strm(category, media_title): media_title_orig = media_title if TRANSLIT == "true": media_title = translit.eng(media_title) path = xbmc.getInfoLabel('ListItem.FileNameAndPath') dirlib = os.path.join(DIRECTORY.decode("utf-8"), category.replace("(ts)", "").strip()) xbmc.log("dir=" + dirlib) xbmc.log("dir2=" + DIRECTORY) if not os.path.exists(dirlib): os.makedirs(dirlib) playable = '' if (PLAYABLE == "true") and ( (xbmc.getCondVisibility("ListItem.IsFolder") == False) or (xbmcgui.Dialog().yesno(".strm", "", "Is it playable content?") == True)): playable = '#' uri = playable + path action = "Generated " if ("(ts)" in category): namedir = dirlib + "/" + encode_(media_title) namefile = dirlib + "/" + encode_(media_title) + "/s1e1.strm" name = namedir if not os.path.exists(namedir): os.makedirs(namedir) else: if (xbmcgui.Dialog().yesno( ".strm", "", "Exist .strm file. Continue?") == False): return f = open(namefile, "r+") content = urllib.unquote_plus(f.read()) f.close() if (ID in content): if (xbmcgui.Dialog().yesno( ".strm", "", "Update existing .strm file?") == True): uri = update_uri(content, uri) action = "Updated " try: f = open(namefile, "w+") uri = "plugin://{0}?mode=run&uri={1}&title={2}".format( ID, urllib.quote_plus(uri), encode_( media_title_orig.split('[')[0].split('(')[0].split('/') [0].strip())) f.write(uri + "\n") f.close() except Exception, e: xbmc.log('[%s]: WRITE EXCEPT [%s]' % (ID, e), 4) show_message(e) return
def search(self, keyword, unified): print "*** Search: unified %s" % unified keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) print keyword url = 'http://www.videokub.com/search/?q=%s' % (keyword) response = urllib2.urlopen(url) #response = common.fetchPage({"link": url}) content = common.parseDOM(response.read(), "div", attrs={"class": "list_videos"}) videos = common.parseDOM(content, "div", attrs={"class": "short"}) links = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='href') titles = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='title') images = common.parseDOM(videos, "img", attrs={"class": "thumb"}, ret='src') durations = common.parseDOM(videos, "span", attrs={"class": "time"}) if unified: print "Perform unified search and return results" for i, title in enumerate(titles): title = self.encode(title) unified_search_results.append({'title': title, 'url': links[i], 'image': self.url + images[i], 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): duration = durations[i].split(':')[0] uri = sys.argv[0] + '?mode=show&url=%s' % urllib.quote(links[i]) item = xbmcgui.ListItem("%s [COLOR=55FFFFFF](%s)[/COLOR]" % (title, durations[i]), iconImage=images[i]) item.setInfo(type='Video', infoLabels={'title': title, 'genre': durations[i], 'duration': duration}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) # TODO: Fix search pagination # http://www.videokub.com/search/2/?q=%D0%B1%D0%B0%D1%80%D0%B1%D0%BE%D1%81%D0%BA&search=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8 #uri = sys.argv[0] + '?mode=%s&url=%s' % ("show", url) #item = xbmcgui.ListItem(self.language(1004), iconImage=self.inext) #xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self): import Translit as translit translit = translit.Translit(encoding='cp1251') kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(5000)) kbd.doModal() keyword = '' if kbd.isConfirmed(): keyword = kbd.getText() if self.addon.getSetting('translit') == 'true': print "*** Translit enabled keyword: %s" % keyword keyword = translit.rus(kbd.getText()) print "*** Transliteration: %s" % keyword.decode( 'cp1251').encode('utf-8') url = "http://film.psihov.net.ua/?action=search&searchstring=%s&name=on&originalname=on&page=0" % keyword self.getMovieList(url)
def getUserInput(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(4000)) kbd.doModal() keyword = None if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() return keyword
def getUserInput(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(1000)) kbd.doModal() keyword = None if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() return keyword
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: search_url = "http://kinosolo.ru/load/" # Advanced search: titles only values = { "a": 2, "do.x": 0, "do.y" : 0, "query": keyword, } # Send request to server request = urllib2.Request(search_url, urllib.urlencode(values)) response = urllib2.urlopen(request) movie = common.parseDOM(response.read(), "div", attrs={"class": "post"}) movie_header = common.parseDOM(movie, "div", attrs={"class": "post-title"}) movie_body = common.parseDOM(movie, "div", attrs={"class": "post-story"}) movie_footer = common.parseDOM(movie, "div", attrs={"class": "post-data"}) titles = common.parseDOM(movie_header, "a") links = common.parseDOM(movie_header, "a", ret="href") images = common.parseDOM(movie_body, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): title = title.replace(self.language(5002), '') unified_search_results.append({'title': title, 'url': links[i], 'image': images[i], 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): title = title.replace(self.language(5002), '') uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(title, thumbnailImage=images[i]) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, unified): print "*** Search: unified %s" % unified keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) print keyword url = 'http://www.videokub.com/search/?q=%s' % (keyword) response = urllib2.urlopen(url) content = common.parseDOM(response.read(), "div", attrs={"class": "list_videos"}) videos = common.parseDOM(content, "div", attrs={"class": "short"}) links = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='href') titles = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='title') images = common.parseDOM(videos, "img", attrs={"class": "thumb"}, ret='src') durations = common.parseDOM(videos, "span", attrs={"class": "time"}) if unified: print "Perform unified search and return results" for i, title in enumerate(titles): title = self.encode(title) unified_search_results.append({'title': title, 'url': links[i], 'image': self.url + images[i], 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): duration = durations[i].split(':')[0] link = '88.150.243.226/vod/Skhvatka.1995.mp4/playlist.m3u8?token=3c076648ea987c21cf58a970f47fa4a5' uri = sys.argv[0] + '?mode=show&url=%s' % urllib.quote(links[i]) item = xbmcgui.ListItem("%s [COLOR=55FFFFFF](%s)[/COLOR]" % (title, durations[i]), iconImage=images[i]) item.setInfo(type='Video', infoLabels={'title': title, 'genre': durations[i], 'duration': duration}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(2000)) kbd.doModal() keyword = '' if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() serach_url = "%s?s=%s" % (self.url, urllib.quote(keyword)) self.getCategoryItems(serach_url, 1) else: self.menu()
def previous_results(self): self.log("Show search result") search_results = self.search_db.all() if search_results: for i, result in enumerate(search_results): uri = '%s?mode=show&search_id=%d' % (self.xpath, result['id']) item = xbmcgui.ListItem("%02d. %s [%d]" % (result['id'], translit.rus(result['keyword']), result['counter']), thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem("[COLOR=FFFF4000]%s[/COLOR]" % self.language(2001)) item.setProperty('IsPlayable', 'false') xbmcplugin.addDirectoryItem(self.handle, '', item, False) xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True)
def search(self, keyword): keyword = self.get_user_input() if keyword: self.log("Call other add-ons and pass keyword: %s" % keyword) # INFO: Generate new search id and save it self.search_id = self.search_db.new(keyword) keyword = translit.eng(keyword) if self.isCyrillic(keyword) else keyword for i, plugin in enumerate(self.supported_addons): script = "special://home/addons/%s/default.py" % plugin xbmc.executebuiltin("XBMC.RunScript(%s, %d, mode=search&keyword=%s&unified=True)" % (script, self.handle, keyword), False) # INFO: None means show please wait ... # self.show(None) # print len(self.supported_addons) self.notify(self.language(1000).encode('utf-8'), self.language(2000).encode('utf-8'))
def previous_results(self): self.log("Show search result") search_results = self.search_db.all() if search_results: for i, result in enumerate(search_results): uri = "%s?mode=show&search_id=%d" % (self.xpath, result["id"]) item = xbmcgui.ListItem( "%02d. %s [%d]" % (result["id"], translit.rus(result["keyword"]), result["counter"]), thumbnailImage=self.icon, ) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem("[COLOR=FFFF4000]%s[/COLOR]" % self.language(2001)) item.setProperty("IsPlayable", "false") xbmcplugin.addDirectoryItem(self.handle, "", item, False) xbmc.executebuiltin("Container.SetViewMode(50)") xbmcplugin.endOfDirectory(self.handle, True)
def search(self): import Translit as translit translit = translit.Translit(encoding='cp1251') kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(5000)) kbd.doModal() keyword='' if kbd.isConfirmed(): keyword = kbd.getText() if self.addon.getSetting('translit') == 'true': print "*** Translit enabled keyword: %s"%keyword keyword = translit.rus(kbd.getText()) print "*** Transliteration: %s"%keyword.decode('cp1251').encode('utf-8') url = "http://film.psihov.net.ua/?action=search&searchstring=%s&name=on&originalname=on&page=0"%keyword self.getMovieList(url)
def Search(params): mode = params['mode'] if 'mode' in params else None kbd = xbmc.Keyboard() if mode == 'clips': kbd.setHeading("Поиск по клипам") else: kbd.setHeading("Поиск") kbd.doModal() uri = {} if kbd.isConfirmed(): query = kbd.getText() if use_translit: try: query = translit.rus(query) print 'detransified search query: ' + query except: pass query = urllib.quote_plus(query) else: return True if mode == 'clips': uri['url'] = '/load/' else: uri['url'] = '/board' uri['post'] = 'query=%s&a=2' % query uri['mode'] = 'search' ListCat(uri)
def search(self, keyword): keyword = self.get_user_input() if keyword: self.log("Call other add-ons and pass keyword: %s" % keyword) # INFO: Generate new search id and save it self.search_id = self.search_db.new(keyword) keyword = translit.eng(keyword) if self.isCyrillic(keyword) else keyword for i, plugin in enumerate(self.supported_addons): script = "special://home/addons/%s/default.py" % plugin xbmc.executebuiltin( "XBMC.RunScript(%s, %d, mode=search&keyword=%s&unified=True)" % (script, self.handle, keyword), False, ) # INFO: None means show please wait ... # self.show(None) # print len(self.supported_addons) self.notify(self.language(1000).encode("utf-8"), self.language(2000).encode("utf-8"))
def search(self, keyword): external = False if keyword: external = True keyword = urllib.unquote_plus(keyword) else: keyword = self.get_user_input() if keyword: self.log("Call other add-ons and pass keyword: %s" % keyword) # INFO: Generate new search id and save it self.search_id = self.search_db.new(keyword) keyword = translit.eng(keyword) if self.isCyrillic(keyword) else keyword for i, plugin in enumerate(self.supported_addons): script = "special://home/addons/%s/default.py" % plugin xbmc.executebuiltin("XBMC.RunScript(%s, %d, mode=search&keyword=%s&unified=True)" % (script, self.handle, keyword), True) self.notify(self.language(1000).encode('utf-8'), self.language(2000).encode('utf-8')) checkEnd = False timeout_ = 0 while (checkEnd == False): xbmc.sleep(CHECK_PERIOD) timeout_ += CHECK_PERIOD try: counter = self.search_db.get_counter(self.search_id) except: pass if (counter and (len(self.supported_addons) == counter)) or (timeout_ > self.timeout*1000): self.log("ALL DONE => %s of %d done" % (counter, len(self.supported_addons))) checkEnd = True; self.notify("Search", "Done") self.show(self.search_id, external)
def getUserInput(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(4000)) kbd.doModal() keyword = None if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() return keyword # def search(self, keyword, unified): self.log("*** Search: unified %s" % unified) keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://go.mail.ru/search_site?fr=main&p=1&aux=Abd67k&q=%s&x=0&y=0' % keyword request = urllib2.Request(url) request.add_header('Host', 'go.mail.ru') request.add_header('Referer', 'http://www.online-life.cc/') request.add_header('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0') response = urllib2.urlopen(request).read() container = common.parseDOM(response, "ul", attrs={"class": "result js-result"}) posts = common.parseDOM(container, "li", attrs={"class": "result__li js-kb-wrap"}) results = common.parseDOM(posts, "div", attrs={"class": "result__img"}) titles = common.parseDOM(posts, "a", attrs={"class": "light-link"}) links = common.parseDOM(results, "a", ret="href") images = common.parseDOM(results, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): title = titles[i].encode('utf-8') link = links[i] image = images[i] unified_search_results.append({'title': title, 'url': link, 'image': image, 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: if results: for i, title in enumerate(titles): title = titles[i].encode('utf-8') link = links[i] image = images[i] uri = sys.argv[0] + '?mode=show&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image) self.favorites.addContextMenuItem(item, { 'title': title, 'url': link, 'image': image, 'playable': False, 'action': 'add', 'plugin': self.id }) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') else: item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, external): keyword = keyword if (external != None) else self.getUserInput() keyword = translit.rus(keyword) if ( external == 'unified') else urllib.unquote_plus(keyword) unified_search_results = [] if keyword: url = self.url + '/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": 0, "do": "search", "full_search": 0, "replyless": 0, "replylimit": 0, "resorder": "desc", "result_from": 1, "search_start": 1, "searchdate": 0, "searchuser": "", "showposts": 0, "sortby": "date", "story": self.decode(keyword), "subaction": "search", "titleonly": 0 } headers = { "Host": self.domain, "Origin": self.domain, "Referer": self.url + '/', "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0" } # Send request to server request = urllib2.Request(url, urllib.urlencode(values), headers) response = urllib2.urlopen(request).read() content = common.parseDOM(response, "div", attrs={"id": "container"}) items = common.parseDOM(content, "div", attrs={"class": "item"}) link_container = common.parseDOM( items, "div", attrs={"class": "main-sliders-title"}) titles = common.parseDOM(link_container, "a") links = common.parseDOM(link_container, "a", ret="href") images = common.parseDOM(items, "img", ret="src") descs = common.parseDOM(items, "i") if (external == 'unified'): self.log("Perform unified search and return results") for i, title in enumerate(titles): image = images[i] if 'http' in images[ i] else self.url + images[i] unified_search_results.append({ 'title': self.encode(self.strip(title)), 'url': links[i], 'image': image, 'plugin': self.id }) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): uri = sys.argv[0] + '?mode=show&url=%s' % links[i] image = images[i] if 'http' in images[ i] else self.url + images[i] item = xbmcgui.ListItem(self.encode(self.strip(title)), thumbnailImage=image) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmcplugin.setContent(self.handle, 'movies') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def USTranslit(self, keyword, transpar): return translit.rus(keyword) if (transpar == None) or (transpar == "true") else keyword
# -*- coding: utf-8 -*- import os import urllib import urllib2 import sys import xbmc import xbmcplugin import xbmcgui import xbmcaddon import re import XbmcHelpers common = XbmcHelpers import Translit as translit translit = translit.Translit(encoding='cp1251') from youtube import YouTubeParser class TeremokTv(): def __init__(self): self.id = 'plugin.video.teremok.tv' self.addon = xbmcaddon.Addon(self.id) self.icon = self.addon.getAddonInfo('icon') self.path = self.addon.getAddonInfo('path') self.profile = self.addon.getAddonInfo('profile') self.language = self.addon.getLocalizedString self.handle = int(sys.argv[1]) self.url = 'http://teremok.tv/'
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: self.log("You are looking for: %s" % keyword.decode('cp1251').encode('utf-8')) # Simple search # values = { # "do": "search", # "story": keyword, # "subaction": "search", # "x": 0, # "y": 0 # } # headers = { # "Host" : "filmodrom.net", # "Referer" : 'http://filmodrom.net/index.php', # "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0" # } # request = urllib2.Request(url, urllib.urlencode(values), headers) # response = urllib2.urlopen(request) # Advanced search: titles only url = 'http://filmodrom.net/index.php?do=search' headers = { "Host" : "filmodrom.net", "Referer" : 'http://filmodrom.net/index.php', "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0" } values = { "beforeafter": "after", "catlist[]": "0", "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "result_num": "20", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": keyword, "subaction": "search", "titleonly": 3 } request = urllib2.Request(url, urllib.urlencode(values), headers) # request = urllib2.Request(url, urllib.urlencode(values)) response = urllib2.urlopen(request) content = common.parseDOM(response.read(), "div", attrs={"id": "dle-content"}) table = common.parseDOM(content, "table") header = common.parseDOM(table, "strong") links = common.parseDOM(header, "a", ret="href") titles = common.parseDOM(header, "a") if titles: if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): unified_search_results.append({'title': self.encode(title), 'url': links[i], 'image': None, 'plugin': self.id}) else: for i, title in enumerate(titles): uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem(self.language(2001).encode('utf-8'), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) UnifiedSearch().collect(unified_search_results) else: self.menu() xbmc.executebuiltin('Container.SetViewMode(52)') xbmcplugin.endOfDirectory(self.handle, True)
def search(self, keyword, external): keyword = keyword if (external != None) else self.getUserInput() keyword = translit.rus(keyword) if (external == 'unified') else urllib.unquote_plus(keyword) unified_search_results = [] if keyword: url = self.url + '/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": 0, "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "result_num": "50", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": self.decode(keyword), "subaction": "search", "titleonly": "3" } headers = { "Referer" : self.url + '/index.php?do=search', "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0" } data = urllib.urlencode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) containers = common.parseDOM(response.read(), "div", attrs={"class": "search_item clearfix"}) search_item_prev = common.parseDOM(containers, "div", attrs={"class": "search_item_prev"}) search_item_inner = common.parseDOM(containers, "div", attrs={"class": "search_item_inner"}) descriptions = common.parseDOM(search_item_inner, "div") header = common.parseDOM(search_item_inner, "h3") gcont = common.parseDOM(search_item_inner, "span") titles = common.parseDOM(header, "a") links = common.parseDOM(header, "a", ret="href") images = common.parseDOM(search_item_prev, "img", ret="src") if (external == 'unified'): self.log("Perform unified search and return results") for i, title in enumerate(titles): image = self.url + images[i] unified_search_results.append({'title': self.encode(title), 'url': links[i], 'image': image, 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): image = self.url + images[i] print image genres = self.encode(', '.join(common.parseDOM(gcont[i], "a"))) desc = self.encode(common.stripTags(descriptions[i])) uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), iconImage=self.icon, thumbnailImage=image) item.setInfo(type='Video', infoLabels={'title': self.encode(title), 'genre': genres, 'plot': desc}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmcplugin.setContent(self.handle, 'movies') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def USTranslit(keyword, external, transpar): if external == 'usearch': return urllib.unquote_plus(keyword) else: return translit.rus(keyword) if ((transpar == None) or (transpar == "true")) else keyword
def search(self, keyword, unified): print "*** Search: unified %s" % unified keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) url = 'http://www.videokub.me/search/?q=%s' % (keyword) response = urllib2.urlopen(url) content = common.parseDOM(response.read(), "div", attrs={"class": "list_videos"}) videos = common.parseDOM(content, "div", attrs={"class": "short"}) links = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='href') titles = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='title') images = common.parseDOM(videos, "img", attrs={"class": "thumb"}, ret='src') durations = common.parseDOM(videos, "span", attrs={"class": "time"}) if unified: print "Perform unified search and return results" for i, title in enumerate(titles): title = self.encode(title) unified_search_results.append({ 'title': title, 'url': links[i], 'image': self.url + images[i], 'plugin': self.id }) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): duration = durations[i].split(':')[0] uri = sys.argv[0] + '?mode=show&url=%s' % urllib.quote( links[i]) item = xbmcgui.ListItem("%s [COLOR=55FFFFFF](%s)[/COLOR]" % (title, durations[i]), iconImage=images[i]) item.setInfo(type='Video', infoLabels={ 'title': title, 'genre': durations[i], 'duration': duration }) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) # TODO: Fix search pagination # http://www.videokub.me/search/2/?q=%D0%B1%D0%B0%D1%80%D0%B1%D0%BE%D1%81%D0%BA&search=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8 #uri = sys.argv[0] + '?mode=%s&url=%s' % ("show", url) #item = xbmcgui.ListItem(self.language(1004), iconImage=self.inext) #xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, unified): self.log("*** Search: unified %s" % unified) keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://go.mail.ru/search_site?fr=main&p=1&aux=Abd67k&q=%s&x=0&y=0' % keyword request = urllib2.Request(url) request.add_header('Host', 'go.mail.ru') request.add_header('Referer', 'http://www.online-life.me/') request.add_header( 'User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0' ) response = urllib2.urlopen(request).read() container = common.parseDOM(response, "ul", attrs={"class": "result js-result"}) posts = common.parseDOM(container, "li", attrs={"class": "result__li js-kb-wrap"}) results = common.parseDOM(posts, "div", attrs={"class": "result__img"}) titles = common.parseDOM(posts, "a", attrs={"class": "light-link"}) links = common.parseDOM(results, "a", ret="href") images = common.parseDOM(results, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): title = titles[i].encode('utf-8') link = links[i] image = images[i] unified_search_results.append({ 'title': title, 'url': link, 'image': image, 'plugin': self.id }) UnifiedSearch().collect(unified_search_results) else: if results: for i, title in enumerate(titles): title = titles[i].encode('utf-8') link = links[i] image = images[i] uri = sys.argv[0] + '?mode=show&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image) self.favorites.addContextMenuItem( item, { 'title': title, 'url': link, 'image': image, 'playable': False, 'action': 'add', 'plugin': self.id }) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') else: item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def gettranslit(msg): if use_translit == 'true': return translit.rus(msg) else: return msg
def search(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(2000)) kbd.doModal() keyword = '' if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() print keyword.decode('cp1251').encode('utf-8') url = 'http://showday.tv/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": "0", "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": keyword, "subaction": "search", "titleonly": "3" } data = urllib.urlencode(values) request = urllib2.Request(url, data) response = urllib2.urlopen(request).read() container = common.parseDOM(response, "div", attrs={"id": "dle-content"}) blocks = common.parseDOM(container, "div", attrs={"class": "block"})[1:] if blocks: for i, block in enumerate(blocks): text_container = common.parseDOM(block, "div", attrs={"class": "text"}) img_cotainer = common.parseDOM(block, "div", attrs={"class": "image"}) title = self.encode( common.stripTags( common.parseDOM(text_container, "a")[0])) link = common.parseDOM(text_container, "a", ret="href")[0] image = common.parseDOM(img_cotainer, "img", ret="src")[0] uri = sys.argv[0] + '?mode=episode&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=self.url + image) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) else: self.menu() xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True)
def search(self, keyword, unified): print "*** Search: unified %s" % unified keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) print keyword url = 'http://www.videokub.com/search/?q=%s' % (keyword) response = urllib2.urlopen(url) content = common.parseDOM(response.read(), "div", attrs={"class": "list_videos"}) videos = common.parseDOM(content, "div", attrs={"class": "short"}) links = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='href') titles = common.parseDOM(videos, "a", attrs={"class": "kt_imgrc"}, ret='title') images = common.parseDOM(videos, "img", attrs={"class": "thumb"}, ret='src') durations = common.parseDOM(videos, "span", attrs={"class": "time"}) if unified: print "Perform unified search and return results" for i, title in enumerate(titles): title = self.encode(title) unified_search_results.append({ 'title': title, 'url': links[i], 'image': self.url + images[i], 'plugin': self.id }) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): duration = durations[i].split(':')[0] link = '88.150.243.226/vod/Skhvatka.1995.mp4/playlist.m3u8?token=3c076648ea987c21cf58a970f47fa4a5' uri = sys.argv[0] + '?mode=show&url=%s' % urllib.quote( links[i]) item = xbmcgui.ListItem("%s [COLOR=55FFFFFF](%s)[/COLOR]" % (title, durations[i]), iconImage=images[i]) item.setInfo(type='Video', infoLabels={ 'title': title, 'genre': durations[i], 'duration': duration }) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self): self.showErrorMessage("Search is not implemented") return "" kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(4000)) kbd.doModal() keyword = '' if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() print keyword.decode('cp1251').encode('utf-8') url = 'http://kinoprosmotr.net/index.php?do=search' # Advanced search: titles only values = { "do": "search", "full_search": 0, "result_from": 1, "result_num": 20, "search_start": 1, "story": keyword, "subaction": "search" } data = urllib.urlencode(values) request = urllib2.Request(url, data) response = urllib2.urlopen(request) containers = common.parseDOM(response.read(), "div", attrs={"class": "search_item clearfix"}) search_item_prev = common.parseDOM(containers, "div", attrs={"class": "search_item_prev"}) search_item_inner = common.parseDOM(containers, "div", attrs={"class": "search_item_inner"}) descriptions = common.parseDOM(search_item_inner, "div") # containers = common.parseDOM(response.read(), "div", attrs={"class": "search_item clearfix"}) header = common.parseDOM(search_item_inner, "h3") titles = common.parseDOM(header, "a") links = common.parseDOM(header, "a", ret="href") images = common.parseDOM(search_item_prev, "img", ret="src") gcont = common.parseDOM(search_item_inner, "span") # descs = common.parseDOM(containers, "a", attrs = { "class":"screenshot" }, ret="title") if titles: for i, title in enumerate(titles): genres = self.encode(', '.join(common.parseDOM(gcont[i], "a"))) desc = self.encode(common.stripTags(descriptions[i])) uri = sys.argv[0] + '?mode=film&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), iconImage=self.icon, thumbnailImage=images[i]) item.setInfo(type='Video', infoLabels={'title': self.encode(title), 'genre': genres, 'plot': desc}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem(self.language(4001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) else: self.menu() xbmcplugin.endOfDirectory(self.handle, True)
def search(self, keyword, unified): self.log("*** Search: unified %s" % unified) keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://fepcom.net/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": 30, "do" : "search", "full_search": 1, "replyless": 0, "replylimit": 0, "resorder": "desc", "result_from": 1, "search_start": 1, "searchdate" : 0, "searchuser": "", "showposts": 0, "sortby": "date", "story" : keyword, "subaction": "search", "titleonly": "3" } headers = { "Host" : "fepcom.net", "Referer" : 'http://fepcom.net/index.php?do=search', "User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:23.0) Gecko/20100101 Firefox/23.0" } # Send request to server request = urllib2.Request(url, urllib.urlencode(values), headers) response = urllib2.urlopen(request) content = response.read() posts = common.parseDOM(content, "div", attrs={"class": "post"}) headers = common.parseDOM(content, "h2") titles = common.parseDOM(headers, "a") links = common.parseDOM(headers, "a", ret="href") images = common.parseDOM(posts, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): unified_search_results.append({'title': self.encode(title), 'url': links[i], 'image': self.url + images[i], 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), thumbnailImage=self.url + images[i]) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) url = 'http://uakino.net/search_result.php' headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding": "gzip,deflate", "Accept-Language": "en-US,en;q=0.5", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", "Host": " uakino.net", "Referer": url, "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0" } values = { "search_id": keyword, "send": "%D0%9F%D0%BE%D0%B8%D1%81%D0%BA" } data = urllib.urlencode(values) req = urllib2.Request(url, data, headers) html = None try: response = urllib2.urlopen(req) html = response.read() except Exception: if unified: UnifiedSearch().collect(unified_search_results) pass self.log(keyword) us_titles = [] us_links = [] us_images = [] if html: media_line = common.parseDOM(html, "div", attrs={"class": "media_line"}) titlesA = common.parseDOM(media_line, "a", ret="title") pathsA = common.parseDOM(media_line, "a", attrs={"class": "fleft thumb"}, ret="href") titlesB = common.parseDOM(media_line, "a", attrs={"class": "heading"}) pathsB = common.parseDOM(media_line, "a", attrs={"class": "heading"}, ret="href") images = common.parseDOM(media_line, "img", ret="src") items_counter = 0 # print "Found A: %d"%len(pathsA) # print "Found B: %d"%len(pathsB) # print "Found images %d"%len(images) if titlesA and titlesB: print "*** This is a mix of seasons and movies" for i, title in enumerate(titlesA): items_counter += 1 link = "%s/%s" % (self.url, pathsA[i]) image = self.url + images[i] if not 'http' in images[ i] else images[i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=subcategory&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image, iconImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) for i, title in enumerate(titlesB): items_counter += 1 link = "%s/%s" % (self.url, pathsB[i]) image = self.url + images[ len(pathsB) + i] if not 'http' in images[ len(pathsB) + i] else images[len(pathsB) + i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=movie&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image, iconImage=self.icon) item.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(self.handle, uri, item, False) elif titlesA: print "*** This is a season" for i, title in enumerate(titlesA): items_counter += 1 link = "%s/%s" % (self.url, pathsA[i]) image = self.url + images[i] if not 'http' in images[ i] else images[i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=subcategory&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image, iconImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) elif titlesB: print "*** This is a movie" ul = common.parseDOM(media_line, "ul") for i, title in enumerate(titlesB): genres = common.stripTags( common.parseDOM(ul[i], "li")[0]) try: description = common.stripTags( common.parseDOM(ul[i], "li")[2]) except IndexError: description = common.stripTags( common.parseDOM(ul[i], "li")[1]) items_counter += 1 link = "%s/%s" % (self.url, pathsA[i]) image = self.url + images[i] if not 'http' in images[ i] else images[i] info = { 'title': title, 'genre': genres, 'plot': description } # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=movie&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image, iconImage=self.icon) item.setInfo(type='Video', infoLabels=info) item.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(self.handle, uri, item, False) else: item = xbmcgui.ListItem(self.language(9001), thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, "", item, False) else: self.showErrorMessage("%s: Request timeout" % self.id) # INFO: Convert and send unified search results if unified: self.log("Perform unified search and return results") for i, title in enumerate(us_titles): unified_search_results.append({ 'title': title, 'url': us_links[i], 'image': us_images[i], 'plugin': self.id, 'is_playable': True }) UnifiedSearch().collect(unified_search_results) else: xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, unified): self.log("*** Search: unified %s" % unified) keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://www.online-life.ru/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": "0", "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": keyword, "subaction": "search", "titleonly": "3" } data = urllib.urlencode(values) request = urllib2.Request(url, data) response = urllib2.urlopen(request).read() container = common.parseDOM(response, "div", attrs={"id": "container"}) posts = common.parseDOM(container, "div", attrs={"class": "custom-post"}) if unified: self.log("Perform unified search and return results") for i, post in enumerate(posts): poster = common.parseDOM(post, "div", attrs={"class": "custom-poster"}) title = self.encode(common.stripTags(common.parseDOM(post, "a")[0])) link = common.parseDOM(post, "a", ret="href")[0] image = common.parseDOM(post, "img", ret="src")[0] unified_search_results.append({'title': title, 'url': link, 'image': image, 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: if posts: for i, post in enumerate(posts): poster = common.parseDOM(post, "div", attrs={"class": "custom-poster"}) title = self.encode(common.stripTags(common.parseDOM(post, "a")[0])) link = common.parseDOM(post, "a", ret="href")[0] image = common.parseDOM(post, "img", ret="src")[0] uri = sys.argv[0] + '?mode=show&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=image) self.favorites.addContextMenuItem(item, { 'title': title, 'url': link, 'image': image, 'playable': False, 'action': 'add', 'plugin': self.id }) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(52)') else: item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, external): print "*** Search" keyword = keyword if (external != None) else self.getUserInput() keyword = translit.rus(keyword) if ( external == 'unified') else urllib.unquote_plus(keyword) unified_search_results = [] if keyword: print keyword headers = { 'Host': self.domain, 'Referer': self.url, 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' } values = { "do": "search", "subaction": "search", "q": unicode(keyword) } form = urllib.urlencode(values) encoded_kwargs = urllib.urlencode(values.items()) argStr = "/?%s" % (encoded_kwargs) request = urllib2.Request(self.url + argStr, "", headers) request.get_method = lambda: 'GET' response = urllib2.urlopen(request).read() content = common.parseDOM( response, "div", attrs={"class": "b-content__inline_items"}) videos = common.parseDOM(content, "div", attrs={"class": "b-content__inline_item"}) for i, videoitem in enumerate(videos): link = common.parseDOM(videoitem, "a", ret='href')[0] title = common.parseDOM(videoitem, "a")[1] image = common.parseDOM(videoitem, "img", ret='src')[0] descriptiondiv = common.parseDOM( videoitem, "div", attrs={"class": "b-content__inline_item-link"})[0] description = common.parseDOM(descriptiondiv, "div")[0] if (external == 'unified'): print "Perform unified search and return results" unified_search_results.append({ 'title': title, 'url': link, 'image': image, 'plugin': self.id }) else: uri = sys.argv[0] + '?mode=show&url=%s' % urllib.quote( link) item = xbmcgui.ListItem("%s [COLOR=55FFFFFF][%s][/COLOR]" % (title, description), iconImage=image, thumbnailImage=image) item.setInfo(type='Video', infoLabels={'title': title}) if (self.quality != 'select') and (not ( '/series/' in link)) and (not ('/show/' in link)): item.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(self.handle, uri, item, False) else: xbmcplugin.addDirectoryItem(self.handle, uri, item, True) if (external == 'unified'): UnifiedSearch().collect(unified_search_results) else: xbmcplugin.setContent(self.handle, 'movies') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
import re from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler import cookielib import xbmc import xbmcplugin import xbmcgui import xbmcaddon import XbmcHelpers common = XbmcHelpers import Translit as translit translit = translit.Translit() try: sys.path.append( os.path.dirname(__file__) + '/../plugin.video.unified.search') from unified_search import UnifiedSearch except: pass import xml.etree.ElementTree socket.setdefaulttimeout(120) #const SELECTED_GROUPS = (0, 2) SELECTED_MAIN_TABS = (0, 1, 2, 3)
def search(self, keyword, unified): self.log("*** Search: unified %s" % unified) keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://fepcom.net/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": 30, "do": "search", "full_search": 1, "replyless": 0, "replylimit": 0, "resorder": "desc", "result_from": 1, "search_start": 1, "searchdate": 0, "searchuser": "", "showposts": 0, "sortby": "date", "story": keyword, "subaction": "search", "titleonly": "3" } headers = { "Host": "fepcom.net", "Referer": 'http://fepcom.net/index.php?do=search', "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:23.0) Gecko/20100101 Firefox/23.0" } # Send request to server request = urllib2.Request(url, urllib.urlencode(values), headers) response = urllib2.urlopen(request) content = response.read() posts = common.parseDOM(content, "div", attrs={"class": "post"}) headers = common.parseDOM(content, "h2") titles = common.parseDOM(headers, "a") links = common.parseDOM(headers, "a", ret="href") images = common.parseDOM(posts, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): unified_search_results.append({ 'title': self.encode(title), 'url': links[i], 'image': self.url + images[i], 'plugin': self.id }) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), thumbnailImage=self.url + images[i]) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, external, page=1): if page == 1: keyword = keyword if ( external != None) or keyword else self.getUserInput() keyword = translit.rus(keyword) if ( external == 'unified') else urllib.unquote_plus(keyword) else: keyword = urllib.unquote_plus(keyword) unified_search_results = [] if keyword: url = "https://rutube.ru/api/search/video/" values = { "order_by": "rank", "duration": "", "created": "", "only_hd": "false", "no_adult": "false", "query": encode2(keyword), "page": str(page), "perPage": "10" } headers = { "Host": "rutube.ru", "Connection": "keep-alive", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36", "Accept": "application/json, text/javascript, */*; q=0.01", "X-Requested-With": "XMLHttpRequest", "X-Ally": "1", "X-CSRFToken": "4qb8a9ysuvpxudljpz3o6ngljciy8pl2", "Referer": "https://rutube.ru/search/?query=" + encode2(keyword), "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4", } form = urllib.urlencode(values) encoded_kwargs = urllib.urlencode(values.items()) argStr = "?%s" % (encoded_kwargs) request = urllib2.Request(url + argStr, "", headers) request.get_method = lambda: 'GET' response = urllib2.urlopen(request) data = json.loads(response.read()) for i, result in enumerate(data['results']): image = result['thumbnail_url'] if (external == 'unified'): unified_search_results.append({ 'title': result['title'], 'url': 'https://rutube.ru/video/%s/?ref=search' % result['id'], 'image': image, 'plugin': self.id }) else: uri = sys.argv[ 0] + '?mode=play&url=https://rutube.ru/video/%s/?ref=search' % result[ 'id'] item = xbmcgui.ListItem(result['title'], iconImage=image, thumbnailImage=image) item.setProperty('IsPlayable', 'true') item.setInfo(type='Video', infoLabels={'title': result['title']}) xbmcplugin.addDirectoryItem(self.handle, uri, item, False) if (external == None) and (data['has_next'] == True): uri = sys.argv[0] + '?mode=%s&keyword=%s&page=%s' % ( 'search', keyword, str(page + 1)) item = xbmcgui.ListItem('[COLOR=FFFFD700]' + self.language(2000) % (str(page + 1)) + '[/COLOR]', thumbnailImage=self.inext, iconImage=self.inext) item.setInfo(type='Video', infoLabels={'title': '<NEXT PAGE>'}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) if (external == 'unified'): UnifiedSearch().collect(unified_search_results) else: xbmcplugin.setContent(self.handle, 'movies') xbmcplugin.endOfDirectory(self.handle, True)
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: keyword = self.encode(keyword) url = 'http://uakino.net/search_result.php' headers = { "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding": "gzip,deflate", "Accept-Language" : "en-US,en;q=0.5", "Connection" : "keep-alive", "Content-Type" : "application/x-www-form-urlencoded", "Host" : " uakino.net", "Referer" : url, "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0" } values = { "search_id" : keyword, "send" : "%D0%9F%D0%BE%D0%B8%D1%81%D0%BA" } data = urllib.urlencode(values) req = urllib2.Request(url, data, headers) html = None try: response = urllib2.urlopen(req) html = response.read() except Exception: if unified: UnifiedSearch().collect(unified_search_results) pass self.log(keyword) us_titles = [] us_links = [] us_images = [] if html: media_line = common.parseDOM(html, "div", attrs = { "class":"media_line" }) titlesA = common.parseDOM(media_line, "a", ret="title") pathsA = common.parseDOM(media_line, "a", attrs = {"class":"fleft thumb"}, ret="href") titlesB = common.parseDOM(media_line, "a", attrs = {"class":"heading"}) pathsB = common.parseDOM(media_line, "a", attrs = {"class":"heading"}, ret="href") images = common.parseDOM(media_line, "img", ret="src") items_counter = 0 # print "Found A: %d"%len(pathsA) # print "Found B: %d"%len(pathsB) # print "Found images %d"%len(images) if titlesA and titlesB: print "*** This is a mix of seasons and movies" for i, title in enumerate(titlesA): items_counter += 1 link = "%s/%s"%(self.url, pathsA[i]) image = self.url+images[i] if not 'http' in images[i] else images[i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=subcategory&url=%s'%link item = xbmcgui.ListItem(title, thumbnailImage = image, iconImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) for i, title in enumerate(titlesB): items_counter += 1 link = "%s/%s"%(self.url, pathsB[i]) image = self.url+images[len(pathsB)+i] if not 'http' in images[len(pathsB)+i] else images[len(pathsB)+i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=movie&url=%s'%link item = xbmcgui.ListItem(title, thumbnailImage = image, iconImage=self.icon) item.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(self.handle, uri, item, False) elif titlesA: print "*** This is a season" for i, title in enumerate(titlesA): items_counter += 1 link = "%s/%s"%(self.url, pathsA[i]) image = self.url+images[i] if not 'http' in images[i] else images[i] # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=subcategory&url=%s'%link item = xbmcgui.ListItem(title, thumbnailImage = image, iconImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) elif titlesB: print "*** This is a movie" ul = common.parseDOM(media_line, "ul") for i, title in enumerate(titlesB): genres = common.stripTags(common.parseDOM(ul[i], "li")[0]) try: description = common.stripTags(common.parseDOM(ul[i], "li")[2]) except IndexError: description = common.stripTags(common.parseDOM(ul[i], "li")[1]) items_counter += 1 link = "%s/%s"%(self.url, pathsA[i]) image = self.url+images[i] if not 'http' in images[i] else images[i] info = {'title': title, 'genre': genres, 'plot': description} # INFO: Collect search results us_titles.append(title) us_links.append(link) us_images.append(image) uri = sys.argv[0] + '?mode=movie&url=%s'%link item = xbmcgui.ListItem(title, thumbnailImage = image, iconImage=self.icon) item.setInfo( type='Video', infoLabels=info) item.setProperty('IsPlayable', 'true') xbmcplugin.addDirectoryItem(self.handle, uri, item, False) else: item = xbmcgui.ListItem(self.language(9001), thumbnailImage = self.icon) xbmcplugin.addDirectoryItem(self.handle, "", item, False) else: self.showErrorMessage("%s: Request timeout" % self.id) # INFO: Convert and send unified search results if unified: self.log("Perform unified search and return results") for i, title in enumerate(us_titles): unified_search_results.append({'title': title, 'url': us_links[i], 'image': us_images[i], 'plugin': self.id, 'is_playable': True}) UnifiedSearch().collect(unified_search_results) else: xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self): kbd = xbmc.Keyboard() kbd.setDefault('') kbd.setHeading(self.language(2000)) kbd.doModal() keyword = '' if kbd.isConfirmed(): if self.addon.getSetting('translit') == 'true': keyword = translit.rus(kbd.getText()) else: keyword = kbd.getText() print keyword.decode('cp1251').encode('utf-8') url = 'http://showday.tv/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": "0", "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": keyword, "subaction": "search", "titleonly": "3" } data = urllib.urlencode(values) request = urllib2.Request(url, data) response = urllib2.urlopen(request).read() container = common.parseDOM(response, "div", attrs={"id": "dle-content"}) blocks = common.parseDOM(container, "div", attrs={"class": "block"})[1:] if blocks: for i, block in enumerate(blocks): text_container = common.parseDOM(block, "div", attrs={"class": "text"}) img_cotainer = common.parseDOM(block, "div", attrs={"class": "image"}) title = self.encode(common.stripTags(common.parseDOM(text_container, "a")[0])) link = common.parseDOM(text_container, "a", ret="href")[0] image = common.parseDOM(img_cotainer, "img", ret="src")[0] uri = sys.argv[0] + '?mode=episode&url=%s' % link item = xbmcgui.ListItem(title, thumbnailImage=self.url + image) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem(self.language(2001), iconImage=self.icon, thumbnailImage=self.icon) xbmcplugin.addDirectoryItem(self.handle, '', item, True) else: self.menu() xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True)
import os import urllib import urllib2 import sys import json import uppod import cookielib import HTMLParser import XbmcHelpers common = XbmcHelpers import Translit as translit translit = translit.Translit(encoding='utf-8') # My Favorites module from MyFavorites import MyFavorites class SerialuNet(): def __init__(self): self.id = 'plugin.video.mrstealth.serialu.net' self.addon = xbmcaddon.Addon(self.id) self.icon = self.addon.getAddonInfo('icon') self.path = self.addon.getAddonInfo('path') self.profile = self.addon.getAddonInfo('profile') self.language = self.addon.getLocalizedString self.handle = int(sys.argv[1])
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://kinoprosmotr.net/index.php?do=search' # Advanced search: titles only values = { "beforeafter": "after", "catlist[]": 0, "do": "search", "full_search": "1", "replyless": "0", "replylimit": "0", "resorder": "desc", "result_from": "1", "result_num": "50", "search_start": "1", "searchdate": "0", "searchuser": "", "showposts": "0", "sortby": "date", "story": keyword, "subaction": "search", "titleonly": "3" } headers = { "Referer" : 'http://kinoprosmotr.net/index.php?do=search', "User-Agent" : "Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0" } data = urllib.urlencode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) containers = common.parseDOM(response.read(), "div", attrs={"class": "search_item clearfix"}) search_item_prev = common.parseDOM(containers, "div", attrs={"class": "search_item_prev"}) search_item_inner = common.parseDOM(containers, "div", attrs={"class": "search_item_inner"}) print containers descriptions = common.parseDOM(search_item_inner, "div") header = common.parseDOM(search_item_inner, "h3") gcont = common.parseDOM(search_item_inner, "span") titles = common.parseDOM(header, "a") links = common.parseDOM(header, "a", ret="href") images = common.parseDOM(search_item_prev, "img", ret="src") if unified: self.log("Perform unified search and return results") for i, title in enumerate(titles): image = self.url + images[i] unified_search_results.append({'title': self.encode(title), 'url': links[i], 'image': image, 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: for i, title in enumerate(titles): image = self.url + images[i] print image genres = self.encode(', '.join(common.parseDOM(gcont[i], "a"))) desc = self.encode(common.stripTags(descriptions[i])) uri = sys.argv[0] + '?mode=show&url=%s' % links[i] item = xbmcgui.ListItem(self.encode(title), iconImage=self.icon, thumbnailImage=image) item.setInfo(type='Video', infoLabels={'title': self.encode(title), 'genre': genres, 'plot': desc}) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True) else: self.menu()
def search(self, keyword, unified): keyword = translit.rus(keyword) if unified else self.getUserInput() unified_search_results = [] if keyword: url = 'http://kino-v-online.tv/index.php?do=search' values = { "do": "search", "full_search": "0", "result_from": "1", "result_num": "22", "search_start": "a", "story": keyword, "subaction": "search" } data = urllib.urlencode(values) req = urllib2.Request(url, data) response = urllib2.urlopen(req) html = response.read() content = common.parseDOM(html, "div", attrs={"id": "dle-content"}) if response.geturl() == url: links = common.parseDOM(content, "a", ret="href") titles = common.parseDOM(content, "b") else: links = [response.geturl().replace(self.url, '')] titles = common.parseDOM(content, "h1") images = common.parseDOM(content, "img", attrs={"class": "top"}, ret="src") if unified: for i, title in enumerate(titles): if images: unified_search_results.append({'title': self.encode(title), 'url': self.url + '/' + links[i], 'image': images[i], 'plugin': self.id}) else: unified_search_results.append({'title': self.encode(title), 'url': self.url + '/' + links[i], 'image': '', 'plugin': self.id}) UnifiedSearch().collect(unified_search_results) else: if links: for i, link in enumerate(links): if not link == "#": if images: uri = sys.argv[0] + '?mode=%s&url=%s'%("show", self.url + '/' + link) item = xbmcgui.ListItem(self.encode(titles[i]), thumbnailImage = images[i]) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: uri = sys.argv[0] + '?mode=%s&url=%s'%("show", self.url + '/' + link) item = xbmcgui.ListItem(self.encode(titles[i]), thumbnailImage = self.icon) xbmcplugin.addDirectoryItem(self.handle, uri, item, True) else: item = xbmcgui.ListItem(self.language(2001), thumbnailImage = self.icon) xbmcplugin.addDirectoryItem(self.handle, "", item, False) else: self.menu() xbmc.executebuiltin('Container.SetViewMode(50)') xbmcplugin.endOfDirectory(self.handle, True)