通过YouTube播放限制检测视频



我正在使用Python开发Web服务,我想滤除无法在YouTube页面外播放的视频。

喜欢在此链接上[https://www.youtube.com/v/sc3pupln-_8?version=3& f = videos& ampp = youtube_gdata]您必须在YouTube页面上观看视频是否有任何过滤方式,哪些视频属于同一类别。这样我只选择可以播放而无需任何限制的视频。

import gdata.youtube.service
#------------------------------------------------------------------------------ 
yt_service = gdata.youtube.service.YouTubeService()
yt_service.developer_key = 'YOUR API DEVELOPER KEY'
count=0
def PrintEntryDetails(entry):
    if entry.media.category[0].text == "Movies" :
        global count
        count = count + 1
        if  entry.noembed != None:
            print 'Video embedding not enable: %s' % entry.noembed.text
        else :
            print "entry embedable"
        print 'Video title: %s' % entry.media.title.text
        print 'Video category: %s' % entry.media.category[0].text
        print 'Video published on: %s ' % entry.published.text
        print 'Video description: %s' % entry.media.description.text
        if entry.media.private != None :
            print entry.media.private.text
        else :
            print "Right not found"          
        if entry.media.keywords :
            print 'Video tags: %s' % entry.media.keywords.text
        print 'Video watch page: %s' % entry.media.player.url
        print 'Video flash player URL: %s' % entry.GetSwfUrl()
        print 'Video duration: %s' % entry.media.duration.seconds        
        # For video statistics
        if entry.statistics :       
            print 'Video view count: %s' % entry.statistics.view_count
        # For video rating
        if entry.rating  :    
            print 'Video rating: %s' % entry.rating.average
        # show alternate formats
        for alternate_format in entry.media.content:
            if 'isDefault' not in alternate_format.extension_attributes:
                print 'Alternate format: %s | url: %s ' % (alternate_format.type,
                                                     alternate_format.url)
        # show thumbnails
        for thumbnail in entry.media.thumbnail:
            print 'Thumbnail url: %s' % thumbnail.url        
        print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    else :
        pass
def PrintVideoFeed(feed):
    counter = 0    
    for entry in feed.entry:        
        PrintEntryDetails(entry)
        counter = counter+1
        #print counter   

def SearchAndPrint():
    max = 20    
    yt_service = gdata.youtube.service.YouTubeService()
    query = gdata.youtube.service.YouTubeVideoQuery()
    # OrderBy must be one of: published viewCount rating relevance 
    query.orderby = "relevance"
    query.racy = 'include'
    query.author = "tseries"
    query.max_results = 50
    index = 01
    for i in (range(max)):        
        query.start_index = index
        index = index + 50
        query.format = "5"
        feed = yt_service.YouTubeQuery(query)    
        PrintVideoFeed(feed)

SearchAndPrint()
print "**********************************************************"
print "Total Movies"
print count

一般答案是执行您的搜索时使用format=5参数:

将完全嵌入已禁用的搜索结果中的视频。

话虽如此,有些视频启用了嵌入的视频,但仅在某些地区或嵌入到某些域中时可播放。

要处理区域限制,您应该将restriction=参数设置为适合您的用例的内容,如https://developers.google.com/youtube/2.0/reference#restrictionsp

无法将视频排除在具有域级嵌入限制的搜索结果中。

本博客文章提供了有关嵌入式播放限制的更多一般信息:http://apiblog.youtube.com/2011/12/understanding-playback-ratections.html

如果我理解您的问题,您正在寻找应用:control/yt:状态标签。例如,如果视频仅限于在YouTube站点上播放,但是您正在尝试通过嵌入式URL或通过非浏览器访问它,您将获得这样的内容:

<app:control>
    <yt:state name="restricted" reasonCode="limitedSyndication">Syndication of this video was restricted.</yt:state>
</app:control>

您可以在entry对象中看到此内容:

entry.control.FindExtensions('state')[0].attributes

将是:

{'name': 'restricted', 'reasonCode': 'limitedSyndication'}

当然,您需要使其更加健壮 - control可能没有,它可能没有state标签等。但是您明白了。

我认为您不能直接搜索state的存在,不存在或特定值,但是您可以在检索结果之前使用fields参数将结果置于过滤器。这些文档实际上给出了仅返回"不会以任何方式限制播放的条目,这是由<yt:state>元素的存在指示的":

entry[not(app:control/yt:state)]

我已经离开了(title,media:group)部分,因为您想要默认标签,而不是有限的集合。

由于某种原因,fields参数并不总是被发送。这可能是因为,正如文档所说,"当前仅用于实验特征的字段参数"。但是无论如何,您只需检索所有内容,并在control上过滤。

相关内容

  • 没有找到相关文章

最新更新