2016-10-28 3 views
0

現在、Youtube V3 APIを使用して、チャンネルに最近アップロードされた動画のフィードを生成しようとしています。現時点ではがほとんどになっていますが、私の人生にとって重要な2つのデータ(ビデオの再生時間とビデオの再生時間)を得ることはできません。私はこれらのデータが「ビデオ」エンドポイントに属していることを理解していますが、これを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

はあなたが必要なデータを持っていないプレイリストから引っ張っ示したコードをチャネルと述べたが。

プレイリストの各動画については、videoIDを保存し、 'parts'パラメータ 'snippet、contentDetails、'を使用して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); 
    }); 
関連する問題