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.list
和channels.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 data api 3 php,如何从一个频道获取超过 50 个视频?