2001-05-04 14:00:00 ShengHuo ZHU <zsh@cs.rochester.edu>
authorShengHuo ZHU <zsh@cs.rochester.edu>
Fri, 4 May 2001 19:47:43 +0000 (19:47 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Fri, 4 May 2001 19:47:43 +0000 (19:47 +0000)
* nnrss.el (nnrss-check-group): Use nnheader-translate-file-chars.
(nnrss-group-alist): Add more resources.
(nnrss-check-group): Ignore errors.

lisp/ChangeLog
lisp/nnrss.el

index 1ec2701..f6e8480 100644 (file)
@@ -1,3 +1,9 @@
+2001-05-04 14:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-check-group): Use nnheader-translate-file-chars.
+       (nnrss-group-alist): Add more resources.
+       (nnrss-check-group): Ignore errors.
+
 2001-05-04 00:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * nnrss.el (nnrss-request-expire-articles): Correct the return value.
index eca89da..048e8c5 100644 (file)
@@ -66,7 +66,8 @@
 
 (defvar nnrss-group-alist
   '(("MacWeek"
-     "http://macweek.zdnet.com/macweek.xml")
+     "http://macweek.zdnet.com/macweek.xml"
+     "The Macintosh news authority.")
     ("Linux.Weekly.News"
      "http://lwn.net/headlines/rss")
     ("Motley.Fool"
     ("Slashdot"
      "http://www.slashdot.com/slashdot.rdf")
     ("CNN"
-     "http://www.cnn.com/cnn.rss")
+     "http://www.cnn.com/cnn.rss"
+     "The world's news leader.")
     ("FreshMeat"
-     "http://freshmeat.net/backend/fm.rdf")
+     "http://freshmeat.net/backend/fm.rdf"
+     "The one-stop-shop for all your Linux software needs.")
     ("The.Guardian.newspaper"
-     "http://www.guardianunlimited.co.uk/rss/1,,,00.xml")
+     "http://www.guardianunlimited.co.uk/rss/1,,,00.xml"
+     "Intelligent news and comment throughout the day from The Guardian newspaper.")
     ("MonkeyFist.rdf"
-     "http://monkeyfist.com/rdf.php3")
+     "http://monkeyfist.com/rdf.php3"
+     "News and opinion on politics, technology, and eclectic miscellany.")
     ("NewsForge"
      "http://www.newsforge.com/newsforge.rss")
     ("Reuters.Health"
-     "http://www.reutershealth.com/eline.rss")
+     "http://www.reutershealth.com/eline.rss"
+     "Consumer-oriented health-related news stories.")
     ("Salon"
      "http://www.salon.com/feed/RDF/salon_use.rdf")
     ("Wired"
     ("ITN"
      "http://www.itn.co.uk/itn.rdf")
     ("Meerkat"
-     "http://www.oreillynet.com/meerkat/?_fl=rss10")
+     "http://www.oreillynet.com/meerkat/?_fl=rss10"
+     "An Open Wire Service")
     ("MonkeyFist"
-     "http://monkeyfist.com/rss1.php3")
+     "http://monkeyfist.com/rss1.php3"
+     "News and opinion on politics, technology, and eclectic miscellany.")
     ("Reuters.Health.rdf"
-     "http://www.reutershealth.com/eline.rdf")))
+     "http://www.reutershealth.com/eline.rdf"
+     "Consumer-oriented health-related news stories.")
+    ;;("4xt" "http://4xt.org/news/general.rss10" "Resources for XT users.")
+    ("Aaronland" "http://aaronland.net/xml/abhb.rdf" "A boy and his basement.")
+    ("Art of the Mix" "http://www.artofthemix.org/xml/rss.asp" "A website devoted to the art of making mixed tapes and cds.")
+    ("Dave Beckett's RDF Resource Guide" "http://www.ilrt.bristol.ac.uk/discovery/rdf/resources/rss.rdf" "A comprehensive guide to resources about RDF.")
+    ("David Chess" "http://www.davidchess.com/words/log.rss" "Mostly-daily musings on philosophy, children, culture, technology, the emergence of life from matter, chocolate, Nomic, and all that sort of thing.")
+    ;;("Dublin Core Metadata Intitiative" "http://www.dublincore.org/news.rss" "Latest news from DCMI.")
+    ("Figby Articles" "http://www.figby.com/index-rss.php" "A weblog with daily stories about technology, books and publishing, privacy, science, and occasional humor.")
+    ;;("Figby News" "http://www.figby.com/news.php" "Categorized RSS feeds from various sources.")
+    ("Figby Quickies" "http://www.figby.com/quickies-rss.php" "Quick commented links to other sites from Figby.com.")
+    ("Flutterby!" "http://www.flutterby.com/main.rdf" "News and views from Dan Lyke.")
+    ("Groovelog" "http://groovelog.agora.co.uk/groove+log/groovelog.nsf/today.rss.xml" "The open-access groove users' weblog.")
+    ;;("Groovelog.rss10" "http://groovelog.agora.co.uk/groove+log/groovelog.nsf/today.rss10.xml" "The open-access groove users' weblog.")
+    ("Hit or Miss" "http://hit-or-miss.org/rss/" "Daily weblog and journal.")
+    ;;("Internet.com Feeds" "http://www.webreference.com/services/news/" "News from ")
+    ("Larkfarm News" "http://www.larkfarm.com/Larkfarm.rdf" "Mike Gunderloy's web site.")
+    ("Latest RFCs" "http://x42.com/rss/rfc.rss")
+    ("Linux Today" "http://linuxtoday.com/backend/biglt.rss")
+    ("Linux Today.rdf" "http://linuxtoday.com/backend/my-netscape10.rdf")
+    ("More Like This WebLog" "http://www.whump.com/moreLikeThis/RSS" "Because the more you know, the more jokes you get.")
+    ("Motivational Quotes of the Day" "http://www.quotationspage.com/data/mqotd.rss" "Four motivational quotations each day from the Quotations Page.")
+    ;;("My Netscape Network" "http://www.dmoz.org/Netscape/My_Netscape_Network/")
+    ;;("My UserLand" "http://my.userland.com/choose")
+    ("Network World Fusion NetFlash" "http://www.nwfusion.com/netflash.rss" "Daily breaking news about networking products, technologies and services.")
+    ;;("News Feeds" "http://newsfeeds.manilasites.com/" "Jeff Barr highlights high quality RSS feeds.")
+    ;;("News Is Free Export" "http://www.newsisfree.com/export.php3")
+    ("News Is Free" "http://www.newsisfree.com/news.rdf.php3")
+    ;;("News is Free XML Export" "http://www.newsisfree.com/ocs/directory.xml")
+    ("O'Reilly Network Articles" "http://www.oreillynet.com/cs/rss/query/q/260?x-ver=1.0")
+    ("Quotes of the Day" "http://www.quotationspage.com/data/qotd.rss" "Four humorous quotations each day from the Quotations Page.")
+    ("RDF Interest Group" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=www-rdf-interest" "An experimental channel scraped from the RDF Interest Group mail archives.")
+    ("RDF Logic List" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=www-rdf-logic" "An experimental channel scraped from the RDF Logic mail archives.")
+    ("RSS Info" "http://www.blogspace.com/rss/rss10" "News and information on the RSS format")
+    ;;("RSS-DEV listing" "http://www.egroups.com/links/rss-dev/Feeds_000966335046/" "A listing of RSS files from the RSS-DEV list.")
+    ("Semantic Web List" "http://ilrt.org/discovery/rdf-dev/roads/cgi-bin/desire/ig2rss?list=semantic-web" "An experimental channel scraped from the W3C's Semantic Web mail archives.")
+    ;;("Sherch!" "http://www.sherch.com/~pldms/cgi-bin/sherch.pl" "Sherlock for the rest of us.")
+    ;;("Street Fusion Archived Financial Webcasts" "http://partners.streetfusion.com/rdf/archive.rdf")
+    ;;("Street Fusion Upcoming Financial Webcasts" "http://partners.streetfusion.com/rdf/live.rdf")
+    ;;("TNL.net newsletter" "http://www.tnl.net/newsletter/channel100.asp" "A newsletter about Internet technology and issues.")
+    ("W3C" "http://www.w3.org/2000/08/w3c-synd/home.rss" "The latest news at the World Wide Web Consortium.")
+    ;;("XML News: RSS Live Content" "http://www.xmlnews.org/RSS/content.html" "A listing of well-known RSS feeds.")
+    ("XMLfr" "http://xmlfr.org/actualites/general.rss10" "French speaking portal site dedicated to XML.")
+    ("XMLhack" "http://xmlhack.com/rss10.php" "Developer news from the XML community.")))
 
 (defvar nnrss-use-local nil)
 
   (setq nnrss-server-data
        (delq (assoc group nnrss-server-data) nnrss-server-data))
   (nnrss-save-server-data server)
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el") nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el")) nnrss-directory)))
     (delete-file file))
   t)
 
+(deffoo nnrss-request-list-newsgroups (&optional server)
+  (nnrss-possibly-change-group nil server)
+  (save-excursion
+    (set-buffer nntp-server-buffer)
+    (erase-buffer)
+    (dolist (elem nnrss-group-alist)
+      (if (third elem)
+         (insert (car elem) "\t" (third elem) "\n"))))
+  t)
+
 (nnoo-define-skeleton nnrss)
 
 ;;; Internal functions
 
 (defun nnrss-read-server-data (server)
   (setq nnrss-server-data nil)
-  (let ((file (expand-file-name (concat "nnrss" (and server
-                                                    (not (equal server ""))
-                                                    "-")
-                                       server
-                                       ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat "nnrss" (and server
+                                    (not (equal server ""))
+                                    "-")
+                       server
+                       ".el"))
+              nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
        (let ((coding-system-for-read 'binary))
 
 (defun nnrss-save-server-data (server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name (concat "nnrss" (and server
-                                                    (not (equal server ""))
-                                                    "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat "nnrss" (and server
+                                    (not (equal server ""))
+                                    "-")
+                       server ".el"))
+              nnrss-directory)))
     (let ((coding-system-for-write 'binary))
       (with-temp-file file
        (insert "(setq nnrss-server-data '"
   (let ((pair (assoc group nnrss-server-data)))
     (setq nnrss-group-max (or (cadr pair) 0))
     (setq nnrss-group-min (+ nnrss-group-max 1)))
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el"))
+              nnrss-directory)))
     (when (file-exists-p file)
       (with-temp-buffer
        (let ((coding-system-for-read 'binary))
 
 (defun nnrss-save-group-data (group server)
   (gnus-make-directory nnrss-directory)
-  (let ((file (expand-file-name (concat group (and server
-                                                  (not (equal server ""))
-                                                  "-")
-                                       server ".el")
-                               nnrss-directory)))
+  (let ((file (expand-file-name 
+              (nnrss-translate-file-chars
+               (concat group (and server
+                                  (not (equal server ""))
+                                  "-")
+                       server ".el"))
+              nnrss-directory)))
     (let ((coding-system-for-write 'binary))
       (with-temp-file file
        (insert "(setq nnrss-group-data '"
 (defun nnrss-check-group (group server)
   (let ((w3-html-entities (cons '(nbsp . 32) w3-html-entities))
        file xml subject url extra changed author date)
-    (mm-with-unibyte-buffer
-      (if (and nnrss-use-local
-              (file-exists-p (setq file (expand-file-name
-                                         (concat group ".xml")
+    (condition-case err
+       (mm-with-unibyte-buffer
+         (if (and nnrss-use-local
+                  (file-exists-p (setq file (expand-file-name
+                                         (nnrss-translate-file-chars
+                                          (concat group ".xml"))
                                          nnrss-directory))))
-         (insert-file-contents file)
-       (setq url (or (nth 2 (assoc group nnrss-server-data))
-                     (second (assoc group nnrss-group-alist))))
-       (unless url
-         (setq url
+             (insert-file-contents file)
+           (setq url (or (nth 2 (assoc group nnrss-server-data))
+                         (second (assoc group nnrss-group-alist))))
+           (unless url
+             (setq url
                (read-string (format "RSS url of %s: " group "http://")))
-         (let ((pair (assoc group nnrss-server-data)))
-           (if pair
-               (setcdr (cdr pair) (list url))
-             (push (list group nnrss-group-max url) nnrss-server-data)))
-         (setq changed t))
-       (nnrss-insert url))
-      (goto-char (point-min))
-      (while (re-search-forward "\r\n?" nil t)
-       (replace-match "\n"))
-      (goto-char (point-min))
-      (if (re-search-forward "<rdf\\|<rss" nil t)
-         (goto-char (match-beginning 0)))
-      (setq xml (xml-parse-region (point) (point-max))))
+             (let ((pair (assoc group nnrss-server-data)))
+               (if pair
+                   (setcdr (cdr pair) (list url))
+                 (push (list group nnrss-group-max url) nnrss-server-data)))
+             (setq changed t))
+           (nnrss-insert url))
+         (goto-char (point-min))
+         (while (re-search-forward "\r\n?" nil t)
+           (replace-match "\n"))
+         (goto-char (point-min))
+         (if (re-search-forward "<rdf\\|<rss" nil t)
+             (goto-char (match-beginning 0)))
+         (setq xml (xml-parse-region (point) (point-max))))
+      (error 
+       (nnheader-message 1 "Error in group %s: %s" group (cadr err))))
     (while (and xml (not (assq 'item xml)))
       (unless (listp (car (setq xml (cddar xml))))
        (setq xml nil)))
            (push (list group nnrss-group-max) nnrss-server-data)))
        (nnrss-save-server-data server))))
 
+(defun nnrss-generate-download-script ()
+  "Generate a download script in the current buffer.
+It is useful when `(setq nnrss-use-local t)'."
+  (interactive)
+  (insert "#!/bin/sh\n")
+  (insert "WGET=wget\n")
+  (insert "RSSDIR='" (expand-file-name nnrss-directory) "'\n")
+  (dolist (elem nnrss-group-alist)
+    (insert "$WGET -q -O \"$RSSDIR\"/'" 
+           (nnrss-translate-file-chars (concat (car elem) ".xml"))
+           "' '"
+           (second elem) "'\n")))
+
+(defun nnrss-translate-file-chars (name)
+  (let ((nnheader-file-name-translation-alist
+        (append nnheader-file-name-translation-alist '((?' . ?_)))))
+    (nnheader-translate-file-chars name)))
+
 (provide 'nnrss)
 
 ;;; nnrss.el ends here