通过Youtube Data Api获取频道订阅列表

时间:2020-07-06 12:16:50

标签: android youtube youtube-data-api

是否可以通过最近订阅的方式订购YouTube频道的订阅列表?

youtube
       .subscriptions()
       .list("snippet")
       .setOrder("")// relevance, unread, alphabetical
       .setMaxResults((long) 1000) // it is not affecting, the max limit is 50
       .setMine(true)
       .execute();

根据文档,一次一次最多只能获取50个项目,而且我只有三个订单类型参数 relevant 未读字母

但是我需要访问我最近订阅的频道。如果有人帮助我解决这个问题,我将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

根据the docs,您可以使用以下参数:

myRecentSubscribers (布尔值)

此参数只能在经过适当授权的请求中使用。将此参数的值设置为true可以按倒序(最新的顺序)检索经过身份验证的用户的订阅源。

请注意,此参数仅支持检索经过身份验证的用户的频道的最新1000个订户。要检索订户的完整列表,请使用mySubscribers参数。该参数不会按特定顺序返回订阅者,它不会限制可以检索的订阅者数量。

也就是:在上述代码的setter序列中插入.setMyRecentSubscribers(true)之类的东西。 (您也可以删除setChannelId setter调用,因为通过要求您被授权调用此终结点,API已经知道您的调用所指向的通道。)

还要注意,参数的maxResults最大值是50。要仅接收最新的订户,请按上述设置程序顺序使用.setMaxResults(1)


如果要获取所有订阅的列表,则有以下参数:

我的(布尔值)

此参数只能在正确的authorized request中使用。将此参数的值设置为true可以检索经过身份验证的用户的订阅的供稿。

设置者顺序中有.setMine(true)(无.setChannelId)。

由于该端点提供了paginated result sets,因此您将不得不反复调用API的端点来获取所有订阅。获得所有这些订阅后,按snippet.publishedAt对它们进行排序。

如果您仅想获取已订阅的最新频道,而不是排序算法,就足以在频道上使用max算法(O(n)而非O(n log n))相同的属性。

有关如何在代码中实现分页的示例,请查看Google本身提供的sample code

答案 1 :(得分:1)

据您所知,您想检查一下您是否在Youtube Data API V3的帮助下关注特定的youtube频道。

为此,document中提到可以使用forChannelId参数。

Youtube Data API还有一个游乐场,可让您查看查询结果。您可以简单地在forChannelId字段中输入channelId,如果未订阅指定的频道,则result将返回一个空数组;如果您未订阅指定的频道,则result将返回该指定频道的数据。

您可以从Java应用程序中进行简单的请求以获取结果。在此代码示例中,我要检查授权的youtube API用户是否已订阅Firebase Youtube Channel

SubscriptionListResponse response = request.setForChannelId("UC_x5XG1OV2P6uZZ5FSM9Ttw")
        .setMine(true)
        .execute();

并且响应将在您提出的请求中包括指定渠道的详细信息。我还分享了我在上面共享的请求的响应。

{
  "kind": "youtube#SubscriptionListResponse",
  "etag": "zCQ7lTwIBgdyVsQmbymEu-fUgjU",
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 5
  },
  "items": [
    {
      "kind": "youtube#subscription",
      "etag": "A-G_B0BnSqn7XtJi7BgHJEk9L3Q",
      "id": "uTEDDg6jpPBwnsim9moHkataEljshwFopudOgIy34nk",
      "snippet": {
        "publishedAt": "2020-07-08T14:02:43.789000Z",
        "title": "Google Developers",
        "description": "The Google Developers channel features talks from events, educational series, best practices, tips, and the latest updates across our products and platforms.",
        "resourceId": {
          "kind": "youtube#channel",
          "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw"
        },
        "channelId": "UCC77fYySvfP7p-6QGaa-3lw",
        "thumbnails": {
          "default": {
            "url": "https://yt3.ggpht.com/-Fgp8KFpgQqE/AAAAAAAAAAI/AAAAAAAAAAA/Wyh1vV5Up0I/s88-c-k-no-mo-rj-c0xffffff/photo.jpg"
          },
          "medium": {
            "url": "https://yt3.ggpht.com/-Fgp8KFpgQqE/AAAAAAAAAAI/AAAAAAAAAAA/Wyh1vV5Up0I/s240-c-k-no-mo-rj-c0xffffff/photo.jpg"
          },
          "high": {
            "url": "https://yt3.ggpht.com/-Fgp8KFpgQqE/AAAAAAAAAAI/AAAAAAAAAAA/Wyh1vV5Up0I/s800-c-k-no-mo-rj-c0xffffff/photo.jpg"
          }
        }
      }
    }
  ]
}