提问者:小点点

YouTube API:检索用户在给定日期之前/之后订阅的订阅列表


我正在创建一个RESTful API,其中的一些endpoint必须使用YouTube API来获取所需的用户数据,而我已经为其中的一个特性纠结了好几天了。

其中一个功能涉及YouTube订阅,允许用户将自己的数据分配给他们。 然后,订阅数据将存储在API数据库中。 我面临的问题是,我想要检索尚未分配(意思是:尚未由API返回)给用户的订阅列表。 未分配订阅的endpoint必须进行分页,因为我无法使用可能很大的对象进行响应。 所以我想让用户指定参数,例如pageper_page

YouTube API也会用分页的订阅列表来响应。

请求get https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&mine=true&key=[YOUR_API_KEY]会给我一个响应,其中包括诸如NextPageTokenPrevPageToken等字段,订阅对象列表,其中每个对象都包含Publishedat字段。

我正在考虑的解决方案如下:

为了跟踪返回的订阅,我将在API数据库中创建以下字段:

LastSubscriptionDate:datetime-我的API缓存的最早订阅日期

firstSubscriptionDate:datetime-我的API缓存的最近订阅日期

LastPageToken:string-请求数据并保存LastSubscriptionDate的最后一个页面

流程:

  1. 用户请求获取/订阅?filter=未分配&PAGE=[PAGE]&PER_PAGE=[PER_PAGE]
  2. 由于我将按时间顺序(按最近的时间)从YouTube API请求这些订阅,因此我有以下情况:

我检查LastSubscriptionDate是否等于LastPageToken页面上最后一个结果的Publishedat

如果为真=>; 返回NextPageToken的页面(如果存在)并更新我的“跟踪”数据。

else=>;

a)页面上最后一个结果的publishedat早于缓存的lastsubscriptiondate<=>用户删除了一些订阅。

b)页面上最后一个结果的publishedat比缓存的lastsubscriptiondate<=>订阅某些新YouTube频道的用户更新

在a)和b)选项中,最好的方法是只检索n(其中n等于per_page参数)在lastsubscriptiondate之后或firstsubscriptiondate之前的订阅,以确保在分页过程中不会跳过任何订阅,但我觉得用当前版本的YouTube API是不可能的。

我是不是漏掉了什么? 有没有其他方法可以从YouTube API中检索那些未分配的订阅,同时确保我没有跳过任何订阅?


共1个答案

匿名用户

您的报价:

因为我会按时间顺序(最近的)[...]从YouTube API请求订阅。

使用mine=true查询的subscriptions.listAPI终结点没有使您能够获取由publishedat订购的订阅资源的参数。

我没有看到其他解决方案,但你的应用程序有一个刷新我的订阅列表功能,当用户知道他/她改变了他/她的订阅列表从YouTube Web UI。 当然,事情还可以进一步发展:例如,还可以定期调用refresh my subscriptions list,而无需任何用户干预(使用您设计的逻辑,使其适合您应用程序的一般工作方式)。

然后,刷新我的订阅列表将从YouTube数据API中获取所有的订阅资源,并将此列表(L1)与应用程序数据库中记录的列表(L2)进行匹配,以获得差异:对于L1L2联合中的每个条目,将(1)=附加到两个列表中的条目,(2)-附加到仅存在于L2中的条目,(3)+附加到仅存在于L1

计算出的差异将允许更新应用程序的数据库(从而使其与YouTube的遥控器同步)。