列出YouTube数据API V3上的YouTube订阅者错误?

时间:2019-08-29 17:41:20

标签: youtube-api youtube-data-api

情况

我正在尝试列出我管理的频道的所有订阅者。

对于API来说,这似乎是一个非常简单的用例。我正在使用python来通过参数击youtube/v3/subscriptions端点:

  • part=snippet
  • mySubscribers=true
  • pageToken(用于分页)

这非常适合多次页面迭代。

问题

在此过程中的某个时刻,页面调用之一将返回404 SubscriberNotFound。目前,我最好的 guess 是,如果我频道的订阅者的订阅设置为私有,则返回404。这是该错误的完整JSON响应:

{
 "error": {
  "errors": [
   {
    "domain": "youtube.subscription",
    "reason": "subscriberNotFound",
    "message": "The subscriber identified with the request cannot be found.",
    "locationType": "parameter",
    "location": "channelId"
   }
  ],
  "code": 404,
  "message": "The subscriber identified with the request cannot be found."
 }
}

我可以跳过那些特定的用户,但这似乎是不可能的,因为我需要下一个pageToken来跳过该页面。请注意,上面的响应如何仅描述错误,即否pageToken

因此,我无法继续提取后续页面并生成列表。

似乎不是由我的代码引起的

为了确保我的代码没有问题,我在API资源管理器中在线匹配了失败调用的参数(包括pageToken),并收到了相同的响应,并且缺少后续的pageToken。

其他问题

似乎整个页面的搜索结果都会失败,尽管其中只有一个用户具有私人订阅(或导致404错误的原因),但其中的所有用户都将失败。因此,即使API仍返回了下一个pageToken,允许我跳过该页面,我也将跳过具有可用数据的用户。

例如,如果我的maxResults设置为50,而只有1个用户导致整个页面的数据价值变成404,那么我将缺少49个本应从该页面抓取的订户。

但是,在这种情况下,一种解决方法是将maxResults设置为1。这也不尽人意(但是,再次,不能立即跳过页面)。

我的主要问题

  1. 是否有一种方法可以从本质上“过滤”我的频道的订阅者,这些订阅者的订阅设置为private(或导致404的原因)?我似乎在文档中找不到任何内容。如果有办法做到这一点,它将完全避免这两个问题(完全失败或不必要地跳过“良好”数据)。

  2. 如果没有针对此特定问题的解决方法,是否可以通过其他方法生成我所有订阅者的列表?

非常感谢您的帮助!!我感到被击败了哈哈。

事后

在尝试1000多种方法来解决此问题的过程中,我还尝试通过查看以64为底的间隔来猜测pageToken的进度。它们似乎是区分大小写的字母数字字符串,会迭代线性地,所以我试图确定该步长并将其添加到先前的pageToken(以64为基数的整数)中。这看起来很有希望,但是超级阴暗,我最终遇到了问题。无论如何,似乎并不需要这样的解决方案。哈哈。

0 个答案:

没有答案