-
-
Save cherenkov/2663761 to your computer and use it in GitHub Desktop.
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> | |
<script type='text/javascript'> | |
$(function() { | |
var feed = [ | |
'http://rss.itmedia.co.jp/rss/1.0/news_security.xml', | |
'http://michaelsan.livedoor.biz/index.rdf', | |
'http://blog.livedoor.jp/domesaka/index.rdf', | |
'http://news4vip.livedoor.biz/index.rdf' | |
].map(function(e){return '"'+e+'"'}).join(); | |
// http://pipes.yahoo.com/pipes/pipe.info?_id=6024c63c810e0a4ef1efe9eea8505b66 | |
// クライアント側からフィードのリストをpipesに投げて、 | |
// pipes側でフィードをまとめて、エントリータイトルにチャンネルタイトルを付けて、最新順にソートしてJSON出力。 | |
var url = 'http://pipes.yahoo.com/pipes/pipe.run?_id=6024c63c810e0a4ef1efe9eea8505b66&_render=json&feed='+encodeURIComponent(feed); | |
var antena = document.getElementById('antena'); | |
$.getJSON(url, function(e) { | |
var df = document.createDocumentFragment(); | |
for (var i=0,n=e.count; i<n; i++) { | |
var entry = e.value.items[i]; | |
var title = entry.item.title; | |
var link = entry.item.link; | |
var date = entry.item['dc:date'].content; | |
// 2012/05/11 13:51 のフォーマットにする | |
date = date.replace(/(\d+-\d+-\d+)T(\d+:\d+).+/,function(a,b,c) { | |
return b.replace(/-/g, '/') + ' ' + c; | |
}); | |
var a = document.createElement('a'); | |
a.href = link; | |
a.textContent = title; | |
var div = document.createElement('div'); | |
div.appendChild(document.createTextNode(date + ' ')); | |
div.appendChild(a); | |
df.appendChild(div); | |
} | |
antena.appendChild(df); | |
}); | |
}); | |
</script> | |
</head> | |
<body> | |
<div id="antena"></div> | |
</body> | |
</html> |
新しい日付から5件
は各チャンネルごとに5件ではなく、全体をまとめた上で5件ですかね?
以下のようにしてみるとか。
for (var i=0,n=e.count; i<n; i++) {
↓
e.count = 5; //表示件数
e.value.items = e.value.items.slice(0, e.count);
for (var i=0,n=e.count; i<n; i++) {
cherenkovさん
ま、まさにこれです!
なんとお礼を申し上げてよいやら・・・。
実はもう一点だけ、お聞きしたい事がございまして・・・
タイトルは下記のように表示されると思いますが、
2012/02/28 12:01 記事タイトル
この日付を「2012年02月28日」もしくは「28 Feb 2012」のような仕様にする事は可能なのでしょうか?
色々試させていただいたのですが、なかなかうまくいかず、
そもそも「dc:date」自体そのような形式に変更する事が可能なのかすらわからない状態で。。。
ずうずうしいお願いで大変恐縮ですが、
お時間のある時で結構ですのでご教授いただければ幸いです。
よろしくお願いいたします。
お礼ははてなポイントで受け付けていますよ。なんつって。
一定の日付フォーマットは、以下のようにnew Dateしてみるとそのまま扱えるか簡単に確認できます。
new Date("2012-06-22T18:30:43+09:00");
date = date.replace(/(\d+-\d+-\d+)T(\d+:\d+).+/,function(a,b,c) {
return b.replace(/-/g, '/') + ' ' + c;
});
↓
var d = new Date(date);
var my_year = d.getFullYear();
var my_month = d.getMonth()+1 < 10 ? '0' + (d.getMonth()+1) : (d.getMonth()+1);
//var my_month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][d.getMonth()];
var my_date = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
date = my_year + '年' + my_month + '月' + my_date + '日';
//2012年06月22日
こんな感じ。
あとはここをにらめっこすればわかるかと。
Date - MDN
https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Date
cherenkovさん
お返事おくれて申し訳ありません。
完璧です・・・。
はてなポイントでお礼したいのですが、どうすれば良いでしょうか?
すみません、いまいち仕組みをわかっておらずで。。。
取り急ぎお礼まで。
ありがとうございました。
cherenkovさん
理想のRSSリーダーに出会い本当に感謝感激です!
もう一点だけお聞きしたい事が・・・
タイトルの最後(2012年12月30日タイトル blog名)と「blog名」か追記されると思いますが、
これを表示しない方法はございますでしょうか?
何度も何度も本当に申し訳ございません。。。
はてなポイントはどのようにお渡しすれば良いでしょうか・・・。
素晴らしいソース公開ありがとうございます!
一点だけお聞きしたいのですが、件数の設定を行う事は可能でしょうか?
例えば新しい日付から5件のみ表示など。
もし可能であれば、ご教示いただければ幸いです。
よろしくお願いします。