Skip to content

Instantly share code, notes, and snippets.

@cherenkov
Created May 12, 2012 02:32
Show Gist options
  • Select an option

  • Save cherenkov/2663761 to your computer and use it in GitHub Desktop.

Select an option

Save cherenkov/2663761 to your computer and use it in GitHub Desktop.
pipes / simplexmlで複数サイトのRSSを読みこみ、新着順で表示させる方法.. - 人力検索はてな http://q.hatena.ne.jp/1336407726
<!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>
@cherenkov

Copy link
Copy Markdown
Author

お礼ははてなポイントで受け付けていますよ。なんつって。

一定の日付フォーマットは、以下のように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

@saruz999

Copy link
Copy Markdown

cherenkovさん

お返事おくれて申し訳ありません。
完璧です・・・。

はてなポイントでお礼したいのですが、どうすれば良いでしょうか?
すみません、いまいち仕組みをわかっておらずで。。。

取り急ぎお礼まで。
ありがとうございました。

@saruz999

Copy link
Copy Markdown

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