【发布时间】:2016-12-20 15:09:41
【问题描述】:
如何使用 YouTube JavaScript API v3 以获取给定用户名的所有频道以及所有播放列表,例如 JSON 等?
我使用了以下参考资料
- https://developers.google.com/youtube/v3/docs/channels/list
- https://developers.google.com/youtube/v3/docs/playlists/list
https://stackoverflow.com/a/18767785/799593 似乎不再工作了。
下面是我的代码,调用通道端点。它基本上使用AngularJS执行HTTP GET操作,其中“id”是ChannelID,由“query”参数传递。
var getUrl = 'https://www.googleapis.com/youtube/v3/channels';
this.get = function (apiKey, query) {
var parameters = {
kind: 'youtube#channel',
part: 'contentDetails',
id: query,
maxResults: 3,
key: apiKey
}
return $http({
url: getUrl,
method: 'GET',
params: parameters
})
};
此查询基本上只能返回给定 YouTube 频道的已上传视频和喜欢的视频的 ID。相反,我希望获取给定用户的所有频道列表。
我也尝试了以下方法:
this.getByUserName = function (apiKey, query) {
var parameters = {
kind: 'youtube#channel',
part: 'contentDetails',
forUsername: query,
maxResults: 5,
key: apiKey
}
return $http({
url: getUrl,
method: 'GET',
params: parameters
})
};
但它似乎只返回“主渠道”,换句话说,如果我使用 forUsername="Google" 进行查询,我会得到UCK8sQmJBp8GCxrOtXWBpyEA ...因此与我在“思维导图”中的解释相矛盾下面,正确的层次结构实际上可能为每个用户帐户仅链接一个频道,并且该频道可以有多个播放列表。但这实际上看起来 Google/YouTube 的做法令人困惑和想得太多。
例如如果用户通过“Google”,那么 API 将回复我们在 https://www.youtube.com/user/Google/channels 上看到的所有频道
这看起来相对简单,但 API 基本上似乎仅限于以逗号分隔的 YouTube 播放列表 ID 列表,但问题是如何在给定 UserID 的情况下将它们放在首位?
我有兴趣获得相当于:https://www.youtube.com/user/UserID/playlists 的结果,但以下是我目前所拥有的结果。
var getUrl = 'https://www.googleapis.com/youtube/v3/playlists';
this.get = function (apiKey, query) {
var parameters = {
kind: 'youtube#playlist',
part: 'contentDetails',
id: query,
maxResults: 10,
pageToken: '',
key: apiKey
}
return $http({
url: getUrl,
method: 'GET',
params: parameters
})
};
我会用这个 YouTube 层次结构的“思维导图”和带有链接的谷歌注释示例来结束我的问题。我不确定这是否是正确的表示,但我相信如果我知道正确的层次结构,它可能会提示我如何使用 YouTube JavaScript API v3 为给定用户获取 YouTube 频道和播放列表。
(全尺寸图片位于:http://i.imgur.com/GWoZvCE.png)
【问题讨论】:
标签: javascript angularjs youtube youtube-data-api