(require "xml-parser-modoki") (require "rss/main") (provide "rss/filter/soccerage-jp") (in-package "rss") (defvar *sa-title* "SoccerAge") (defvar *sa-url-base* "http://www.soccerage.com/jp/") (defvar *sa-url-regexp* (concat *sa-url-base* "\\(.*\\)")) ; SoccerAge Asia (defun soccerage-parse-buffer (url) (let (items title anchor) (save-excursion (goto-char (point-min)) (while (scan-buffer "\\(.*\\).*href=\"\.\./\\(.*\\)\">\\(.*\\)

" :regexp t :tail t) ;↑探す部分の正規表現↓一致した部分うまくつかってURLとか取りだす (setq anchor (concat "http://www.soccerage.com/jp/" (match-string 2))) (setq title (concat (match-string 1) " " (match-string 3))) (setq title (ed::xmlpm-decode-special-chars title)) (push (rss-create-item title anchor) items)) (nreverse items)))) ;; フィルタ関数 ;; (チャネル, ファイルを引数にfuncallされる) (defun sa-filter (channel file) (let ((url (rss-link channel)) title items) (setq title *sa-title*) (save-excursion (set-buffer (get-buffer-create *rss-buffer-temp*)) (erase-buffer (selected-buffer)) (insert-file-contents file) (setq items (rss::soccerage-parse-buffer url)) (delete-buffer (selected-buffer))) ; 元のファイルを上書き (convert-to-rss (rss-create title url nil items) file))) ;; フィルタの登録 ;; (URLがマッチした時にフィルタが呼ばれる) (rss-filter-regist *sa-url-base* 'sa-filter)