示例#1
0
 def search(self, artist):
     query = YouTubeVideoQuery()
     query.vq = artist
     query.orderby = 'relevance'
     query.racy = 'exclude'
     query.format = '5'
     query.max_results = 50
     query.categories.append("/Music")
     feed = self.service.YouTubeQuery(query)
     results = []
     for entry in feed.entry:
         if not self.is_valid_entry(artist, entry):
             continue
         results.append({
             'url': entry.media.player.url,
             'title': smart_str(entry.media.title.text),
             'duration': int(entry.media.duration.seconds),
         })
     return {'artist': artist, 'results': results}
示例#2
0
    def search(self,
               search_terms,
               location=None,
               max_results=MAX_RESULTS_PER_QUERY,
               max_age=None,
               orderby='published',
               max_comment_count=0):
        """ 
        Searches for youtube videos.
        
        @param search_terms: list of search terms
        @param location: tuple latitude, longitue, e.g. 37.42307,-122.08427
        @param max_results:
        @param max_age: datetime of the oldest entry  
        @param orderby: order search results by (relevance, published, 
                        viewCount, rating)
        @param max_comment_count: maximum number of comments to fetch 
                                  (default: 0)
        """

        if not (isinstance(search_terms, list) or isinstance(
                search_terms, tuple) or isinstance(search_terms, set)):
            raise ValueError("Warning search requires a list of search terms, \
                             rather than a single term")

        # all youtube search parameter are here:
        # https://developers.google.com/youtube/2.0/reference?hl=de#Custom_parameters
        query = YouTubeVideoQuery()
        query.vq = ', '.join(search_terms)
        query.orderby = orderby
        query.racy = 'include'
        query.time = self.get_query_time(max_age)
        query.max_results = MAX_RESULTS_PER_QUERY

        if location:
            query.location = location

        return self.search_youtube(query, max_results, max_comment_count)