我正在尝试找到合适的GTLQueryYouTube参数来过滤掉无法在移动设备上播放的视频(在iOS UIWebView中)。 videoEmbeddable和videoSyndicated params限制性太强(他们会过滤掉所有VEVO视频)。
在我们的iOS应用中,我们通过GTLQueryYouTube搜索YouTube视频,将videoEmbeddable和videoSyndicated参数留空。
这将返回通常可在UIWebView中播放的Vevo视频。例如“蕾哈娜 - 钻石”(lWA2pjMjpBs)是可玩的。它无法在嵌入视图中播放。
但有些视频无法播放。例如,“Lana Del Rey - Gods and Monsters”(3BwfuFuYOWE)无法在UIWebView中播放。 YouTube页面加载,但我没有播放视频,而是看到错误“内容所有者尚未在移动设备上显示此视频”。
我们希望在搜索时过滤掉这些不可播放的视频。 GTLQueryYouTube API仅支持对“videoEmbeddable”和“videoSyndicated”进行过滤,这两种情况均无法正确过滤 out Lana Del Rey视频,但留下 Rihanna视频
似乎有一个缺少过滤器参数来过滤掉这些类型的视频。检查metadata并未发现Rihanna和Lana Del Rey视频之间存在任何明显差异。
想法?
答案 0 :(得分:2)
一般情况下,遗憾的是无法使用API确定所有播放限制。我们在这里有一个API v2指南:http://apiblog.youtube.com/2011/12/understanding-playback-restrictions.html但是还没有类似的v3资源。
我建议使用(videoEmbeddable和videoSyndicated)搜索限制,因为这是他们的设计目的。一种方法是将用户带到m.youtube.com以播放受第三方应用限制的视频。或者,您可以尝试与内容所有者联系并说服他们更改内容的配置(因为这是YouTube强制执行但未配置的内容)。
关于您专门列出的视频:
答案 1 :(得分:0)
一种可能的解决方案(诚然,不是很优雅)是进行两次GTLQueryYouTube
次呼叫:
videoSyndicated
关闭(或设置为all
):在GTLYouTubeSearchResultSnippet
的说明字段中搜索关键字“VEVO”,返回热门搜索结果
videoSyndicated
on(设置为true
):最佳搜索结果(使用您选择的适当过滤器)。
如果第一个查询返回null结果,那么您假设没有VEVO视频,并且您使用下一个最佳可播放视频(2)。