python - 检测具有 Youtube 播放限制的视频

标签 python youtube-api gdata-api

我正在使用 python 开发网络服务,我想过滤掉无法在 youtube 页面之外播放的视频。

点赞此链接 [https://www.youtube.com/v/SC3pupLn-_8?version=3&f=videos&app=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 参数:https://developers.google.com/youtube/2.0/reference#formatsp

这将从搜索结果中完全禁用嵌入的视频中过滤掉。

也就是说,有些视频启用了嵌入,但只能在特定区域或嵌入到特定域时播放。

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

不过,无法从具有域级嵌入限制的搜索结果中排除视频。

此博文包含有关嵌入式播放限制的更多一般信息:http://apiblog.youtube.com/2011/12/understanding-playback-restrictions.html

关于python - 检测具有 Youtube 播放限制的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996647/

相关文章:

youtube - YouTube订阅:插入失败,错误400

java - gdata-java-client 和 google-api-java-client 有什么区别?

python - 如何在 Python 中向模拟函数提供条件参数?

python - Flask IMAP 应用程序检索不必要和不正确的字符

android - 如何使用 YoutubePlayerSupportFragment 在 Android 中使用具有现代 UI 的 Youtube Player

oauth - 使用 2 Legged OAUTH/OPEN ID 域帐户使用 Google GData API 批量更新电子表格

python - 我是否需要 SWIG 类型映射才能让 c 函数将 float 返回给 python?

javascript - 通过 ng-repeat 循环时从 dict 获取值

google-drive-api - 谷歌电子表格批量更新很慢