我正在尝试获取用户的订阅列表。你一次只能得到50个,所以我想创建一个批量处理,一次完成所有操作。
我使用Jquery和ajax发送POST请求,如下所示:
var query = "<feed xmlns='http://www.w3.org/2005/Atom'";
query += "xmlns:media='http://search.yahoo.com/mrss/'";
query += "xmlns:batch='http://schemas.google.com/gdata/batch'"
query += "xmlns:yt='http://gdata.youtube.com/schemas/2007'>";
for(var i = 0; i < loop; ++i)
{
query += '<entry>';
query += '<id>http://gdata.youtube.com/feeds/api/users/' + youtube_username + '/subscriptions?max-results=50&start-index=' + ((i * 50) + 1) + '&alt=json</id>';
query += "<batch:operation type='query'/>";
query += '</entry>';
}
query += '</feed>';
$.ajax({
type: 'POST',
url: 'http://gdata.youtube.com/feeds/api/users/batch?v=2',
data: query,
contentType:"application/atom+xml",
dataType:"xml",
success: function(data){
alert(data);
}
});
当我做这个请求时,我得到一个错误400(坏的url请求)。然后我试着用这个URL输入:
query += '<id>http://gdata.youtube.com/feeds/api/users/' + youtube_username + '/subscriptions/</id>';
但我得到了这个错误:
元素类型"feed"后面必须跟有属性规范">"或"/>"。
谢谢你,祝你今天愉快,Kevin
"批处理请求支持提要条目的查询(GET)操作,但不支持整个提要。例如,如果您正在发送播放列表的批处理请求,则可以包含一个或多个检索单个播放列表条目信息的条目。但是,批处理请求无法检索包含这些条目的播放列表提要。",如中所述https://developers.google.com/youtube/2.0/developers_guide_protocol_batch_processing
我更喜欢这样解释:
-
假设订阅是您想要的批处理过程。你打开了http://gdata.youtube.com/feeds/api/users/google/subscriptions?v=2&alt=json&prettyprint=真
-
- 导航条目,提取条目id。id不是从id":{"$t":"tag:youtube.com,2008:user:google:subscriptions"}或tag:youtub.com,2008:user:google:subscription:X7RMFNKroIVT2j3zlJcZK2BI2_ZLB1PH1-0aiYV1oMo中提取的,您应该找到带有self的link标记,这意味着您从链接的selfttp://gdata.youtube.com/feeds/api/users/google/subscriptions/X7RMFNKroIVT2j3zlJcZK7VKfC7MoH_jycANXotcvEI?v=2。还有一点,链接标记位于条目标签内,而不是提要内。如果从提要中提取,则会得到http://gdata.youtube.com/feeds/api/users/google/subscriptions?alt=json&起始索引=1&最大结果=25&v=2这是错误的
-
- 最后,请求API。使用卷曲的示例如下:
curl -vLk -d "<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:yt='http://gdata.youtube.com/schemas/2007'><batch:operation type='query'/><entry><id>http://gdata.youtube.com/feeds/api/users/google/subscriptions/X7RMFNKroIVT2j3zlJcZK7VKfC7MoH_jycANXotcvEI?v=2</id></entry></feed>" -X POST "http://gdata.youtube.com/feeds/api/users/google/subscriptions/batch?v=2"
- 最后,请求API。使用卷曲的示例如下:
另一个例子是视频,例如:
卷曲-vLk-d"http://www.w3.org/2005/Atom'xmlns:media='http://search.yahoo.com/mrss/'xmlns:batch='http://schemas.google.com/gdata/batch'xmlns:yt='http://gdata.youtube.com/schemas/2007'>https://gdata.youtube.com/feeds/api/videos/EWKcFuluXpo"-X帖子"https://gdata.youtube.com/feeds/api/videos/batch?v=2"
以及用户/频道的信息示例,例如:
卷曲-vLk-d"http://www.w3.org/2005/Atom'xmlns:media='http://search.yahoo.com/mrss/'xmlns:batch='http://schemas.google.com/gdata/batch'xmlns:yt='http://gdata.youtube.com/schemas/2007'>http://gdata.youtube.com/feeds/api/users/GoogleDevelopers"-X帖子"http://gdata.youtube.com/feeds/api/users/batch?v=2"
因此,我认为在不知道条目id的情况下,不可能通过批处理查询订阅列表。