emacs-w3mに 附属の shimbun ライブラリについてです。
現在は Info に詳細が書かれているので、こんなページよりそちらをお勧めします。 sb-mhonarc の詳細が書いてあるので残してはおきますが。
shimbun ライブラリは luna 化されていますが、見よう見真似でどうにか
なります(^^;
基本的には以下の手順となります。
MHonArc による ML archive は比較的容易に対応できます。 以下ではDigital Komono Mudadukai ML のアーカイブをサンプルに説明します。
(luna-define-class shimbun-digiko (shimbun-mhonarc) ())
(defvar shimbun-digiko-url "http://yar-3.net/digiko/")
(defvar shimbun-digiko-groups '("digiko"))
(defvar shimbun-digiko-reverse-flag t)
(defvar shimbun-digiko-litemplate-regexp
"<STRONG><A NAME=\"\\([0-9]+\\)\" HREF=\"\\(msg[0-9]+.html\\)\">\\([^<]+\\)</A></STRONG>\n<UL><LI><EM>From</EM>: \\([^<]+\\) \\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\), [0-9]+ [A-Z][a-z][a-z] [0-9]+ [0-2][0-9]:[0-5][0-9]:[0-5][0-9] .*</LI>")
(luna-define-method shimbun-index-url ((shimbun shimbun-digiko)) (shimbun-url-internal shimbun))
(luna-define-method shimbun-get-headers ((shimbun shimbun-digiko)
&optional range)
(let ((url (shimbun-index-url shimbun))
(pages (shimbun-header-index-pages range))
(count 0)
headers aux)
(catch 'stop
(shimbun-mhonarc-get-headers shimbun url headers)
(goto-char (point-min))
(while (and (if pages (< (incf count) pages) t)
(re-search-forward
"<A HREF=\"\\(mail[0-9]+.html\\)\">Next Page</A>"
nil t)
(not (string-equal (match-string 1) aux)))
(setq aux (match-string 1)
url (shimbun-expand-url aux url))
(erase-buffer)
(shimbun-retrieve-url url)
(shimbun-mhonarc-get-headers shimbun url headers)
(goto-char (point-min))))
headers))
そんな感じで、sb-digiko.el の完成です。 (なお、現在 CVS の幹に commit されている sb-digiko.el では、 日時が取得できるようになっています。)
fml の spool2html.pl を用いた ML アーカイブの場合は、 クラスの導入と変数の設定だけですむことが多いでしょう。 sb-bbdb-ml などを参考にしてください。
[emacs-w3m:01113] の `nnshimbun-remove-last-5-articles' を使うと良いです。