如何从REST API search.list结果中过滤掉YouTube内容阻止的视频

时间:2015-07-28 21:10:25

标签: ios swift iframe uiwebview youtube-api

我正在使用Swift创建一个iOS应用,允许用户使用youtube的rest API搜索和播放YouTube视频。为此,我使用的是UIWebView和YouTube iFrame。问题是许多视频被VEVO和某些唱片公司阻止播放,例如视频。我想知道是否有办法过滤搜索结果,以便阻止的视频不显示?我已经尝试将videoSyndicated和videoEmbeddable设置为true而没有运气。或者,内容块有没有办法?

以下是我用来搜索的代码:

var searchUrl = "https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=20&q=\(video)&type=video&videoEmbeddable=true&videoSyndicated=true&key=MYAPIKEY"
let url = NSURL(string: searchUrl)
var request = NSURLRequest(URL: url!)
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)

if data != nil {
    var json = JSON(data: data!)

    for i in 0..<20 {
        if let videoId = json["items", i, "id", "videoId"].string {
            videoIds.append(videoId)
        }
    }
}

以下是我用来加载视频的代码:

let embededHTML = "<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){a.target.playVideo();}</script><iframe id='playerId' type='text/html' width='200' height='200' src='http://www.youtube.com/embed/\(videoID)?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'></body></html>"

webView.loadHTMLString(embededHTML, baseURL: NSBundle.mainBundle().resourceURL)

2 个答案:

答案 0 :(得分:0)

您无法在搜索请求中对此进行过滤,但是一旦获得与您的请求匹配的ID列表,您就可以通过videos.list调用查看是否已阻止该ID。您可以检查它是rejected(通过查看状态)还是blocked(通过查看contentDetails)。

视频可能被拒绝的一些可能原因:

  
      
  • 权利要求
  •   
  • 版权
  •   
  • termsOfUse
  •   
  • 商标
  •   

答案 1 :(得分:0)

原来我可以通过将原点设置为工作网址来实现播放被屏蔽的视频。例如,在htmlString变量中我添加了&origin='http:www.example.com'