我已经测试了YouTube的PlaylistItems.list API来获取频道的默认播放列表。
在响应载荷中,在2020年发布的视频-- 10-14T20:22:24Z --在第一个对象中,然后下一个视频--在2020年发布-- 10-21T17:54:05Z--在第二个对象中。
在这个回答中提到:
从播放列表查询返回的publishedAt是视频添加到播放列表中的日期,而不是视频在YouTube上发布的日期。
我的案子可能是什么原因?
该API是否有特定的排序顺序?
发布于 2020-11-25 12:15:02
您看到您所演示的顺序的原因(尽管您没有提到您的播放列表ID,以便其他人来验证您的声明)有两个原因。
1.视频的发布时间很可能与其上传时间不同的是
第一件事是:根据视频资源 publishedAt属性的官方文档(下面的重点是我的):
snippet.publishedAt (日期时间) 视频发布的日期和时间。请注意,这一次可能与上传视频的时间不同。例如,如果一个视频被上传为一个私有视频,然后在以后的某个时间公开,则此属性将指定视频公开的时间。 有几个特例:
该值是以ISO 8601格式指定的。
因此,在这种情况下,很可能是一个特定的视频有不同的上传时间和发布时间。
此外,PlaylistItems资源的官方文档显示了以下w.r.t。两个相关的属性:
snippet.publishedAt (日期时间) 将项目添加到播放列表中的日期和时间。该值是以ISO 8601格式指定的。contentDetails.videoPublishedAt (日期时间) 将视频发布到YouTube的日期和时间。该值是以ISO 8601格式指定的。
从snippet.publishedAt的规范来看,如果播放列表是给定频道的上传播放列表(即ID为UU...格式的播放列表;请注意,通常一个频道ID及其相应的上传播放列表ID是由s/^UC([0-9a-zA-Z_-]{22})$/UU\1/关联的,尽管没有正式记录),snippet.publishedAt的值就是该视频的上传日期。
第二个规范指出,contentDetails.videoPublishedAt的值是相应的视频资源的snippet.publishedAt值,即该视频的发布时间。
对于一个通道的上传播放列表,由PlaylistItems.list API端点返回的项(必须是)由 contentDetails.videoPublishedAt按相反的时间顺序排序。
事实上,排序条件似乎是正确的。这个特性并没有正式记录下来,但根据我的经验,上述声明对于从PlaylistItems.list端点获得的每个结果集都是正确的。
在这里,我可以提出以下论点,说明在调用PlaylistItems.list端点时所产生的项由contentDetails.videoPublishedAt按反向时间顺序(最新的优先顺序)排序的必要性
这个论点是务实的:如果PlaylistItems.list的结果集没有像前面提到的那样有序,那么这个端点就变得无用了。
这种情况是这样的,因为在这种情况下,要获得最近发布的视频,必须在本地获取所有上传的项目(到20000的数量),然后扫描结果集以查找最新的。被迫获取所有上传的项目只是为了获得最新的一个是务实的胡说八道。如果一个给定频道的上传次数超过了20000的限制,那么最近的视频可能在这个边界之外;因此,对于这类频道,最近发布的视频根本无法从API获取。
因此,由于矛盾的原因,结果集必须由contentDetails.videoPublishedAt按相反的时间顺序排序。
https://stackoverflow.com/questions/65002092
复制相似问题