【问题标题】:How to filter out YouTube's content-blocked videos from REST API search.list results如何从 REST API search.list 结果中过滤掉 YouTube 的内容屏蔽视频
【发布时间】:2015-10-19 15:35:03
【问题描述】:

我正在用 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)

【问题讨论】:

    标签: ios swift iframe uiwebview youtube-api


    【解决方案1】:

    事实证明,通过将源设置为工作 URL,我实际上可以让它播放被阻止的视频。比如我在 htmlString 变量中添加了&amp;origin='http:www.example.com'

    【讨论】:

      【解决方案2】:

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

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

      • 声明
      • 版权
      • 使用条款
      • 商标

      【讨论】:

      • 我只是看了这些,他们没有说它是否无法播放,只是在某些国家/地区被拒绝上传或被阻止的情况下。我用我知道被阻止的视频尝试了 API 资源管理器,他们都让我假设它没有被阻止。
      • 该视频的结果如何?
      • "contentDetails": { "duration": "PT5M32S", "dimension": "2d", "definition": "hd", "caption": "false", "licensedContent": true, "regionRestriction": { "blocked": [ "DE" ] } }, "status": { "uploadStatus": "processed", "privacyStatus": "public", "license": "youtube", "embeddable": true, "publicStatsViewable": true }
      • 是的,但我在美国,它仍然被阻止。
      • 视频的 ID 是什么?
      猜你喜欢
      • 2016-01-19
      • 2020-11-28
      • 2018-10-03
      • 2021-05-10
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 2017-04-21
      • 2013-08-06
      相关资源
      最近更新 更多