提取所有YouTube频道及其统计信息的最佳做法是(每天)

时间:2019-05-02 12:47:39

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

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

在我研究这是我必须遵循的方法:

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

    Search.list 使用以下参数:type=channel, publishedAfter=yesterday's 00:00, publishedBefore=Today 00:00, maxResults 50, order=Date。我将在publishedAfterpublishedBefore中传递24小时范围(例如,从00:00到nextDay 00:00),以便获得最大结果数,因为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

我的查询:

我还可以采用其他方法吗?

上述方法是否有问题?

1 个答案:

答案 0 :(得分:1)

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

原则上您的想法是可以的。我认为由于某些限制而无法使用。

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

YouTube在查询方面有一定的限制,因此from YouTube documentation:

  

启用YouTube数据API的项目具有默认配额   每天分配 10,000单位,足以满足   我们绝大多数的API用户。默认配额,即   随时更改,可帮助我们优化配额分配并扩展规模   以对我们的API用户更有意义的方式构建基础架构。您   可以在Google API的“用法”标签上查看您的配额使用情况   开发者控制台。

假设您已启用此功能,则似乎每天分配了1万个单位,并且每个搜索查询的费用为100 units

这意味着您必须调用搜索API 100次(在调用通道API之前要用尽单位)-带有最大结果标记(50 MAX),每天应该会产生5K个结果。

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

如果每天发布的视频数量大于5K(无论如何,我认为应该超过5000K),您将丢失很多数据。

这很普遍,但是有更好的方法。

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

我们有类似您所描述的在内部运行的内容-定期提取数据源。是的,在整个行业中,都有一项cron工作来执行类似的事情是相当标准的。 **更好的方法**需要不同的架构,就像Webhooks一样。基本上,每次统计信息发生变化时,您最终都会通知相关方某些情况已发生变化。参见Pub / Sub pattern for more info.