(defun nnrss-fetch (url &optional local)
"Fetch URL and put it in a the expected Lisp structure."
(with-temp-buffer
- ;some CVS versions of url.el need this to close the connection quickly
+ ;;some CVS versions of url.el need this to close the connection quickly
(let* (xmlform htmlform)
;; bit o' work necessary for w3 pre-cvs and post-cvs
(if local
(insert-file-contents url))
(mm-url-insert url))
-;; Because xml-parse-region can't deal with anything that isn't
-;; xml and w3-parse-buffer can't deal with some xml, we have to
-;; parse with xml-parse-region first and, if that fails, parse
-;; with w3-parse-buffer. Yuck. Eventually, someone should find out
-;; why w3-parse-buffer fails to parse some well-formed xml and
-;; fix it.
-
- (condition-case err
- (setq xmlform (xml-parse-region (point-min) (point-max)))
- (error (if (fboundp 'w3-parse-buffer)
- (setq htmlform (caddar (w3-parse-buffer
- (current-buffer))))
- (message "nnrss: Not valid XML and w3 parse not available (%s)"
- url))))
- (if htmlform
- htmlform
- xmlform))))
+ ;; Because xml-parse-region can't deal with anything that isn't
+ ;; xml and w3-parse-buffer can't deal with some xml, we have to
+ ;; parse with xml-parse-region first and, if that fails, parse
+ ;; with w3-parse-buffer. Yuck. Eventually, someone should find out
+ ;; why w3-parse-buffer fails to parse some well-formed xml and
+ ;; fix it.
+
+ (condition-case err
+ (setq xmlform (xml-parse-region (point-min) (point-max)))
+ (error (if (fboundp 'w3-parse-buffer)
+ (setq htmlform (caddar (w3-parse-buffer
+ (current-buffer))))
+ (message "nnrss: Not valid XML and w3 parse not available (%s)"
+ url))))
+ (if htmlform
+ htmlform
+ xmlform))))
(defun nnrss-possibly-change-group (&optional group server)
(when (and server
(let ((coding-system-for-read 'binary))
(load file nil t t))
(dolist (e nnrss-group-data)
- (puthash (or (nth 2 e) (nth 3 e)) t nnrss-group-hashtb)
+ (puthash (or (nth 2 e) (nth 5 e)) t nnrss-group-hashtb)
(when (and (car e) (> nnrss-group-min (car e)))
(setq nnrss-group-min (car e)))
(when (and (car e) (< nnrss-group-max (car e)))
(if (setq url (nnrss-decode-entities-unibyte-string
(nnrss-node-text rss-ns 'link (cddr item))))
(not (gethash url nnrss-group-hashtb))
- (setq subject (nnrss-node-text rss-ns 'title item))
- (not (gethash subject nnrss-group-hashtb))))
- (setq subject (or subject (nnrss-node-text rss-ns 'title item)))
- (setq extra (or (nnrss-node-text content-ns 'encoded item)
+ (setq extra (or (nnrss-node-text content-ns 'encoded item)
+ (nnrss-node-text rss-ns 'description item)))
+ (not (gethash extra nnrss-group-hashtb))))
+ (setq subject (nnrss-node-text rss-ns 'title item))
+ (setq extra (or extra
+ (nnrss-node-text content-ns 'encoded item)
(nnrss-node-text rss-ns 'description item)))
(setq author (or (nnrss-node-text rss-ns 'author item)
(nnrss-node-text dc-ns 'creator item)
date
(and extra (nnrss-decode-entities-unibyte-string extra)))
nnrss-group-data)
- (puthash (or url subject) t nnrss-group-hashtb)
+ (puthash (or url extra) t nnrss-group-hashtb)
(setq changed t))
- (setq subject nil))
+ (setq extra nil))
(when changed
(nnrss-save-group-data group server)
(let ((pair (assoc group nnrss-server-data)))