Я использую API YouTube, чтобы получить комментарии для видео с параметризованных запросов вроде следующего:Использование YouTube API, чтобы получить все комментарии из видео с JSON питающие
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
в качестве конечной части цикла for, как это, она всегда получает, например, 45 из 211 комментариев. Если я введю вручную 211, он будет примерно до 195. Если я ставлю небольшое число, например, 1-15, он почти всегда получает их все. 20+, это никогда не бывает правильно.
Мне нужно выяснить, как получить это, чтобы получить все комментарии к данному видео, воспользовавшись параметрами max-results
и start-index
. Благодаря!
Не проверял это, но я думаю, что, возможно, нашел это полезным. Я сделал небольшой цикл, используя параметры «max-results» и 'start-index', как вы сказали, и все получилось хорошо. Потребовалось некоторое время, и я должен был отключить его на определенную сумму, так как это может привести к краху моего браузера, если он попытается пройти слишком много раз. Я добавлю это как ответ, поскольку для любого, кто сталкивается с этим, кажется намного более мгновенным. –
будет здорово, если вы опубликуете решение, сообщество выиграет от него, пожалуйста, подумайте, чтобы вернуть сообщество. Благодаря! – mongotop
Поскольку мне непонятно, этот код возвращает все комментарии (даже тысячи)? Благодаря! – Thoth