我使用YouTube API获得评论与类似下面的参数化查询的视频:
http://gdata.youtube.com/feeds/api/videos/theVideoID/comments?v=2&alt=json
这里的问题是,你可以每次查询得到的结果的最大数量为50。我想每一个评论。 我目前使用的start-index
和max-results
参数来解决这个问题。 我有一个有点麻烦,同时做50次迭代,因为有时迭代将有一个开始,指数以上的评论的数量,我不能明白这一点,所以我只是试图在同一时间制定出一个。 这可能是更好的在同一时间做50,所以让我知道这是否是更好的解决方案。 目前:
我使用PHP来获得的评论量:
<?php
$video_ID = 'gT2HYxOdxUk';
$JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
$JSON_Data = json_decode($JSON);
$commentCount = $JSON_Data->{'entry'}->{'gd$comments'}->{'gd$feedLink'}->{'countHint'};
?>
然后我调用JavaScript / jQuery的功能,所有评论加载到一个数组。 为了进行测试,它打印它们变成一个div。 对于初学者来说,这里是我如何调用该函数:
<body onLoad="loadComments('<?php echo $commentCount; ?>', '<?php echo $video_ID; ?>')">
接下来,实际的功能:
function loadComments(count, videoID) {
for(i = 1; i <= count; i++) {
$.ajax({
url: "http://gdata.youtube.com/feeds/api/videos/" + videoID + "/comments?v=2&alt=json&max-results=1" + "&start-index=" + i,
dataType: "jsonp",
success: function(data){
$.each(data.feed.entry, function(key, val) {
comments.push(val.content.$t);
$('#commentOutput').append(val.content.$t + '<br>'); //Just for testing purposes.
});
}
});
}
}
问题是,它是真正的前途未卜。 当我使用count
变量的像这样循环端接部分,它总是得到像,例如,45个的211个注释。 如果我手动输入211,它会去各地的195如果我把在低数量,像1-15,它几乎总是让他们所有。 20+,这是从来没有的权利。
我需要弄清楚如何得到这个通过采取优势持续得到一个给定的视频的所有意见max-results
和start-index
参数。 谢谢!