Pages

2013年3月26日火曜日

google readerからEmacs Newstickerに移行

google readerが7月から使えなくなるそうなので,とりあえずデータの
エクスポートとEmacsのnewstickerで利用できるようにしてみました。

google readerの購読しているサイトのエクスポート

google readerのサイトから,設定(歯車マーク)を選んでから
inport/exportみたいなタブをクリックしてデータをエクスポートします。

Emacsの設定ファイルに書込み

ダウンロードしたデータはunzipコマンドで解凍します。
解凍したファイルの中の
"~/Downloads/your gmail address-takeout/Reader/subscriptions.xml"
のようなxmlファイルからURLのリストを作成します。
次のコードをスクラッチに貼り付けするなどして評価してください。

(defun my/create-url-list (choice file)
(interactive)
(let* ((all (xml-parse-file file))
(body (xml-get-children (car all) 'body))
(outlines (loop for attr in (cddar body)
if (listp attr)
collect attr)))
(loop with dq = (if (eq choice :string)
"\\\\\""
"\"")
for atr in outlines
for title = (replace-regexp-in-string
"\"" dq (xml-get-attribute atr 'title))
for xmlurl = (xml-get-attribute atr 'xmlUrl)
for htmlurl = (xml-get-attribute atr 'htmlUrl)
for url = (or xmlurl htmlurl)
for result = (list title url)
if (string< "" url)
collect (case choice
(:list result)
(:string
(concat "(" "\"" title "\"" "\n"
"\"" url "\"" ")"))))))


次にあなたのsubscriptions.xmlの置いてあるところに変更して
下のコードを評価してください

(setq newsticker-url-list
(my/create-url-list :list
"~/Downloads/YOUR-ADDRESS@gmail.com-takeout/Reader/subscriptions.xml"))

newstickerの起動

newsticker-url-listにURLが反映されたら、
M-x newsticker-treeveiwコマンドを実行すると追加したフィードが反映され
newstickerが起動すると思います。
もし、文字列でほしい場合は下のコードを利用すると文字列を挿入できます。

(defun my/url-insert (pairs)
(interactive)
(loop for title-and-url in pairs
do (insert (concat title-and-url "\n"))))

(my/url-insert
(my/create-url-list :string "/path/to/subscriptions.xml"))

0 件のコメント:

コメントを投稿