我想从youtube获取所有频道及其每日统计信息。
在我研究这是我必须遵循的方法:
如果我以前没有使用此API进行存储,则获取所有频道并进行存储:->
Search.list
使用以下参数:type=channel, publishedAfter=yesterday's 00:00, publishedBefore=Today 00:00, maxResults 50, order=Date
。我将在publishedAfter
,publishedBefore
中传递24小时范围(例如,从00:00到nextDay 00:00),以便获得最大结果数,因为youtube API在分页中存在一些错误/限制。他们每次点击最多给出500个结果。我尝试将publishedBefore
的日期设置为2019,将publishedAfter
的日期设置为2005,但是只有大约400个频道。这就是为什么我只经过24小时。
我将创建一个cron作业,该作业将每天在某个时间(可能是00:00)运行这些步骤。 然后,我将对前一天的统计信息进行一些计算,以计算出当天的统计信息。
例如
10th April views = 11 April 00:00 views - 10 April 00:00 Views
我的查询:
我还可以采用其他方法吗?
上述方法是否有问题?
答案 0 :(得分:1)
原则上您的想法是可以的。我认为由于某些限制而无法使用。
如果您相信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.