:date: 2006-12-26 11:30:00 :tags: python ============================== 自前RSSアグリゲータ ============================== 複数のRSSを集約してRSS2.0で出力する機能があると便利かなー、と思って feedparser_ を使ってちょろっと書いてみました。集約して最新を取り出す部分は10行程度。feedparser便利だなあ。 .. code-block:: python # -*- coding: utf-8 -*- # http://feedparser.org/ import feedparser # RSS URL list for aggregation. urls = [ 'http://pc.watch.impress.co.jp/sublink/pc.rdf', 'http://internet.watch.impress.co.jp/cda/rss/internet.rdf', 'http://www.watch.impress.co.jp/av/sublink/av.rdf', ] d=[] # get early 10 entries. for u in urls: f=feedparser.parse(u) for e in f.entries: d.append((e.updated_parsed,e.updated,e.title,e.link)) d.sort() d.reverse() d = d[:10] # print 10 entries with RSS2.0 format. template = u''' %(site_title)s %(site_link)s %(site_desc)s %(items)s ''' item_tmpl = u''' %(item_title)s %(item_link)s %(item_desc)s %(item_date)s ''' item_list = [] for x in d: item_date, item_title, item_link = x[1],x[2],x[3] item_desc = u'' item_list.append(item_tmpl % locals()) items = u''.join(item_list) site_title = u'Impress' site_link = u'http://watch.impress.co.jp/' site_desc = u'' print template % locals() ちなみに、RSSで再出力するだけだと全然意味無かったです。集約なんてRSSリーダがやってくれるもの。。。 .. _feedparser: http://feedparser.org/ .. :extend type: text/html .. :extend: .. :comments: .. :comment id: 2006-12-28.7951504173 .. :title: Re:自前RSSアグリゲータ .. :author: M.Shibata .. :date: 2006-12-28 03:23:17 .. :email: .. :url: .. :body: .. 本題ではないのですが、最後の一行が勉強になりました。 .. こんなやりかたもあるんですね。 .. .. :comments: .. :comment id: 2006-12-29.4569941967 .. :title: Re:自前RSSアグリゲータ .. :author: しみずかわ .. :date: 2006-12-29 04:17:38 .. :email: .. :url: .. :body: .. > こんなやりかたもあるんですね。 .. .. 怠け者なので(笑) .. 明示的でない方法なので、時々はまります。あまりお勧めはしません...