YouTube Data API有些视频不会返回频道

时间:2016-02-23 17:18:48

标签: android youtube youtube-api youtube-data-api youtube-channels

我使用YouTube数据API从查询结果(视频)中获取一些信息。

大多数视频都会正确返回数据。但是有些视频没有返回其频道标题(所有其他字段无论如何都返回正确)。

    com.google.api.services.youtube.YouTube.Search.List search = youtube.search().list("id,snippet");
    search.setKey(getString(R.string.APIKEYYOUTUBE));
    search.setQ("hi");
    search.setType("video");
    search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/medium/url,snippet/channelTitle,snippet/publishedAt)");
    search.setMaxResults(7);

        [...]

    String vId = rId.getVideoId();
    String test = singleVideo.getSnippet().getChannelTitle();

示例:

第二个视频返回:

vId = "Kgw9xKQX-dI"
test = "htmailru"

返回第三个视频:

vId = "Q_6XNufgvA4"
test = ""

但是,如果我在youtube中证明了第三个视频ID,它(如预期的那样)有一个频道标题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看起来这个问题差不多是在两年前报道的,但遗憾的是还没有得到谷歌的回应。记者表示,只要频道标题包含空格,channelTitle就会返回空白。 (在您的示例中,Q_6XNufgvA4的频道标题是"世界上最好的视频,"确实包含空格。)

https://code.google.com/p/gdata-issues/issues/detail?id=6104

幸运的是,作为一种变通方法,从videos.listchannels.list返回时,channelTitle似乎确实填充正确。

<强> videos.list:

使用搜索回复中的videoId

GET https://www.googleapis.com/youtube/v3/videos?part=snippet&
id=Q_6XNufgvA4&
fields=items%2Fsnippet%2FchannelTitle&
key={YOUR_API_KEY}

返回

{
 "items": [
  {
   "snippet": {
    "channelTitle": "World's Best Videos"
   }
  }
 ]
}

<强> channels.list:

您可以从搜索回复(channelId)获取items/snippet/channelId并发送请求,如下所示。

GET https://www.googleapis.com/youtube/v3/channels?part=snippet&
id=UCHqBLGGOvojeQswyJptjukA&
fields=items%2Fsnippet%2Ftitle&
key={YOUR_API_KEY}

返回

{
 "items": [
  {
   "snippet": {
    "title": "World's Best Videos"
   }
  }
 ]
}