Я пытался получить некоторые данные, используя Youtube data api -v3. Все данные внутри data.items.snippet поступают отлично. Но остальные данные, например data.items[0].statistics.viewCount, получить невозможно. Вот мой код:
<script src = "https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
<script>
$(document).ready(function () {
var key = 'MY_API_KEY';
var playlistId = 'PL6Oh0ejUo_0jJlgikR5CNH38O9NE5JDbK';
var URL = 'https://www.googleapis.com/youtube/v3/playlistItems';
var options = {
part: 'snippet,statistics',
key: key,
maxResults: 20,
playlistId: playlistId
}
loadVids();
function loadVids() {
$.getJSON(URL, options, function (data) {
var id = data.items[0].snippet.resourceId.videoId;
mainVid(id);
resultsLoop(data);
});
}
function mainVid(id,c) {
$('#video').html(`
<iframe width = "420" height = "250" src = "https://www.youtube.com/embed/${id}" frameborder = "0" allow = "autoplay; encrypted-media" allowfullscreen></iframe>
`);
}
function resultsLoop(data) {
$.each(data.items, function (i, item) {
var c = item.contentDetails.duration;
var thumb = item.snippet.thumbnails.medium.url;
var title = item.snippet.title;
var desc = item.snippet.description.substring(0, 120);
var vid = item.snippet.resourceId.videoId;
$('main').append(`
<article class = "item" data-key = "${vid}">
<img src = "${thumb}" alt = "" class = "thumb">
<div class = "details">
<h4>${title}</h4>
<p>${desc}</p>
<p>${published_at}</p>
<p>${c}</p>
</div>
</article>
`);
});
}
// CLICK EVENT
$('main').on('click', 'article', function () {
var id = $(this).attr('data-key');
mainVid(id);
});
});
</script>
Сначала часть: 'фрагмент,статистика', эта часть была похожа на часть: 'фрагмент',
Понял. Итак, можно получить список идентификаторов видео из списка воспроизведения и, используя этот идентификатор, мы можем сделать еще один код, чтобы получить количество просмотров каждого видео, но есть ли более простой способ сделать это?
Вы можете получить список идентификаторов видео с помощью API списка воспроизведения, затем объединить идентификаторы видео и передать их в API видео, параметр «Mulitple video id», поддерживаемый в API видео.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Получите список идентификаторов видео с помощью API-интерфейс плейлиста (V3), затем объедините идентификаторы видео и передайте их в API видео, Параметр «Mulitple video id» поддерживается в API видео (V3)
Список вариантов использования (упоминается в док.
Наконец-то я смог это решить. Код выглядит следующим образом:
$(document).ready(function () {
var key = 'ENTER_YOUR_KEY';
var playlistId = 'ENTER_YOUR_PLAYLIST_ID';
var URL = 'https://www.googleapis.com/youtube/v3/playlistItems';
var URL2 = 'https://www.googleapis.com/youtube/v3/videos'
var options = {
part: 'snippet',
key: key,
maxResults: 20,
playlistId: playlistId
}
loadVids();
function loadVids() {
$.getJSON(URL, options, function (data) {
var id = data.items[0].snippet.resourceId.videoId;
mainVid(id);
resultsLoop(data);
});
}
//THIS FUNCTION WILL USE THE VIDEO ID FROM PREVIOUS API CALL AND RETRIEVE VIEW COUNT
function view_count(vid) {
var opt = {
part: 'statistics',
key: key,
id: vid,
}
var vc = null;
$.getJSON(URL2, opt, function (data) {
vc = data.items[0].statistics.viewCount;
$('#'+vid).append(`<p>Views: ${vc}</p>`);
});
}
function mainVid(id) {
$('#video').html(`
<iframe width = "420" height = "250" src = "https://www.youtube.com/embed/${id}" frameborder = "0" allow = "autoplay; encrypted-media" allowfullscreen></iframe>
`);
}
function resultsLoop(data) {
$.each(data.items, function (i, item) {
var thumb = item.snippet.thumbnails.medium.url;
var title = item.snippet.title;
var desc = item.snippet.description.substring(0, 70);
var vid = item.snippet.resourceId.videoId;
var view = view_count(vid); //CALL FOR VIEWS
console.info(view);
$('main').append(`
<article class = "item" data-key = "${vid}">
<img src = "${thumb}" alt = "" class = "thumb">
<div class = "details" id = "${vid}">
<b>${title}</b>
<p>${desc}</p>
</div>
</article>
`);
});
}
Похоже, статистика не является допустимой частью запроса плейлиста Пожалуйста, обратитесь, а «статистика» поддерживает запрос списка видео [ссылка API видео] (Developers.google.com/youtube/v3/docs/videos/list) .