.Net youtube数据api。检测嵌入是否已被禁用?

时间:2017-12-11 14:36:50

标签: c# .net youtube-api youtube-data-api

我正在创建一个小窗口表单应用程序,它将根据查询返回视频列表。我正在使用此链接https://developers.google.com/youtube/v3/code_samples/dotnet一切正常,但是如果某个视频的所有者禁用了嵌入,那么我在尝试播放视频时遇到错误: "在youtube上观看此视频。其他网站上的播放已被视频点播功能禁用"。

所以现在我有两个问题

1)有没有办法播放该视频?

2)如果第一个问题的答案为否,那么我如何过滤那些嵌入已被其所有者禁用的视频。意味着我不想在我的列表中添加这些视频。

感谢。

3 个答案:

答案 0 :(得分:0)

根据official documentation,每个视频都有status.embeddable属性,您可以在代码中查看。

答案 1 :(得分:0)

无论使用何种语言,status.embedabble都是在成功调用Videos reference中使用的某个方法时的响应。

所以我建议使用方法列表作为示例。为了演示,我在此videos.list Try-it中放置了一个YouTube视频,并放置了#34;状态"作为部分参数。

而且我已经获得了可嵌入的状态:

"items": [
    {
      "kind": "youtube#video",
      "etag": "\"7991kDR-QPaa9r0pePmDjBEa2h8/7NFYOO88j54fU9aKM8MsjN4zPro\"",
      "id": "kIBdpFJyFkc",
      "status": {
        "uploadStatus": "processed",
        "privacyStatus": "public",
        "license": "youtube",
        "embeddable": true,
        "publicStatsViewable": true
      }
    }
  ]

答案 2 :(得分:0)

感谢所有答案。在浏览文档之后,我终于找到了过滤那些嵌入者被所有者禁用的视频的解决方案。

YoutubeService.Search.List方法的VideoEmbeddable属性需要Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoEmbeddableEnum可以解决问题。

var searchListRequest = youtubeService.Search.List("snippet");
            searchListRequest.Q = ""; // Replace with your search term.
            searchListRequest.MaxResults = 50;
            searchListRequest.Type = "video";
            searchListRequest.VideoEmbeddable = SearchResource.ListRequest.VideoEmbeddableEnum.True__;

指定类型“视频”只会返回所有视频,播放列表和频道的视频内容。