Search

YouTube Analytics API
https://developers.google.com/youtube/analytics/

  • YouTube Analytics APIは、YouTubeチャンネルのアナリティクス情報を取得できるAPIです。
  • Metrics(指標)は、動画の再生回数や評価など、ユーザーアクティビティの計測値です。
  • Dimensions(ディメンション)は、ユーザーアクティビティが発生した日付やユーザーの国などの集計データに使用される一般的な基準です。
  • Filters(フィルタ)は、特定の国や特定の動画など、取得するデータをフィルタリングします。

YouTubeチャンネル情報を取得(自身のチャンネル情報)
認証あり

2013/5/19

YouTube Data API: JavaScript Code Samples

認証ユーザーのチャンネル情報を表示してみます。

ERR-content/img/strm/youtubeanalyticsapi/channel.gif
設置サンプルサンプルを見る
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf8" />
    <title>Google Visualization API Sample</title>
    <style>
        @import url(http://reset5.googlecode.com/hg/reset.min.css);
        td { word-break:break-all; }
        td.google-visualization-table-td { vertical-align:top; }
         td.google-visualization-table-th { white-space:nowrap; }
        ul { margin-left:2em; list-style-position:inside; }
        li { margin-left:2em; }
        p  { margin:5px 0 0 0!important; padding:0; }
        .bsbox { height:200px; overflow:auto; }
    </style>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">google.load('visualization', '1', {packages: ['table']});</script>
    <script type="text/javascript">

// 開発キー
//var APIKEY="AIzaSyBWqa3wGl7b8DKxpepR6acqdvgn54_H-DA";
var APIKEY="AIzaSyC3VBRnfUU9_qO1Gr1ARBO8BZLT-Sp6vFc";

// Google APIのJSクライアントロード後にコールされる
window.onJSClientLoad=function(){
    dbg("★onJSClientLoad");
    gapi.client.setApiKey(APIKEY);
    gapi.client.load('youtube', 'v3', getUserChannel);
};

function getUserChannel(){
    dbg("getUserChannel");
    // GET https://www.googleapis.com/youtube/v3/channels
    // https://developers.google.com/youtube/v3/docs/channels/list
    var request=gapi.client.request({
        mine:"",
        path:"/youtube/v3/channels",
        params :{
            //チャンネルIDをカンマ区切りで複数指定(ex. yt.setConfig('CHANNEL_ID', "UCWuGWqlTp0_To1eJuSBvLMg");)
            /*
                UCWuGWqlTp0_To1eJuSBvLMg    http://www.youtube.com/user/cocoism
                UCosXctaTYxN4YPIvI5Fpcrw    http://www.youtube.com/user/cocacola
                UC8sOGe37TbeZhlQLMGQCqBw    http://www.youtube.com/user/mercedesbenzjapan
                UC1MZ9XvYFOU8s9ORxWoZ8Gw    http://www.youtube.com/user/docomoOfficial
                UCG-5D9k_fL4FnMeNuraeAtA    http://www.youtube.com/user/SKE48
                UC1oPBUWifc0QOOY8DEKhLuQ    http://www.youtube.com/user/avexnetwork
                UC_x5XG1OV2P6uZZ5FSM9Ttw    http://www.youtube.com/user/GoogleDevelopers
                UCBR8-60-B28hp2BmDPdntcQ    http://www.youtube.com/user/YouTube
                UCNL1ZadSjHpjm4q9j2sVtOA    http://www.youtube.com/user/ladygagaofficial
            */
            id:"UCWuGWqlTp0_To1eJuSBvLMg,UCosXctaTYxN4YPIvI5Fpcrw,UC8sOGe37TbeZhlQLMGQCqBw,UC1MZ9XvYFOU8s9ORxWoZ8Gw,UCG-5D9k_fL4FnMeNuraeAtA,UC1oPBUWifc0QOOY8DEKhLuQ,UC_x5XG1OV2P6uZZ5FSM9Ttw,UCBR8-60-B28hp2BmDPdntcQ,UCNL1ZadSjHpjm4q9j2sVtOA",
            //part:"id,snippet,brandingSettings,contentDetails,invideoPromotion,statistics,topicDetails"
            part:"id,snippet,brandingSettings,contentDetails,invideoPromotion,statistics,topicDetails"
            /*
                id                        チャンネルID
                snippet                    紹介文、登録日、サムネイル(default/medium/high)、タイトル
                brandingSettings
                contentDetails            googlePlusUserId,relatedPlaylists
                invideoPromotion        はいってない
                statistics                コメント数、登録者数、動画数、再生回数
                topicDetails            topicIDの配列
            */
        }
    });
    request.execute(function(resp,rawResp) {
    dbg(resp);
    dbg(rawResp);
        drawVisualization(resp);
    });
}

// テーブル描画
function drawVisualization(resp) {
    dbg("★drawVisualization");
    dbg(resp);
    // Create and populate the data table.
    var JSONObject={};
    JSONObject.rows=[];
    
    JSONObject.cols=[
        {id: 'channelId', label: 'チャンネルID', type: 'string'},
        {id: 'title', label: 'チャンネル名', type: 'string'},
        {id: 'thumbnail', label: 'サムネイル', type: 'string'},
        {id: 'description', label: '紹介文', type: 'string'},
        {id: 'publishedAt', label: '登録日', type: 'string'},
        {id: 'commentCount', label: 'コメント数', type: 'number'},
        {id: 'subscriberCount', label: '登録者数', type: 'number'},
        {id: 'videoCount', label: '動画数', type: 'number'},
        {id: 'viewCount', label: '再生回数', type: 'number'},
        {id: 'googlePlusUserId', label: 'google+', type: 'string'},
        {id: 'relatedPlaylists', label: 'relatedPlaylists', type: 'string'},
        {id: 'brandingSettings', label: 'brandingSettings', type: 'string'}
    ];
    $.each(resp.items, function(i, item){
        var html_relatedplaylists="";
        for(var x in item.contentDetails.relatedPlaylists){
            if(x=="likes") xs="評価の高い動画";
            else if(x=="favorites") xs="お気に入りの動画";
            else if(x=="uploads") xs="アップロード動画";
            html_relatedplaylists+="<a href='http://www.youtube.com/playlist?list="+item.contentDetails.relatedPlaylists[x]+"'>"+xs+"</a><br>";
        }
        var html_brandingsettings="<div class='bsbox'>";
        for(var x in item.brandingSettings){
            html_brandingsettings+="<p><b>"+x+"</b></p><ul>";
            for(xx in item.brandingSettings[x]){
                if(item.brandingSettings[x].length>0){
                    html_brandingsettings+="<li>";
                    for(xxx in item.brandingSettings[x][xx]){
                        html_brandingsettings+=""+xxx+":"+item.brandingSettings[x][xx][xxx];
                    }
                    html_brandingsettings+="</li>";
                }else{
                    html_brandingsettings+="<li>"+xx+":"+item.brandingSettings[x][xx]+"</li>";
                }
            }
            html_brandingsettings+="</ul>";
        }
        html_brandingsettings+="</div>";
        JSONObject.rows[i]={
            c:[
                {v: item.id},
                {v: item.snippet.title},
                {v: item.snippet.thumbnails.default.url},
                {v: item.snippet.description},
                {v: (item.snippet.publishedAt)?item.snippet.publishedAt.split("T")[0]:"-"},
                {v: item.statistics.commentCount},
                {v: item.statistics.subscriberCount},
                {v: item.statistics.videoCount},
                {v: item.statistics.viewCount},
                {v: item.contentDetails.googlePlusUserId},
                {v: html_relatedplaylists},
                {v: html_brandingsettings}
            ]
        };
    });
    var data=new google.visualization.DataTable(JSONObject);
    // Create and draw the visualization.
    table=new google.visualization.Table(document.getElementById('table'));
    
    
    //フォーマット
    //{v: "<a href='http://www.youtube.com/channel/"+item.id+"' title='http://www.youtube.com/channel/"+item.id+"' rel='external'>"+item.snippet.title+"</a>"},
    var formatter=new google.visualization.PatternFormat('{0}<p><a href="http://www.youtube.com/channel/{0}" target="_blank">http://www.youtube.com/channel/{0}</a></p>');
    formatter.format(data, [0]);
    //{v: "<img src='"+item.snippet.thumbnails.default.url+"' />"},
    var formatter=new google.visualization.PatternFormat('{1}<p><img src="{1}" alt="{0}" /></p>');
    formatter.format(data, [2,2]);

/*
    var formatter=new google.visualization.NumberFormat({
        fractionDigits:0,    //小数点以下なし
        groupingSymbol: ','    //3ケタ区切り
    });
    formatter.format(data, 5);
    formatter.format(data, 6);
    formatter.format(data, 7);
    formatter.format(data, 8);
*/
    //カラム表示調整
    //data.removeColumn(2); 
    //テーブル描画
    table.draw(data, {'allowHtml': true, "showRowNumber":true});

}
google.setOnLoadCallback(drawVisualization);

function dbg(str){
    console.log(str);
}
</script>
<script type="text/javascript" src="https://apis.google.com/js/client.js?onload=onJSClientLoad"></script>
</head>
<body>
    <div id="table"><!-- テーブル --></div>
</body>
</html>

YouTubeチャンネル情報を取得(複数のチャンネル情報)
認証なし

2013/5/19

GET https://www.googleapis.com/youtube/v3/channels

https://developers.google.com/youtube/v3/docs/channels/list

特定のチャンネル情報を取得できます。
複数指定する場合はチャンネルIDをカンマ区切りで指定。

チャンネルIDは、http://www.youtube.com/cocoism3の"cocoism3"ではなく、「data-subscription-value」の値。 チャンネルIDはYouTubeチャンネルのソース内を「CHANNEL_ID」で検索してもわかります。

//チャンネルIDをカンマ区切りで複数指定(ex. yt.setConfig('CHANNEL_ID', 'UCWuGWqlTp0_To1eJuSBvLMg');) /* UCWuGWqlTp0_To1eJuSBvLMg http://www.youtube.com/user/cocoism UCosXctaTYxN4YPIvI5Fpcrw http://www.youtube.com/user/cocacola UC8sOGe37TbeZhlQLMGQCqBw http://www.youtube.com/user/mercedesbenzjapan UC1MZ9XvYFOU8s9ORxWoZ8Gw http://www.youtube.com/user/docomoOfficial UCG-5D9k_fL4FnMeNuraeAtA http://www.youtube.com/user/SKE48 UC1oPBUWifc0QOOY8DEKhLuQ http://www.youtube.com/user/avexnetwork UC_x5XG1OV2P6uZZ5FSM9Ttw http://www.youtube.com/user/GoogleDevelopers UCBR8-60-B28hp2BmDPdntcQ http://www.youtube.com/user/YouTube UCNL1ZadSjHpjm4q9j2sVtOA http://www.youtube.com/user/ladygagaofficial
ERR-content/img/strm/youtubeanalyticsapi/channel_noauth.gif
設置サンプルサンプルを見る
<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>
        var apiKey="AIzaSyADjDbt-bUW40F3c41Mu0HWRPXLpAMbPy4";    /* 自分のキー */

        /* APIロード */
        function onJSClientLoad() {
            dbg("onJSClientLoad");
            gapi.client.setApiKey(apiKey);
            gapi.client.load('youtube', 'v3', makeRequest);
        }
        var requestOptions = {
            "id":"UCWuGWqlTp0_To1eJuSBvLMg", /* チャンネルID */
            "part":" id, snippet, contentDetails, statistics, topicDetails"
        };
        function makeRequest(){
            var request=gapi.client.request({
                path:"/youtube/v3/channels",
                params:requestOptions
            });
            request.execute(function(resp) {
                output(resp);
            });
        }
        function output(data){
            dbg(data);
            var s="";
            var pageInfo=data.pageInfo;
            s+="<li>pageInfo:<ul>";
                s+="<li>resultsPerPage:"+pageInfo.resultsPerPage+"</li>";
                s+="<li>totalResults:"+pageInfo.totalResults+"</li>";
            s+="</ul></li>";
            var totalResults=data.pageInfo.totalResults; /* 結果セット内の結果の合計数 */
            var resultsPerPage=data.pageInfo.resultsPerPage; /* APIレスポンスに含まれる結果の数 */
            var total=Math.floor(totalResults/resultsPerPage);
            dbg("total:"+total+"/resultsPerPage:"+resultsPerPage+"/totalResults:"+totalResults);
            $.each(data.items, function(i, item){
                s+=(item.id)?"<li>チャンネルID(id):"+item.id+"</li>":"";
                if(item.contentDetails){
                    var contentDetails=item.contentDetails;
                    var googlePlusUserId=contentDetails.googlePlusUserId;
                    var relatedPlaylists=contentDetails.relatedPlaylists;
                    s+=(googlePlusUserId)?"<li>Google+のID(googlePlusUserId):<a href='https://plus.google.com/'>"+googlePlusUserId+"</a></li>":"";
                    s+="<li>relatedPlaylists:<ul>";
                        s+=(relatedPlaylists.favorites)?"<li>お気に入りの動画(favorites):<a href='http://www.youtube.com/playlist?list="+relatedPlaylists.favorites+"'>"+relatedPlaylists.favorites+"</a></li>":"";
                        s+=(relatedPlaylists.likes)?"<li>評価の高い動画(likes):<a href='http://www.youtube.com/playlist?list="+relatedPlaylists.likes+"'>"+relatedPlaylists.likes+"</a></li>":"";
                        s+=(relatedPlaylists.uploads)?"<li>アップロード動画 (uploads):<a href='http://www.youtube.com/playlist?list="+relatedPlaylists.uploads+"'>"+relatedPlaylists.uploads+"</a></li>":"";
                        /* 以下は認証しないと取得不可 */
                        s+=(relatedPlaylists.watchHistory)?"<li>閲覧履歴(watchHistory):<a href='http://www.youtube.com/playlist?list="+relatedPlaylists.watchHistory+"'>"+relatedPlaylists.watchHistory+"</a></li>":"";
                        s+=(relatedPlaylists.watchLater)?"<li>後で見る(watchLater):<a href='http://www.youtube.com/playlist?list="+relatedPlaylists.watchLater+"'>"+relatedPlaylists.watchLater+"</a></li>":"";
                    s+="</ul></li>";
                }
                if(item.snippet){
                    var snippet=item.snippet;
                    s+="<li><b>snippet</b>:<ul>";
                    s+=(snippet.title)?"<li>チャンネルタイトル(title):"+snippet.title+"</li>":"";
                    s+=(snippet.publishedAt)?"<li>登録日(publishedAt):"+snippet.publishedAt+"</li>":"";
                    s+=(snippet.description)?"<li>チャンネル説明文(description):"+snippet.description+"</li>":"";
                    if(snippet.thumbnails && snippet.thumbnails.default.url){
                        s+="<li><img src='"+snippet.thumbnails.default.url+"' /></li>";
                        /* default, medium, height
                        s+="<li>thumbnails:<ul>";
                        $.each(snippet.thumbnails, function(y, ytem){
                            s+="<li>"+y+":"+ytem.url+"<br><img src='"+ytem.url+"' /></li>";
                        });
                        s+="</ul></li>";
                        */
                    }
                    s+="</ul></li>";
                }
                if(item.statistics){
                    var statistics=item.statistics;
                    s+="<li><b>statistics</b>:";
                        s+="<ul>";
                            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>";
                    s+="</li>";
                }
            });
            $("#results").append("<h2>channels</h2><ul>"+s+"</ul>");
        }
        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>
</head>
<body>
    <div id="results"></div>
</body>
</html>

Metrics

2013/5/19

Dimensions

2013/5/19

Filters

2013/5/19

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women