【问题标题】:YouTube API v3: Get all Channels and PlayLists for given User-nameYouTube API v3:获取给定用户名的所有频道和播放列表
【发布时间】:2016-12-20 15:09:41
【问题描述】:

如何使用 YouTube JavaScript API v3 以获取给定用户名的所有频道以及所有播放列表,例如 JSON 等?

我使用了以下参考资料

https://stackoverflow.com/a/18767785/799593 似乎不再工作了。

==> Channels

下面是我的代码,调用通道端点。它基本上使用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 上看到的所有频道

==> Playlists

这看起来相对简单,但 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


    【解决方案1】:

    我在 ReacJS 中编写了一个仅用于播放列表的代码。希望这会给你一些想法。我正在使用谷歌 API。它为我工作。只需将我的频道 ID 和 api 密钥替换为您的即可。

    import React, { Component } from "react";
    
    class App extends Component {
      constructor(props) {
        super(props);
        this.state = {
          items: [],
          isLoaded: false
        };
      }
    
      componentDidMount() {
        fetch(
          "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=<YOUR-CHANNEL-ID>&key=<YOUR-API-KEY>"
        )
          .then(res => res.json())
          .then(json => {
            this.setState({
              isLoaded: true,
              items: json.items
            });
          });
      }
    
      render() {
        var { isLoaded, items } = this.state;
        var i=0;
        if (!isLoaded) return <div>Loading...</div>;
        return (
          <div>
            <ul>
            {
              items.map(item => (
                <li key={item.id}>
                  Playlist: {items[i++].snippet.title}
                </li>
              ))
            }
            </ul>
          </div>
        );
      }
    }
    
    export default App;
    

    这是的输出

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 2015-01-06
      • 2015-08-20
      • 2020-10-02
      • 2015-11-24
      • 2016-03-17
      • 2013-05-04
      • 2018-02-19
      • 2013-09-19
      相关资源
      最近更新 更多