PHP & JavaScript Room :: 設置サンプル

実行結果

設置サンプルのソース

<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>
<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 &amp; JavaScript Room</a> :: 設置サンプル</h1>
<h3 class='h'>実行結果</h3>
   <div id="results"></div>
</body>
</html>