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

実行結果

設置サンプル

日本の新着YouTube動画フィードを取得して表示。

設置サンプルのソース

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <meta http-equiv="Content-Language" content="ja" />
      <meta http-equiv="Content-Script-Type" content="text/javascript" />
      <meta http-equiv="Content-Style-Type" content="text/css" />
      <meta http-equiv="imagetoolbar" content="no" />
      <title>設置サンプル</title>
      <link rel="stylesheet" type="text/css" href="/content/lib/global.css" />
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" ></script>
      <script type="text/javascript">
          $(function() {
             var isIE=false;
             if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1) isIE=true;
             if(isIE){
               var url="http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_recent?v=2&alt=json-in-script&callback=getList";
               var script = document.createElement("script");
               script.setAttribute("type", "text/javascript");
               script.setAttribute("src", url);
               document.getElementsByTagName("head")[0].appendChild(script);
               //$("head").append(script); これはだめ
            }else{
                $.getJSON(
                    "http://gdata.youtube.com/feeds/api/standardfeeds/JP/most_recent", /* 日本 */
                    {
                       v:2,
                       alt:"json"
                    },
                  function(xml) {
                     getList(xml);
                  }
               );
            }
         });
         /* IE判定 */
         var browser = function() {
           var ua = navigator.userAgent;
           return {
             ie: ua.match(/MSIE\s([^;]*)/)
           };
         }();
         /* 日付フォーマット */
         var timeAgo = function(dateString) {
            var rightNow = new Date();
            var then = new Date(dateString);
             var isIE=0;
             if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1) isIE=1;
            if (isIE) {
               var dary=dateString.split("-");
               var year=dary[0];
               var month=dary[1];
               var day=dary[2].substring(0,2);
               var _tary=dateString.split("T");
               var tary=_tary[1].split(":");
               var hh=tary[0];
               var mm=tary[1];
               var ss=tary[2].substring(0,2);
               var _rightNow=""+rightNow.getFullYear()+"/"+rightNow.getMonth()+"/"+rightNow.getDate()+" "+rightNow.getHours()+":"+rightNow.getMinutes()+":"+rightNow.getSeconds();
               var _then=""+year+"/"+(month-1)+"/"+day+" "+hh+":"+mm+":"+ss;
               var rightNow=new Date(_rightNow).getTime();
               var then=new Date(_then).getTime()+9*60*60*1000; //GMT9:00
            }
            
            var diff = rightNow - then;
            var second = 1000,
               minute = second * 60,
               hour = minute * 60,
               day = hour * 24,
               week = day * 7;
            if (isNaN(diff) || diff < 0) {
               return ""; // return blank string if unknown
            }
            if(diff < second * 2)            return "いまさっき";
            if(diff < minute)               return Math.floor(diff/second)+"秒前";
            if(diff < minute * 2)            return "約1分前";
            if(diff < hour)                  return Math.floor(diff/minute)+"分前";
            if(diff < hour * 2)               return "約1時間前";
            if(diff < day)                  return  Math.floor(diff/hour)+"時間前";
            if(diff > day && diff < day * 2)   return "きのう";
            if(diff < day * 365){
               return Math.floor(diff/day)+"日前";
            }else{
               return "1年以上前";
            }
         }
         /* 3桁区切り */
         function addFigure(str) {
            var num = new String(str).replace(/,/g, "");
            while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
            return num;
         }
         function getList(xml){
             $('#load').fadeOut();
             var feed = xml.feed;
             $.each(feed.entry, function(i,item){
                var tmp=item.id.$t.split("video:");
                var vid=tmp[tmp.length-1];
                var s='';
                s+='<dt><img src="http://img.youtube.com/vi/'+vid+'/2.jpg" /></dt>';
                s+='<dd>';
                s+='<div class="title"><a href="'+item.link[0].href+'">'+item.title.$t+'</a></div>';
                s+='<p>';
                   s+='作成者:<a href="http://www.youtube.com/user/'+item.author[0].name.$t+'">'+item.author[0].name.$t+'</a>|';
                   s+='<span>公開日:'+timeAgo(item.published.$t)+'</span>';
                s+='</p>';
                s+='</dd>';
                 $("#demo").append('<dl class="video cf">'+s+'</dl>');
                 $(".video").fadeIn(1000);
             });
         }
      </script>
      <!-- CSS -->
      <style type="text/css">
         #demo {
            margin:0; padding:0;
         }
         #demo dl {
            margin:5px 0; padding:0;
            clear:both;
         }
         #demo dt {
            margin:0; padding:3px;
            width:120px; height:90px;
            -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;
            border:1px solid #ccc;
            float:left;
            clear:both;
            overflow:hidden;
         }
         #demo dt img {
            overflow:hidden;
            width:120px; height:90px;
         }
         #demo dd {
            margin:0 0 0 140px; padding:0;
         }
         #demo dd div.title {
            font-size:110%;
            font-weight:bold;
         }
         #demo dd span {
            color:#ff6699;
            font-weight:bold;
         }
      </style>
   <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="wrap">
         <h1>設置サンプル</h1>
         <h2>日本の新着YouTube動画フィードを取得して表示。</h2>
<!-- CODE -->
<div id="load"><img src='/content/img/ajax/loadingIcon.gif'></div>
<div id="demo"></div>
<!-- / CODE -->
      </div>
   </body>
</html>