【问题标题】:What is the best practice to fetch all YouTube channels and their stats (daily)获取所有 YouTube 频道及其统计信息的最佳做法是什么(每天)
【发布时间】:2019-09-20 23:56:25
【问题描述】:

我想从 youtube 获取所有频道及其每日统计信息。

根据我的研究,这是我必须遵循的方法:

  1. 如果我之前没有使用此 API 存储,则获取所有频道并存储:->

    Search.list 使用此参数:type=channel, publishedAfter=yesterday's 00:00, publishedBefore=Today 00:00, maxResults 50, order=Date。我将在publishedAfterpublishedBefore(例如 00:00 到 nextDay 00:00)中传递 24 小时范围,以便我可以获得最大数量的结果,因为 youtube API 在分页中有一些错误/限制。他们每次点击最多给出 500 个结果。我尝试使用publishedBefore 的日期为 2019 年,publishedAfter 的日期为 2005 年,但我只有大约 400 个频道。这就是为什么我要经过一个小范围的 24 小时。

  2. 获取所有频道后,我将使用此 API 获取该频道的公开可用统计信息。 Channels.list

我将创建一个 cron 作业,该作业将在每天 00:00 的某个时间运行这些步骤。 然后我会根据前一天的统计数据计算当天的统计数据。

例如

10th April views = 11 April 00:00 views - 10 April 00:00 Views

我的查询:

我还有其他方法可以遵循吗?

上述方法有什么问题吗?

【问题讨论】:

    标签: node.js youtube-api youtube-analytics-api


    【解决方案1】:

    由于 API 限制,它无法工作。

    原则上你的想法是好的。我认为由于某些限制,它不会起作用。

    如果您相信 this website - YouTube 拥有超过 2300 万个频道(截至 2018 年 12 月)。

    YouTube 对查询有一定的限制,所以from YouTube documentation:

    启用 YouTube 数据 API 的项目具有默认配额 每天 10,000 个单位,足够 绝大多数我们的 API 用户。默认配额,即 可能会发生变化,帮助我们优化配额分配并扩展我们的 以对我们的 API 用户更有意义的方式构建基础设施。你 可以在 Google 中 API 的“使用情况”选项卡上查看您的配额使用情况 开发者控制台。

    假设您启用了此功能,看起来您每天有 10K 单位分配给您,并且您的每个搜索查询费用为 100 units

    这意味着您可以调用搜索 API 100 次(在调用通道 API 之前耗尽您的单位) - 使用最大结果标志 (50 MAX),应该每天为您产生 5000 个结果。

    如果这个数字大于每天在 24 小时内发布的人,那么您会没事的,并且您最终可能会获得一些重要的数据。但是您不能通过 API 调用获得所有数据。您将受到 API 调用的限制。

    如果每天发布的视频数量超过 5K(我相信无论如何应该已经超过了),您将丢失大量数据。

    这很常见,但有更好的方法。

    (这可能不适用于 YouTube,只是一般性的建议)

    我们有类似你所描述的内部运行的东西 - 定期摄取数据源。 所以是的,有一个 cron 工作来做这样的事情是整个行业的标准。 **虽然需要不同架构的**更好的方法是使用 webhook。基本上,每次统计数据发生变化时,您最终都会通知相关方某些事情发生了变化。见Pub / Sub pattern for more info.

    【讨论】:

    • 感谢您的详细回答。现在我有2个问题。 1. Pub/Sub:我知道 pub/sub。但是 youtube API 是否提供了这种功能? 2. 向谷歌请求更多配额分配是个好主意吗?
    • 据我所知,YouTube API 不提供该功能 - 我将其作为一般示例 - 应该指出这一点。当然,您可以向 Google 请求更多配额分配,但我认为您永远不会被允许拥有与他们拥有的相同数据。我会更专注于您可以诚实地管理的视频子集,而不是追求所有内容。当您在 Google/YouTube 规模上谈论时,一切都是非常非常大的集合
    • 编辑了我的答案以澄清 Pub/Sub
    • 我在 SO 上找到了这个 Multiple accounts。其中提到我们可以为同一个应用程序使用来自多个项目的多个 API 密钥。不是个好主意吗? 我会更关注视频的子集:在我的应用程序中,任何人都可以查看 YT 中任何频道的 viewCount 和subscribersCount(每天)。这就是我需要所有频道的原因。
    • 这绝对不是一个好主意。如果您只是想拼凑一个没有 SLA/没有可靠性标准的项目,那么您可以尝试一下。 Google / YouTube 可能有他们的服务条款,其中指定了您可以使用多少个帐户 (1) 来访问他们的服务。如果您的帐户因为您试图超出 YouTube 允许的 API 限制而被发现并被阻止,会发生什么情况?您的服务将停止运行!
    猜你喜欢
    • 2022-01-20
    • 2021-01-23
    • 2013-01-16
    • 2018-12-05
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2016-02-25
    相关资源
    最近更新 更多