class DailyMotion(object): def __init__(self,gui): self.gui = gui self.name = 'DailyMotion' self.engine_type = "video" self.options_dic = {} self.current_page = 1 self.main_start_page = 1 self.thread_stop=False self.has_browser_mode = False self.browser=Browser(gui) ## options labels self.order_label = _("Order by: ") self.filters_label = _("Filters: ") self.search_url = 'https://api.dailymotion.com/videos?%ssort=%s&page=%s&limit=25&search=%s&fields=embed_url,thumbnail_medium_url,title,views_total,duration' self.start_engine() def start_engine(self): self.gui.engine_list[self.name] = '' def load_gui(self): self.order_list = {self.order_label:{_("Most recent"):"recent",_("Most viewed"):"visited",_("Most rated"):"rated",_("Most relevant"):"relevance"}} self.orderby = create_comboBox(self.gui, self.order_list) self.filters_list = {self.filters_label:{"":"",_("HD"):"hd"}} self.filters = create_comboBox(self.gui, self.filters_list) self.orderby.setIndexFromString(_("Most relevant")) def get_search_url(self,query,page): choice = self.orderby.getSelected() orderby = self.order_list[self.order_label][choice] choice = self.filters.getSelected() f='' if choice != "": filters = self.filters_list[self.filters_label][choice] f = 'filters=%s&' % filters return self.search_url % (f,orderby,page,urllib.quote(query)) def play(self,link): try: data = self.browser.load_uri(link) #j_data = data.read().split('info =')[1].split(';')[0] #js = json.loads(j_data) #print js #try: #link = js['stream_h264_url'] #except: #try: #link = js['stream_h264_ld_url'] #except: #return self.gui.start_play('') #self.gui.media_link = link #return self.gui.start_play(link) except: return def filter(self,data,user_search): js = json.load(data) l = js['list'] for dic in l: if self.thread_stop == True: break title = dic['title'] link = dic['embed_url']+'&cache=0' img_link = dic['thumbnail_medium_url'] duration = dic['duration'] calc = divmod(int(duration),60) seconds = int(calc[1]) if seconds < 10: seconds = "0%d" % seconds duration = "%d:%s" % (calc[0],seconds) total = dic['views_total'] img = download_photo(img_link) markup = _("\n<small><b>views:</b> %s <b>Duration:</b> %s</small>") % (total, duration) GObject.idle_add(self.gui.add_sound, title, link, img, None, self.name, markup) if js['has_more'] != 'true': self.print_info(_("%s: No more results for %s...") % (self.name,user_search)) time.sleep(5) self.thread_stop=True def print_info(self,msg): GObject.idle_add(self.gui.info_label.set_text,msg)
class DrTuber(object): def __init__(self,gui): self.gui = gui self.name ="DrTuber" self.engine_type = "video" self.current_page = 1 self.main_start_page = 1 self.thread_stop=False self.adult_content=True self.search_url = SEARCH_URL self.initialized=False self.has_browser_mode = False ## options labels self.browser = mechanize.Browser() self.browser.addheaders = [] self.scrapper=Browser(gui) self.start_engine() def start_engine(self): self.gui.engine_list[self.name] = '' def load_gui(self): pass def filter(self, data, query): flag_found = False title="" markup="" link="" for line in data.readlines(): if self.thread_stop == True: break ## search link if '/media/videos/tmb' in line and 'jpg' in line: flag_found = True img_link = re.search('src=\"(.*?)\"',line).group(1) img = download_photo(img_link) #print img_link elif 'class="item_title"' in line: title = re.search('>(.*?)<',line).group(1) #print title elif 'href="/video/' in line: link = re.search('href=\"(.*?)\"',line).group(1) #print link try: GObject.idle_add(self.gui.add_sound, title, link, img, None, self.name) except: continue if not flag_found: self.print_info(_("%s: No results for %s...") % (self.name,query)) time.sleep(5) self.thread_stop=True def get_search_url(self,query,page): #print SEARCH_URL % (query,page) return SEARCH_URL % (query,page) def search(self, data, query, page): try: print data self.filter(data, query) except: self.print_info(_("%s: Connexion failed...") % self.name) time.sleep(5) self.thread_stop=True def play(self,link): self.scrapper.load_uri(URL + link) def print_info(self,msg): GObject.idle_add(self.gui.info_label.set_text,msg)
class YouPorn(object): def __init__(self,gui): self.gui = gui self.name ="YouPorn" self.engine_type = "video" self.current_page = 1 self.main_start_page = 1 self.thread_stop=False self.adult_content=True self.search_url = "http://www.youporn.com/search/%s?query=%s&type=%s&page=%s" self.initialized=False self.has_browser_mode = False ## options labels self.order_label = _("Order by: ") self.browser = mechanize.Browser() self.browser.addheaders = [] self.scrapper=Browser(gui) self.start_engine() def start_engine(self): self.gui.engine_list[self.name] = '' def load_gui(self): ## create orderby combobox self.orderbyOpt = {self.order_label:{_("Most recent"):"time",_("Most viewed"):"views", _("Most rated"):"rating",_("Duration"):"duration", _("Most relevant"):"relevance", }, } self.orderby = create_comboBox(self.gui, self.orderbyOpt) self.orderby.setIndexFromString(_("Most relevant")) def filter(self, data, query): flag_found = False title="" markup="" link="" for line in data.readlines(): if self.thread_stop == True: break ## search link if 'href="/watch' in line: flag_found = True l = re.search('href=\"(.*?)\"',line).group(1) link = "http://www.youporn.com%s" % l elif 'class="flipbook' in line: title = re.search('alt=\"(.*?)\"',line).group(1) img_link = re.search('src=\"(.*?)\"',line).group(1) img = download_photo(img_link) GObject.idle_add(self.gui.add_sound, title, link, img, None, self.name) ## check for next page #elif 'id="navNext"' in line: #end_flag=False continue if not flag_found: self.print_info(_("%s: No results for %s...") % (self.name,query)) time.sleep(5) self.thread_stop=True def get_search_url(self,query,page): if not self.initialized: self.browser.open(ENTER_URL) self.initialized = True choice = self.orderby.getSelected() orderby = self.orderbyOpt[self.order_label][choice] return SEARCH_URL % (orderby,query,page) def search(self, data, query, page): try: print data self.filter(data, query) except: self.print_info(_("%s: Connexion failed...") % self.name) time.sleep(5) self.thread_stop=True def play(self,link): self.scrapper.load_uri(link) def print_info(self,msg): GObject.idle_add(self.gui.info_label.set_text,msg)
class PornHub(object): def __init__(self, gui): self.gui = gui self.name = "PornHub" self.engine_type = "video" self.current_page = 1 self.main_start_page = 1 self.thread_stop = False self.adult_content = True self.has_browser_mode = False self.scrapper = Browser(gui) self.search_url = "http://www.pornhub.com/video/search?search=%s&o=%s&page=%s" self.category_url = "http://www.empflix.com/channels/new-%s-%s.html" ## options labels self.order_label = _("Order by: ") self.cat_label = _("Category: ") self.start_engine() def start_engine(self): self.gui.engine_list[self.name] = "" def load_gui(self): ## create orderby combobox self.orderbyOpt = { self.order_label: {_("Most recent"): "mr", _("Most viewed"): "mv", _("Top rated"): "tr", _("Longest"): "lg"} } self.orderby = create_comboBox(self.gui, self.orderbyOpt) self.orderby.setIndexFromString(_("Most recent")) def get_search_url(self, query, page): choice = self.orderby.getSelected() orderby = self.orderbyOpt[self.order_label][choice] return self.search_url % (urllib.quote_plus(query), orderby, page) def play(self, link): data = self.scrapper.load_uri(link) def filter(self, data, user_search): flag_found = False end_flag = True title = "" markup = "" link = "" for line in data.readlines(): if self.thread_stop == True: break if 'class="img"' in line: flag_found = True link = line.split('"')[1] if 'class="rotating"' in line: title = re.search('alt="(.*?)"', line).group(1) img_link = re.search('data-smallthumb="(.*?)"', line).group(1) img = download_photo(img_link) GObject.idle_add(self.gui.add_sound, title, link, img, None, self.name) if "Our Friends" in line: break if not flag_found: self.print_info(_("%s: No results for %s...") % (self.name, user_search)) time.sleep(5) self.thread_stop = True def print_info(self, msg): GObject.idle_add(self.gui.info_label.set_text, msg)