YouTube Data APIで再生リスト内の動画情報をまとめて取得する

以前YouTube Data APIで指定した動画の再生数の取得を試してみましたが、今回は再生リストに入っている動画の情報の取得を試してみます。

サンプルコード

再生リスト内の動画の取得はPlaylistItemsを使用します。

var apikey = 'APIキーをここに入れる';
var listid = '再生リストのIDをここに入れる';

var pagetoken = '';
var results = [];

$(function(){
	get_api_data();
});

// URLを生成する関数
function generate_api_url(token) {
	var url = 'https://www.googleapis.com/youtube/v3/playlistItems';
	url += '?part=snippet';
	url += '&maxResults=50';
	if(pagetoken !== '') {
		url += '&pageToken=' + token;
	}
	url += '&playlistId=' + listid;
	url += '&key=' + apikey;
	return url;
}

// データを取得する関数
function get_api_data() {
	var getData = $.ajax({
		url: generate_api_url(pagetoken),
		dataType: 'json'
	});

	getData.then(
		function(data) {
			pagetoken = data.nextPageToken;
			// 取得したデータを整形して結果用の配列に入れる
			for (var i = 0; i < data.items.length; i++) {
				results.push({
			        "title": data.items[i].snippet.title,
			        "id": data.items[i].snippet.resourceId.videoId
				});
			}
			$('#sample').val(JSON.stringify(results));
			// 次のデータがある場合は再度データ取得を実行
			if(pagetoken !== undefined) {
				get_api_data();
			// データの取得が完了した場合はconsoleに結果表示
			} else {
				console.log(results);
			}
		},
		function(error) {
			console.log(error);
		}
	);
}

再生リストの動画を取得する際の注意点として、1回で取得可能な最大件数が50件となっています。
取得した件数以上に動画がある場合(結果に次のページがある場合)、レスポンスに含まれるnextPageTokenの値を使うことで次のページの結果を取得することができます。
上記例では変数pagetokenにnextPageTokenの値を格納して(33行目)、リクエストURL生成時にpagetokenの値を含めるようにしています(16~18行目)。

これで再生リストに入っている動画のタイトルと動画IDの一覧を取得することができました。

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930