(require "xml-parser-modoki")
(require "rss/main")
(provide "rss/filter/zianplus")
(in-package "rss")
(defvar *zianplus-title* "自アン+")
(defvar *zianplus-url-base* "http://www.zianplus.net/")
(defvar *zianplus-url-regexp* (concat *zianplus-url-base* "\\(.*\\)"))
; SoccerAge Asia
(defun zianplus-parse-buffer (url)
(let (items
title
anchor)
(save-excursion
(goto-char (point-min))
(while (scan-buffer "\\(.*\\):\\(.*\\):\\(.*\\)
"
:regexp t
:tail t)
;↑探す部分の正規表現↓一致した部分うまくつかってURLとか取りだす
(setq anchor (concat "http://www.zianplus.net/cgi-bin/vote+/" (match-string 1)))
(setq title (concat (match-string 2) ":" (match-string 3) ":" (match-string 4)))
(setq title (ed::xmlpm-decode-special-chars title))
(push (rss-create-item title anchor)
items))
(nreverse items))))
;; フィルタ関数
;; (チャネル, ファイルを引数にfuncallされる)
(defun zianplus-filter (channel file)
(let ((url (rss-link channel))
title
items)
(setq title *zianplus-title*)
(save-excursion
(set-buffer (get-buffer-create *rss-buffer-temp*))
(erase-buffer (selected-buffer))
(insert-file-contents file)
(setq items (rss::zianplus-parse-buffer url))
(delete-buffer (selected-buffer)))
; 元のファイルを上書き
(convert-to-rss (rss-create title url nil items)
file)))
;; フィルタの登録
;; (URLがマッチした時にフィルタが呼ばれる)
(rss-filter-regist *zianplus-url-base* 'zianplus-filter)