2016-10-28 3 views
0

현재 Youtube V3 API를 사용하여 채널에 가장 최근에 업로드 된 동영상의 피드를 생성하려고합니다. 현재이 이 대부분이지만, 내 인생에서 중요한 두 비트의 데이터 (비디오보기 및 비디오 길이)를 가져올 수는 없습니다. 데이터의 이러한 비트는 '동영상'엔드 포인트에 속하는 것으로 알고 있지만 Google Youtube API 웹 사이트에서 제공되는 Javascript API 예제에이를 통합하는 방법을 잘 모르겠습니다. 여기 아래에있는 내 코드입니다 - 어떤 도움을 크게 감상 할 수있다 :통계 및 기간 데이터로 YouTube 동영상 피드 가져 오기

// Define some variables used to remember state. 
var playlistId, nextPageToken, prevPageToken; 

// After the API loads, call a function to get the uploads playlist ID. 
function handleAPILoaded() { 
    requestUserUploadsPlaylistId(); 
} 

// Call the Data API to retrieve the playlist ID that uniquely identifies the 
// list of videos uploaded to the currently authenticated user's channel. 
function requestUserUploadsPlaylistId() { 
    // See https://developers.google.com/youtube/v3/docs/channels/list 
    var request = gapi.client.youtube.channels.list({ 
    mine: true, 
    part: 'contentDetails, statistics' 
    }); 
    request.execute(function(response) { 
    playlistId = response.result.items[0].contentDetails.relatedPlaylists.uploads; 
    requestVideoPlaylist(playlistId); 
    }); 
} 

// Retrieve the list of videos in the specified playlist. 
function requestVideoPlaylist(playlistId, pageToken) { 
    $('#video-container').html(''); 
    var requestOptions = { 
    playlistId: playlistId, 
    part: 'snippet, contentDetails', 
    maxResults: 10 
    }; 
    if (pageToken) { 
    requestOptions.pageToken = pageToken; 
    } 
    var request = gapi.client.youtube.playlistItems.list(requestOptions); 
    request.execute(function(response) { 
    // Only show pagination buttons if there is a pagination token for the 
    // next or previous page of results. 
    nextPageToken = response.result.nextPageToken; 
    var nextVis = nextPageToken ? 'visible' : 'hidden'; 
    $('#next-button').css('visibility', nextVis); 
    prevPageToken = response.result.prevPageToken 
    var prevVis = prevPageToken ? 'visible' : 'hidden'; 
    $('#prev-button').css('visibility', prevVis); 

    var playlistItems = response.result.items; 
    if (playlistItems) { 
     $.each(playlistItems, function(index, item) { 
     displayResult(item.snippet); 
     displayContentDetails(item.contentDetails); 
     displayStats(item.statistics); 
     }); 
    } else { 
     $('#video-container').html('Sorry you have no uploaded videos'); 
    } 
    }); 
} 

// Create a listing for a video. 
function displayResult(videoSnippet) { 
    var title = videoSnippet.title; 
    var videoId = videoSnippet.resourceId.videoId; 
    var publishedAt = videoSnippet.publishedAt; 
    var videoThumbURL = videoSnippet.thumbnails.high.url; 
    var publishedUTC = new Date(publishedAt); 
    var publishedDay = publishedUTC.getUTCDay(); 
    var publishedMonth = publishedUTC.getUTCMonth(); 
    var publishedYear = publishedUTC.getUTCFullYear(); 
    var a = moment(publishedUTC); 
    var b = moment(Date.now()); 
    var timeFrom = a.from(b); 
    $('#video-container').append('<a href=\"https://youtu.be/'+ videoId +'\"><li><img src='+videoThumbURL+'><br><p>' + title + ' - ' + timeFrom + '</p></li></a>'); 
} 

// Create a listing for a video. 
function displayContentDetails(stuff) { 
    var videoEndsAt = stuff.duration; 
    $('#video-container li').append('<span class="endsAt">'+ videoEndsAt +'</span>'); 
} 

function displayStats(vidStats) { 
    var videoStats = vidStats.viewCount; 
    $('#video-container li').append('<span class="videoStats">'+ videoStats +'</span>'); 
} 


// Retrieve the next page of videos in the playlist. 
function nextPage() { 
    requestVideoPlaylist(playlistId, nextPageToken); 
} 

// Retrieve the previous page of videos in the playlist. 
function previousPage() { 
    requestVideoPlaylist(playlistId, prevPageToken); 
} 

답변

1

당신은 당신이 원하는 데이터가없는 재생 목록에서 당겨 보여줍니다 코드 채널 말했다 있지만.

재생 목록의 각 동영상에 대해 'parts'매개 변수 'snippet, contentDetails,'를 사용하여 videoID를 저장 한 다음 Videos: list endpoint (한 번에 최대 50 개의 ID) 통계'. 이러한 API 결과에는 원하는 데이터가 있습니다.

0

감사합니다. @ Johnh10, 당신이 옳았습니다. 이것이 내가 한 일입니다.

var videoStatsEndpoint = "https://www.googleapis.com/youtube/v3/videos?part=statistics"; 
    var videoToQuery = "&id="+videoId+"&key="; 
    var apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
    var videoViews = 0; 
    jQuery.get(videoStatsEndpoint + videoToQuery + apiKey, function(data){ 
    videoViews = data.items[0].statistics.viewCount; 
    console.log(videoViews); 
    }); 
관련 문제