Index: shimbun/sb-zdnet.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/shimbun/sb-zdnet.el,v
retrieving revision 1.16
diff -u -r1.16 sb-zdnet.el
--- shimbun/sb-zdnet.el 2002/05/24 03:02:13 1.16
+++ shimbun/sb-zdnet.el 2002/05/28 02:36:17
@@ -35,97 +35,77 @@
(defvar shimbun-zdnet-url "http://www.zdnet.co.jp/")
-(defvar shimbun-zdnet-group-url-alist
- '(("comp" . "news/past")
- ("gamespot" . "gamespot")))
+(defvar shimbun-zdnet-group-alist
+ '(("comp" "news/past"
+ "]+\\)\\.html\\)[^>]*>")
+ ("gamespot" "gamespot"
+ "]+\\)\\.html\\)[^>]*>")
+ ("enterprise" "enterprise/archives"
+ "]+\\)\\.html\\)[^>]*>")
+ ("broadband" "broadband/news"
+ "]+\\)\\.html\\)[^>]*>")
+ ("macwire" "macwire/news"
+ "]+\\)\\.html\\)[^>]*>")
+ ("mobile" "mobile/news"
+ "]+\\)\\.html\\)[^>]*>")))
-(defvar shimbun-zdnet-groups (mapcar 'car shimbun-zdnet-group-url-alist))
+(defvar shimbun-zdnet-groups (mapcar 'car shimbun-zdnet-group-alist))
(defvar shimbun-zdnet-from-address "zdnn@softbank.co.jp")
(defvar shimbun-zdnet-content-start "\\(\\|\\)")
-(defvar shimbun-zdnet-content-end "\\(\\|\\)")
+(defvar shimbun-zdnet-content-end "\\(\\|\\|\\)")
(defvar shimbun-zdnet-x-face-alist
'(("default" . "X-Face: 88Zbg!1nj{i#[*WdSZNrn1$Cdfat,zsG`P)OLo=U05q:\
RM#72\\p;3XZ~j|7T)QC7\"(A;~Hr\n fP.D}o>Z.]=f)rOBz:A^G*M3Ea5JCB$a>BL/y!")))
-(defvar shimbun-zdnet-expiration-days 31)
-
(luna-define-method shimbun-index-url ((shimbun shimbun-zdnet))
(concat
(shimbun-url-internal shimbun)
- (cdr (assoc (shimbun-current-group-internal shimbun)
- shimbun-zdnet-group-url-alist))
+ (nth 1 (assoc (shimbun-current-group-internal shimbun)
+ shimbun-zdnet-group-alist))
"/"))
-(defun shimbun-zdnet-comp-get-headers (shimbun)
- (let ((case-fold-search t) headers)
- (goto-char (point-min))
- (let (start)
- (while (and (search-forward "" nil t))
- (delete-region start (point))))
- (goto-char (point-min))
- (while (re-search-forward
- ""
- nil t)
- (let ((year (+ 2000 (string-to-number (match-string 2))))
- (month (string-to-number (match-string 3)))
- (day (string-to-number (match-string 4)))
- (id (format "<%s%s%s%s%%%s>"
- (match-string 2)
- (match-string 3)
- (match-string 4)
- (match-string 5)
- (shimbun-current-group-internal shimbun)))
- (url (match-string 1)))
- (push (shimbun-make-header
- 0
- (shimbun-mime-encode-string
- (mapconcat 'identity
- (split-string
- (buffer-substring
- (match-end 0)
- (progn (search-forward "" nil t) (point)))
- "\\(<[^>]+>\\|\r\\)")
- ""))
- (shimbun-from-address-internal shimbun)
- (shimbun-make-date-string year month day)
- id "" 0 0 (shimbun-expand-url url (shimbun-index-url shimbun)))
- headers)))
- headers))
-
-(defun shimbun-zdnet-gamespot-get-headers (shimbun)
- (let ((case-fold-search t) headers
- p)
- (and (setq p (search-forward "" nil t))
- (search-forward "" nil t)
- (narrow-to-region p (point)))
- (goto-char (point-min))
- (while (re-search-forward
- "]*>\\(.*\\)"
- nil t)
- (let* ((year (+ 2000 (string-to-number (match-string 2))))
- (month (string-to-number (match-string 3)))
- (day (string-to-number (match-string 4)))
- (id (format "<%s%s%s%s%%%s>" year month day (match-string 5)
- (shimbun-current-group-internal shimbun)))
- (subject (match-string 6))
- (url (match-string 1)))
- (push (shimbun-make-header
- 0
- (shimbun-mime-encode-string subject)
- (shimbun-from-address-internal shimbun)
- (shimbun-make-date-string year month day)
- id "" 0 0 (concat (shimbun-index-url shimbun) url))
- headers)))
- headers))
-
(luna-define-method shimbun-get-headers ((shimbun shimbun-zdnet)
&optional range)
- (funcall (intern (concat "shimbun-zdnet-"
- (shimbun-current-group-internal shimbun)
- "-get-headers"))
- shimbun))
+ (let* ((case-fold-search t)
+ (group (shimbun-current-group-internal shimbun))
+ (url-regexp (nth 2 (assoc group shimbun-zdnet-group-alist)))
+ headers)
+ (while (re-search-forward "\r" nil t)
+ (replace-match "\n"))
+ (goto-char (point-min))
+ (while (re-search-forward url-regexp nil t)
+ (catch 'next
+ (let* ((url (match-string 1))
+ (year (+ 2000 (string-to-number (match-string 3))))
+ (month (string-to-number (match-string 4)))
+ (day (string-to-number (match-string 5)))
+ (filename (match-string 6))
+ (id (format "<%04d%02d%02d%s%%%s@www.zdnet.co.jp>"
+ year month day filename group))
+ (subject (mapconcat 'identity
+ (split-string
+ (buffer-substring
+ (match-end 0)
+ (progn (search-forward "" nil t) (point)))
+ "<[^>]+>")
+ "")))
+ (when (equal filename "index")
+ (throw 'next nil))
+ (while (string-match "<[^>]+>" subject)
+ (setq subject (concat (substring subject 0 (match-beginning 0))
+ (substring subject (match-end 0)))))
+ (when (equal subject "")
+ (throw 'next nil))
+ (push (shimbun-make-header
+ 0
+ (shimbun-mime-encode-string subject)
+ (shimbun-from-address-internal shimbun)
+ (shimbun-make-date-string year month day)
+ id "" 0 0
+ (cond ((equal group "gamespot") (concat (shimbun-index-url shimbun) url))
+ (t (concat shimbun-zdnet-url url))))
+ headers))))
+ (nreverse headers)))
(luna-define-method shimbun-make-contents :before ((shimbun shimbun-zdnet) header)
(let ((case-fold-search t)
@@ -134,6 +114,11 @@
(setq start (match-beginning 0))
(search-forward "" nil t))
(delete-region start (point)))
+ (while (re-search-forward "]*SRC=\"http://ad\\.zdnet\\.co\\.jp/[^>]+>" nil t)
+ (replace-match ""))
+ (goto-char (point-min))
+ (while (re-search-forward "]*HREF=\"http://ad\\.zdnet\\.co\\.jp/[^>]+>[^<]*" nil t)
+ (replace-match ""))
(goto-char (point-min))))
(provide 'sb-zdnet)