我已经浏览了YouTube API文档,但据我所知,没有办法有效地从多个YouTube频道请求信息(例如最近上传的视频列表)。
据我了解,需要做的第一件事是获取每个YouTube频道"上传"播放列表的播放列表ID。
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
然后使用之前检索到的播放列表ID获取上传的视频。
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_API_KEY}
每个通道有两个请求,如果只是一个或两个通道就可以了,但对于数百个通道则不然。
如何有效地将所有这些请求分组到一个 API 调用中?
数据 API 支持批处理,您可以在一次 API 调用中请求多个 YouTube 频道Batch Processing
允许您使用single API request
执行多达 50 个操作,而不是为每个单独的操作提交单独的请求。一个批处理请求可以组合多个查询(GET)
、插入(POST)
、更新(PUT)
和删除(DELETE)
操作。每个操作都包含在请求中的一个标记中。
要提交批处理请求,请将POST
请求发送到批处理 URL。每个源都有自己的批处理 URL,当您向该URL
提交请求时,您可以对该源中的任何条目执行 API 操作。源的批处理网址显示在 rel 属性值为 http://schemas.google.com/g/2005#batch
的 <link>
标记中。该代码是该 Feed 的代码的子代码。
<feed xmlns='http://www.w3.org/2005/Atom' ...>
<id>https://gdata.youtube.com/feeds/users/USER_ID/playlists</id>
...
<link rel='http://schemas.google.com/g/2005#batch'
type='application/atom+xml'
href='https://gdata.youtube.com/feeds/api/users/USER_ID/playlists/batch?v=2'/>