YouTube 数据 API 某些视频不返回频道

Posted

技术标签:

【中文标题】YouTube 数据 API 某些视频不返回频道【英文标题】:YouTube Data API some videos do not return channel 【发布时间】:2016-06-05 16:09:21 【问题描述】:

我使用 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,它(如预期的那样)有一个频道标题。

有什么想法吗?

【问题讨论】:

您在阅读特殊字符、引号等时似乎遇到了问题,因为它们可能会转义您正在构建的字符串。解决此问题的方法是 Apache Commons IO 库或 Guava,而不是 shure。运气。 【参考方案1】:

这个问题似乎是在大约两年前报告的,但遗憾的是,Google 尚未做出回应。记者表示channelTitle在频道标题中有空格时返回空白。 (在您的示例中,Q_6XNufgvA4 的频道标题是“世界最佳视频”,其中确实包含一个空格。)

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

幸运的是,作为一种解决方法,channelTitle 在从videos.listchannels.list 返回时似乎可以正确填充。

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:

您可以从您的搜索响应 (items/snippet/channelId) 中获取 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"
   
  
 ]

【讨论】:

谢谢。这工作正常。我只对返回“”的视频使用这种方式。可悲的是,这种方式花费了更多的时间和 api 单位(从可用的 50,000,000 中)。希望修复会到来。

以上是关于YouTube 数据 API 某些视频不返回频道的主要内容,如果未能解决你的问题,请参考以下文章

Youtube api v3 无法从频道中检索所有视频

youtube data api 3 php,如何从一个频道获取超过 50 个视频?

YouTube API v3 未检索频道的视频

youtube api v3 从比视频更新的频道中获取所有视频

从 VB.NET 频道获取 YouTube 视频

Youtube data api v3 按特定频道搜索所有上传和发布的视频