Exemplo n.º 1
0
    def filter(self,vquery,user_search,direct_link=None):
        if not vquery :
            self.num_start = 1
            self.current_page = 1
            values = {'name': self.name, 'query': user_search}
            self.print_info(_("%(name)s: No results for %(query)s ...") % values)
            time.sleep(5)
            self.thread_stop=True

        if direct_link is not None:
            #gobject.idle_add(self.gui.model.clear)
            self.thread_stop=True
            self.make_youtube_entry(vquery, True, direct_link)
        
        try:
            if len(vquery) == 0:
                values = {'name': self.name, 'query': user_search}
                self.print_info(_("%(name)s: No results for %(query)s ...") % values)
                time.sleep(5)
                self.thread_stop=True
                return
        except:
            self.thread_stop=True
            return

        for entry in vquery:
            if not self.thread_stop:
                self.make_youtube_entry(entry)
            else:
                return
        self.thread_stop=True  
Exemplo n.º 2
0
    def __init__(self,gui):
        self.gui = gui
        self.current_page = 1
        self.main_start_page = 1
        self.engine_type = "video"
        self.num_start = 1
        self.results_by_page = 25
        self.name="Youtube"
        self.client = yt_service.YouTubeService()
        self.youtube_max_res = "320x240"
        self.media_codec = None
        self.thread_stop= False
        self.has_browser_mode = False
        self.vp8 = False
        self.updateBrowser=True
        self.qlist_checked=False
        self.elarrId=0
        ## the gui box to show custom filters/options
        self.opt_box = self.gui.gladeGui.get_widget("search_options_box")
        ## options labels
        self.order_label = _("Order by: ")
        self.category_label = _("Category: ")
        self.filtersLabel = _("Filters: ")
        self.searchTypeLabel=_('Search for:')
        self.selected_searchType=''
        ## video quality combobox
        self.youtube_quality_box = self.gui.gladeGui.get_widget("quality_box")
        
        self.youtube_quality_model = gtk.ListStore(str)
        self.youtube_video_rate = gtk.ComboBox(self.youtube_quality_model)
        cell = gtk.CellRendererText()
        self.youtube_video_rate.pack_start(cell, True)
        self.youtube_video_rate.add_attribute(cell, 'text', 0)
        self.youtube_quality_box.add(self.youtube_video_rate)
        new_iter = self.youtube_quality_model.append()
        self.youtube_quality_model.set(new_iter,
                                0, _("Quality"),
                                )
        self.youtube_video_rate.connect('changed', self.on_youtube_video_rate_changed)

        ## youtube video quality choices
        self.res320 = self.gui.gladeGui.get_widget("res1")
        self.res640 = self.gui.gladeGui.get_widget("res2")
        self.res854 = self.gui.gladeGui.get_widget("res3")
        self.res1280 = self.gui.gladeGui.get_widget("res4")
        self.res1920 = self.gui.gladeGui.get_widget("res5")

        ## SIGNALS
        dic = {
        "on_res1_toggled" : self.set_max_youtube_res,
        "on_res2_toggled" : self.set_max_youtube_res,
        "on_res3_toggled" : self.set_max_youtube_res,
        "on_res4_toggled" : self.set_max_youtube_res,
        "on_res5_toggled" : self.set_max_youtube_res,
         }
        self.gui.gladeGui.signal_autoconnect(dic)
        ## start
        self.start_engine()
Exemplo n.º 3
0
    def make_youtube_entry(self,video,read=None, select=False):
        if self.selected_searchType == 'playlist':
            title=video['summary']['$t']
            thumb = video['media$group']['media$thumbnail'][0]['url']
            video_num= video['yt$countHint']['$t']
            playlist_id=video['yt$playlistId']['$t']
            playlist_link='https://gdata.youtube.com/feeds/api/playlists/%s?alt=json&v=2' % playlist_id
            try:
                vid_pic = download_photo(thumb)
            except:
                return
                
            values = {'name': title, 'count': video_num}
            markup = _("\n\n<small><b>videos in the playlist:</b> %(count)s</small>") % values
            if not title or not playlist_link or not vid_pic:
                return
            gobject.idle_add(self.gui.add_sound,title, playlist_link, vid_pic,None,self.name,markup,None,select)
            
        else:
            try:
                duration = video['media$group']['yt$duration']['seconds']
                calc = divmod(int(duration),60)
                seconds = int(calc[1])
                if seconds < 10:
                    seconds = "0%d" % seconds
                duration = "%d:%s" % (calc[0],seconds)
                url = video['link'][0]['href']
                thumb = video['media$group']['media$thumbnail'][0]['url']
                count = 0
                try:
                    count = video['yt$statistics']['viewCount']
                except:
                    pass
                vid_id=video['media$group']['yt$videoid']['$t']
                if vid_id == '':
                    return
                try:
                    vid_pic = download_photo(thumb)
                except:
                    return
                title = video['title']['$t']
                if not count:
                    count = 0

                
                values = {'name': title, 'count': count, 'duration': duration}
                markup = _("\n<small><b>view:</b> %(count)s        <b>Duration:</b> %(duration)s</small>") % values
                if not title or not url or not vid_pic:
                    return
                gobject.idle_add(self.gui.add_sound,title,vid_id, vid_pic,None,self.name,markup,None,select)
            except:
                print "can t get video informations..."
Exemplo n.º 4
0
 def on_paste(self,widget=None,url=None):
     text = ''
     gobject.idle_add(self.gui.search_entry.set_text,"")
     update=True
     if not url:
         clipboard = gtk.Clipboard(gtk.gdk.display_get_default(), "CLIPBOARD")
         data = clipboard.wait_for_contents('UTF8_STRING')
         try:
             text = data.get_text()
         except:
             gobject.idle_add(error_dialog,_("There's no link to paste..."))
             return
     else:
         text = url
     if text != '':
         vid=self.get_videoId(text)
         if vid == '':
             return
         link =r'http://gdata.youtube.com/feeds/api/videos/%s?alt=json&v=2' % vid
         inp = urllib.urlopen(link)
         resp = json.load(inp)
         inp.close()
         entry = resp['entry']
         self.filter(entry, '', update)
     else:
         return
Exemplo n.º 5
0
    def make_youtube_entry(self,video,read=None, select=False):
        duration = video['media$group']['yt$duration']['seconds']
        calc = divmod(int(duration),60)
        seconds = int(calc[1])
        if seconds < 10:
            seconds = "0%d" % seconds
        duration = "%d:%s" % (calc[0],seconds)
        url = video['link'][0]['href']
        thumb = video['media$group']['media$thumbnail'][0]['url']
        count = 0
        try:
            count = video['yt$statistics']['viewCount']
        except:
            pass
        vid_id=video['id'].values()[0].split(':')[-1]
        if vid_id == '':
            return
        try:
            vid_pic = download_photo(thumb)
        except:
            return
        title = video['title']['$t']
        if not count:
            count = 0

        
        values = {'name': title, 'count': count, 'duration': duration}
        markup = _("\n<small><b>view:</b> %(count)s        <b>Duration:</b> %(duration)s</small>") % values
        if not title or not url or not vid_pic:
            return
        GObject.idle_add(self.gui.add_sound,title, vid_id, vid_pic,None,self.name,markup,None,select)
Exemplo n.º 6
0
 def get_videoId(self,text):
     vid=None
     try:
         vid = re.search('watch\?v=(.*?)&',text).group(1)
     except:
         try:
             vid = re.search('watch\?v=(.*)',text).group(1)
         except:
             try:
                 vid = os.path.basename(os.path.dirname(text))
             except:
                 error_dialog(_('Your link:\n\n%s\n\nis not a valid youtube link...' % text))
                 return
     if vid=='':
         error_dialog(_('Your link:\n\n%s\n\nis not a valid youtube link...' % text))
         return
     return vid
Exemplo n.º 7
0
    def load_gui(self):
        ## paste entry
        image = gtk.Image()
        image.set_from_stock(gtk.STOCK_PASTE,24) 
        button = gtk.Button()
        button.set_image(image)
        button.connect("clicked", self.on_paste)
        button.set_tooltip_text(_('Paste youtube link'))
        button.props.relief = gtk.RELIEF_NONE
        self.gui.search_opt_box.pack_start(button,False,False,10)
        
        ## search type combobox
        cb = create_comboBox()
        
        self.searchType = ComboBox(cb)
        self.searchTypeList = {self.searchTypeLabel:{"":"",_("Videos"):('videos'),_("Playlist"):("playlist"),
            },
        }
        self.searchType = create_comboBox(self.gui, self.searchTypeList)
        self.searchType.setIndexFromString(_("Videos"))
        
        ## create orderby combobox
        self.orderbyOpt = {self.order_label:{_("Most relevant"):"relevance",
                                             _("Most recent"):"published",_("Most viewed"):"viewCount",
                                             _("Most rated"):"rating",
            },
        }
        self.orderby = create_comboBox(self.gui, self.orderbyOpt)
        
        ## create categories combobox
        self.category = ComboBox(cb)
        self.catlist = {self.category_label:{"":"",_("Sport"):"Sports",
                                             _("Films"):"Film",_("Cars"):"Autos",
                                             _("Music"):"Music",_("Technology"):"Tech",_("Animals"):"Animals",
                                             _("Travel"):"Travel",_("Games"):"Games",_("Comedy"):"Comedy",
                                             _("Peoples"):"People",_("News"):"News",
                                             _("Entertainement"):"Entertainment",_("Trailers"):"Trailers",
            },
        }
        self.category = create_comboBox(self.gui, self.catlist)
        self.orderby.setIndexFromString(_("Most relevant"))

        
        ## filter combobox
        self.filters = ComboBox(cb)
        self.filtersList = {self.filtersLabel:{"":"",_("HD"):"hd",_("3D"):"3d",
            },
        }
        self.filters = create_comboBox(self.gui, self.filtersList)
        
        gobject.idle_add(self.gui.search_opt_box.show_all)
        
        ## vp8 check
        if not sys.platform == 'win32':
            out,err = Popen('/usr/bin/gst-inspect-0.10| grep vp8',shell=True,stdout=PIPE,stderr=STDOUT).communicate()
            if 'vp8' in str(out):
                self.vp8 = True
            else:
                out,err = Popen('/usr/bin/gst-inspect | grep vp8',shell=True,stdout=PIPE,stderr=STDOUT).communicate()
                if 'vp8' in str(out):
                    self.vp8 = True
        else:
            self.vp8 = True