<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="/module/include/strm/youtubedataapi_v3_list/style.css">
<title>YouTubeAPIv3サンプル | 動画情報取得(認証なし)</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
/* 開発キー
https://code.google.com/apis/console
*/
var APIKEY="AIzaSyC3VBRnfUU9_qO1Gr1ARBO8BZLT-Sp6vFc";
/* 取得する動画のID、カンマ区切りで複数指定可 */
var VIDEO_IDs="9cs1Biv_8Xw";
var limit=0;
var pageToken="",s="",ss="";
var allcnt=0,j=0,totalResults=0,resultsPerPage=0,total=0;
var topicIds_ary=[],topicIds_length=0,topicIds_cnt=0;
/* APIロード */
function onJSClientLoad() {
dbg("★onJSClientLoad");
gapi.client.setApiKey(APIKEY);
gapi.client.load('youtube', 'v3', makeRequest);
}
var requestOptions = {
id:VIDEO_IDs,//YouTube動画IDをカンマ区切りで複数指定可
part:"id, snippet, contentDetails, player, statistics, status, topicDetails,recordingDetails"
};
/* APIリクエスト */
function makeRequest(){
dbg("★makeRequest:"+pageToken);
if(pageToken){
requestOptions.pageToken=pageToken;
}
var request=gapi.client.request({
mine:"",
path:"/youtube/v3/videos",
params:requestOptions
});
request.execute(function(resp) {
dbg(resp);
if(resp.error){
$("#message").html(resp.error.message);
}else{
output(resp,pageToken);
}
});
}
/* HTMl出力 */
function output(resp,pageTokenFLG){
dbg("★output");
pageToken=resp.nextPageToken;
if(pageTokenFLG=="" && resp.pageInfo){
var pageInfo=resp.pageInfo;
s+="<li>pageInfo:";
s+="<ul>";
s+="<li>1ページに含まれる結果数:"+pageInfo.resultsPerPage+"</li>";
s+="<li>結果の合計数:"+pageInfo.totalResults+"</li>";
s+="</ul>";
s+="</li>";
resultsPerPage=resp.pageInfo.resultsPerPage;//APIレスポンスに含まれる結果の数。
totalResults=resp.pageInfo.totalResults;//結果セット内の結果の合計数。
if(limit>0){
totalResults=limit;
}
total=Math.floor(totalResults/resultsPerPage);
if(totalResults<=resultsPerPage){
total=1;
}else if(totalResults%resultsPerPage!=0){
total++;
}
dbg("total:"+total+"/resultsPerPage:"+resultsPerPage+"/totalResults:"+totalResults);
$("#results").append("<h2>Results</h2><ul>"+s+"</ul>");
s="";
}
itemOutput(resp.items);
allcnt++;
if(allcnt<total){
makeRequest();
}else{
$("#results").append("<h2>Items</h2><ul>"+s+"</ul>");
}
}
function itemOutput(items){
dbg(items);
dbg("allcnt:"+allcnt+"/j:"+j);
$.each(items, function(i, item){
if(limit!=0 && j>=limit) return;
j=(allcnt*resultsPerPage)+i+1
/* id */
s+="<li><b>id:"+((item.id)?item.id:"no id")+"</b><ul>";
/* snippet */
if(item.snippet){
s+="<li><b>snippet</b>:<ul>";
var snippet=item.snippet;
s+=(snippet.title)?"<li>動画タイトル(title):"+snippet.title+"</li>":"";
s+=(snippet.channelId)?"<li>チャンネルID(channelId):"+snippet.channelId+"</li>":"";
s+=(snippet.channelTitle)?"<li>チャンネルタイトル(channelTitle):"+snippet.channelTitle+"</li>":"";
s+=(snippet.categoryId)?"<li>カテゴリID(categoryId):"+snippet.categoryId+"</li>":"";
s+=(snippet.publishedAt)?"<li>公開日(publishedAt):"+snippet.publishedAt+"</li>":"";
s+=(snippet.description)?"<li>説明文(description):"+snippet.description+"</li>":"";
if(snippet.thumbnails && snippet.thumbnails.default){
s+="<li>サムネイル(thumbnails):<br><img src='"+snippet.thumbnails.default.url+"' /></li>";
}
if(snippet.tags){
s+="<li>タグ(tags):"+snippet.tags.join(", ")+"</li>";
}
s+="</ul></li>";
}
/* contentDetails */
if(item.contentDetails){
s+="<li><b>contentDetails</b>:<ul>";
var contentDetails=item.contentDetails;
s+=(contentDetails.caption)?"<li>字幕の有無(caption):"+contentDetails.caption+"</li>":"";
s+=(contentDetails.definition)?"<li>画質(definition):"+contentDetails.definition+"</li>":"";
s+=(contentDetails.dimension)?"<li>次元(dimension):"+contentDetails.dimension+"</li>":"";
s+=(contentDetails.duration)?"<li>動画の長さ(duration):"+contentDetails.duration+"</li>":"";
s+=(contentDetails.licensedContent)?"<li>licensedContent:"+contentDetails.licensedContent+"</li>":"";
s+="</ul></li>";
}
/* fileDetails */
if(item.fileDetails){
dbg(item.fileDetails);
}
/* player */
if(item.player){
s+="<li><b>player</b>:<ul>";
var player=item.player;
s+=(player.embedHtml)?"<li>埋め込みタグ(player.embedHtml):<textarea style='width:100%;height:3em;'>"+player.embedHtml+"</textarea></li>":"";
s+="</ul></li>";
}
/* processingDetails */
if(item.processingDetails){
s+="<li><b>processingDetails</b>:<ul>";
var processingDetails=item.processingDetails;
s+=(processingDetails.processingStatus)?"<li>processingStatus:"+processingDetails.processingStatus+"</li>":"";
s+="</ul></li>";
}
/* recordingDetails */
if(item.recordingDetails){
dbg(item.recordingDetails);
}
/* statistics */
if(item.statistics){
s+="<li><b>statistics</b>:<ul>";
var statistics=item.statistics;
s+=(statistics.commentCount)?"<li>コメント数(commentCount):"+statistics.commentCount+"</li>":"";
s+=(statistics.subscriberCount)?"<li>登録者数(subscriberCount):"+statistics.subscriberCount+"</li>":"";
s+=(statistics.videoCount)?"<li>動画数(videoCount):"+statistics.videoCount+"</li>":"";
s+=(statistics.viewCount)?"<li>再生回数(viewCount):"+statistics.viewCount+"</li>":"";
s+="</ul></li>";
}
/* status */
if(item.status){
s+="<li><b>status</b>:<ul>";
var status=item.status;
s+=(status.embeddable)?"<li>埋め込みを許可(embeddable):"+status.embeddable+"</li>":"";
s+=(status.license)?"<li>ライセンス(license):"+status.license+"</li>":"";
s+=(status.privacyStatus)?"<li>公開ステイタス(privacyStatus):"+status.privacyStatus+"</li>":"";
s+=(status.publicStatsViewable)?"<li>publicStatsViewable:"+status.publicStatsViewable+"</li>":"";
s+=(status.uploadStatus)?"<li>アップロードステイタス(uploadStatus):"+status.uploadStatus+"</li>":"";
s+="</ul></li>";
}
/* suggestions */
if(item.suggestions){
dbg(item.suggestions);
}
/* topicDetails */
if(item.topicDetails && item.topicDetails.topicIds){
// Freebase topic IDs一覧
s+="<li><b>topicIds.opicIds</b>:"+item.topicDetails.topicIds.join(" ")+"</li>";
for(var y in item.topicDetails.topicIds){
topicIds_ary.push(item.topicDetails.topicIds[y]);
}
}
s+="</ul></li>";
});
}
var dbg=function(str){
try{
if(window.console && console.log){
console.log(str);
}
}catch(err){
//alert("error:"+err);
}
}
</script>
<script src="https://apis.google.com/js/client.js?onload=onJSClientLoad"></script>
<link rel="stylesheet" type="text/css" href="/common/css/example.css"></head>
<body id='example3' class='example'><div class="ads" style="margin:32px auto;text-align:center;"></div><h1 class='h'><a href='/'>PHP & JavaScript Room</a> :: 設置サンプル</h1>
<h3 class='h'>実行結果</h3>
<h1>設置サンプル:[YouTube API(v3) - 動画情報取得</h1>
<div id="results"></div>
</body>
/html>/html>