Created
May 12, 2012 02:32
-
-
Save cherenkov/2663761 to your computer and use it in GitHub Desktop.
pipes / simplexmlで複数サイトのRSSを読みこみ、新着順で表示させる方法.. - 人力検索はてな http://q.hatena.ne.jp/1336407726
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
お礼ははてなポイントで受け付けていますよ。なんつって。
一定の日付フォーマットは、以下のように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名」か追記されると思いますが、
これを表示しない方法はございますでしょうか?
何度も何度も本当に申し訳ございません。。。
はてなポイントはどのようにお渡しすれば良いでしょうか・・・。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
cherenkovさん
ま、まさにこれです!
なんとお礼を申し上げてよいやら・・・。
実はもう一点だけ、お聞きしたい事がございまして・・・
タイトルは下記のように表示されると思いますが、
2012/02/28 12:01 記事タイトル
この日付を「2012年02月28日」もしくは「28 Feb 2012」のような仕様にする事は可能なのでしょうか?
色々試させていただいたのですが、なかなかうまくいかず、
そもそも「dc:date」自体そのような形式に変更する事が可能なのかすらわからない状態で。。。
ずうずうしいお願いで大変恐縮ですが、
お時間のある時で結構ですのでご教授いただければ幸いです。
よろしくお願いいたします。