ブログ記事のリスト|星屋工作室

星屋工作室

星屋工作室 - 映画とカレーが好きでSEOに燃えています。山口県周南市ではたらくサラリーマンの仕事、趣味、パソコンの足跡的ブログです。

Google の最近のブログ記事


ブログを更新して、RSSも更新されているが、

Google AJAX Feed APIで読み込んだフィードが更新されていないということが多々あります。

 

それは、

Googleのキャッシュにあるフィードを読み込んでいるからだそうです。

 

キャッシュをクリアまたはリセットする方法があるのかもしれませんが、

リアルタイムに最新の記事一覧を表示する方法は

読み込むフィードのURLにユニークな値を付加させることで

毎回最新の一覧を表示できるようになります。

今回はユニークな値として現在日時をURLに付加させてみました。

 

<script type="text/javascript" src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●"></script>

<script type="text/javascript">

google.load("feeds", "1");


function initialize()
{


// 現在の日付と時間を取得
var date = new Date();
var year = date.getYear();
var mon = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();

var query = year + mon + day + hour + min + sec;

//現在の最新RSSフィードの取得
var feed = new google.feeds.Feed("http://example.com/blog/rss20.xml?"+ query );

//取得するフィード数
feed.setNumEntries(6)

//実際に読む込む
feed.load(function(result)
{

//読み込めたか判別
if (!result.error)
{
//表示部分を選択
var container = document.getElementById("feed");

//変数の初期化
var list = "";

//Feedの処理
list = '<ul>';
for (var i = 0; i < result.feed.entries.length; i++)
{
//Feedを一つ抽出
var entry = result.feed.entries[i];
if(entry.title.match(/^PR:/)) {
//「PR:」から始まるものがあれば何もしない
}
else{
list += '<li>';
list += '<a href="' + entry.link + '" target="_blank" title="' + entry.title + '">' + entry.title + '</a>';
var strdate = createDateString(entry.publishedDate);
list += '&nbsp;(' + strdate + ')';
list += '</li>';
}
}
list += '</ul>';
container.innerHTML = list;
}
});
}

//日付の表示方法を変更
function createDateString(publishedDate)
{
var pdate = new Date(publishedDate);
var pday = pdate.getDate();
var pmonth = pdate.getMonth() + 1;
var pyear = pdate.getFullYear();
var phour = pdate.getHours();
var pminute = pdate.getMinutes();
var psecond = pdate.getSeconds();
//var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
var strdate = pyear + "-" + pmonth + "-" + pday ;
return strdate;
}

google.setOnLoadCallback(initialize);

</script>

<div id="feed">Loading...</div>

 

ちょっと難点なのは、

毎回フィードの読み込みを行うので、表示がもたつきます。

なので、

1時間ごとくらいにするために「分」のminと「秒」のsecは省いた方がいいかもしれません。

 

 

参考ページ

Google Ajax Feed API でRSS取得したけど更新されない!!
http://cliffbros.blog49.fc2.com/blog-entry-195.html


[記事編集]

トラックバック(0)

トラックバックURL:


アメーバブログのRSSから「PR:」の部分を消して表示するスクリプトを一部変更してみた。

 

変更前のスクリプトは以下のページをご参照ください。

Google AJAX Feed APIを使ってアメーバブログの「PR:」を除く記事一覧を表示するJavascript
http://hoshiya.biz/2009/06/google-ajax-feed-apiprjavascript.html

 

変更の主な内容は、

表示するリストを作成する際に、HTMLタグを変数に入れるように改造しました。(赤文字部分)

前回はXMLの要素を操作してリストを作成するようにしていましたが、

XMLの操作は苦手なのでHTMLのソースを変数に格納するようにしました。

<script src="http://www.google.com/jsapi?key=●●あなたのAPIキー●●" type="text/javascript"></script>
<script type="text/javascript">
google.load("feeds", "1");  
function initialize()
{  
 //RSSフィードの取得
 var feed = new google.feeds.Feed("●●読み込みたいフィードのURL●●");  
 
 //取得するフィード数
 feed.setNumEntries(5)  
 
 //実際に読む込む
 feed.load(function(result)
 {  
  
  //読み込めたか判別
  if (!result.error)
  {
   //表示部分を選択
   var container = document.getElementById("feed");
   
   //変数の初期化
   var list = "";
   
   //Feedの処理
    list = '<ul>';
   for (var i = 0; i < result.feed.entries.length; i++)
   {  
    //Feedを一つ抽出
    var entry = result.feed.entries[i]; 
    if(entry.title.match(/^PR:/)) {
    //「PR:」から始まるものがあれば何もしない
    }
    else{
     list += '<li>';
     list += '<a href="' + entry.link + '" target="_blank">' + entry.title + '</a>';
     var strdate = createDateString(entry.publishedDate);
     list += '(' + strdate + ')';
     list += '</li>';

    }
        }
     list += '</ul>';
     container.innerHTML = list;

     }  
   });  
}
//日付の表示方法を変更
function createDateString(publishedDate)
{
 var pdate = new Date(publishedDate);
 var pday = pdate.getDate();
 var pmonth = pdate.getMonth() + 1;
 var pyear = pdate.getFullYear();
 var phour = pdate.getHours();
 var pminute = pdate.getMinutes();
 var psecond = pdate.getSeconds(); 
 //var strdate = pyear + "年" + pmonth + "月" + pday + "日" + phour + "時" + pminute + "分" + psecond + "秒";
 var strdate = pyear + "-" + pmonth + "-" + pday ;
 return strdate;
}
google.setOnLoadCallback(initialize); 
</script>
<!--表示結果表示する部分-->
<hr size="1" />
<div id="feed"></div>
<hr size="1" />
<!--表示結果表示する部分--> 

 

↓↓実際にうちの社長のアメブロのフィードを読み込んで表示した例↓↓



 

前回同様に

RSSに「PR:」が含まれていなければ新着5件を表示しますが、

新着5件中1件に「PR:」が含まれていた場合は

フィード自体から削除して消すのではなく、省略というか、スキップしているだけなので

表示が4件になります。

 

参考にしたサイト

日付の表示形式の変更 - フィードの取得 - Google AJAX Feed API入門
http://www.ajaxtower.jp/googleajaxfeed/feed/index5.html
日付の表示形式の変更 - フィードの取得 - Google AJAX Feed API入門

 

2009/09/23追記

上記を更に改造↓

Google AJAX Feed APIで最新の記事一覧を表示する。
http://hoshiya.biz/2009/09/google-ajax-feed-api-1.html 


[記事編集]

トラックバック(0)

トラックバックURL: