Emacs org-modeを使ってみる: (22) RSSフィードを取り込む

このエントリーをはてなブックマークに追加

今回は,RSSフィードを取り込む方法についてまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

インストールと設定

まず,デフォールトの設定で利用する url-retrieve-synchronously 関数だと文字化けしたので,以下のように curl をインストールする(wgetでも良い).

  $ sudo apt-get install curl

org-feed.el でRSSフィードを取り込む関数が用意されているが, RSS 2.0とATOMのみへの対応のようで, RSS 1.0 (RDF)はそのままでは取り込めなかった.
そこで,以下のように設定した.

(defun org-feed-parse-rdf-feed (buffer)
  "Parse BUFFER for RDF feed entries.
Returns a list of entries, with each entry a property list,
containing the properties `:guid' and `:item-full-text'."
  (let (entries beg end item guid entry)
    (with-current-buffer buffer
      (widen)
      (goto-char (point-min))
      (while (re-search-forward "<item[> ]" nil t)
	(setq beg (point)
	      end (and (re-search-forward "</item>" nil t)
		       (match-beginning 0)))
	(setq item (buffer-substring beg end)
	      guid (if (string-match "<link\\>.*?>\\(.*?\\)</link>" item)
		       (org-match-string-no-properties 1 item)))
	(setq entry (list :guid guid :item-full-text item))
	(push entry entries)
	(widen)
	(goto-char end))
      (nreverse entries))))

; (setq org-feed-retrieve-method 'wget)
(setq org-feed-retrieve-method 'curl)

(setq org-feed-default-template "\n* %h\n  - %U\n  - %a  - %description")

次に,RSSフィードを取得するURLなどを以下のように指定する.

(setq org-feed-alist nil)
(add-to-list 'org-feed-alist
  '("hatena" "http://feeds.feedburner.com/hatena/b/hotentry"
    "~/org/rss.org" "はてな"
    :parse-feed org-feed-parse-rdf-feed))
(add-to-list 'org-feed-alist
  '("tamura70" "http://d.hatena.ne.jp/tamura70/rss"
    "~/org2/rss.org" "屯遁"
    :parse-feed org-feed-parse-rdf-feed))

利用方法

~/org/rss.org ファイルの最初には以下のように記述しておく.

#+DRAWERS: PROPERTIES CLOCK LOGBOOK FEEDSTATUS
#+TODO: TOREAD | DONE
#+COLUMNS: %60ITEM %TAGS

「C-c C-x g」とタイプすると,以下のようにRSSフィードが取得され,タイトルが表示される.

* はてな
** Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - 文殊堂
** 「これまでに人を傷つけたことがないのが我々の誇りだ」とシーシェパードが声明を発表 - GIGAZINE
 (中略)
* 屯遁
** [emacs][org-mode][latex]Emacs org-modeを使ってみる: (17) orgの表を埋め込む
** [emacs][org-mode]Emacs org-modeを使ってみる: (18) 計時
 (以下略)

見出しの所で「TAB」をタイプすると,日付,URL,内容が表示される.
FEEDSTATUS ドローワ中に,取得状況が保存されているので,再度「C-c C-x g」をタイプした場合,新しいものだけが追加される.

整理方法

  • 読まないものは,「C-k」で削除する.
  • 読もうと思ったものは「S-RIGHT」で「TOREAD」としておく.
  • 読んだものは削除するか,あるいは「S-RIGHT」で「DONE」として残しておく.

子見出しを作成して整理する,「C-c C-x A」でアーカイブ見出し中に整理するなども可能である.

タグの利用

  • 「C-c C-c」でタグを付ける
  • 「C-c / m」でタグを検索
  • 「C-c C-x C-c」で列表示 (「q」で終了)

その他

以下は,うまくいっていない点