X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fnnrss.el;h=55dd46067b07ec4dd8d08bd5658668bc750ff807;hb=8905e3349bb43cd632b7fa186d8530a8dbcdc7d6;hp=06628622545095d6311765e4c1b84d558c9f81b3;hpb=49e5b10a924281cdd641284e405f3ec8d5958479;p=elisp%2Fgnus.git- diff --git a/lisp/nnrss.el b/lisp/nnrss.el index 0662862..55dd460 100644 --- a/lisp/nnrss.el +++ b/lisp/nnrss.el @@ -253,31 +253,31 @@ ARTICLE is the article number of the current headline.") (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 - (let* (xmlform htmlform) + ;;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 (let ((coding-system-for-read 'binary)) (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 @@ -331,7 +331,7 @@ ARTICLE is the article number of the current headline.") (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))) @@ -424,10 +424,12 @@ ARTICLE is the article number of the current headline.") (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) @@ -445,9 +447,9 @@ ARTICLE is the article number of the current headline.") 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)))