Gnus development mailing list
 help / color / mirror / Atom feed
From: Niklas Morberg <niklas.morberg@axis.com>
Subject: Larger patch for nnweb.el (Was: Trivial documentation patch for nnweb)
Date: Mon, 27 May 2002 11:40:45 +0200	[thread overview]
Message-ID: <ud6vi0vz6.fsf@axis.com> (raw)
In-Reply-To: <uptzo8k6w.fsf@axis.com> (Niklas Morberg's message of "Wed, 22 May 2002 14:02:15 +0200")

[-- Attachment #1: Type: text/plain, Size: 583 bytes --]

Niklas Morberg <niklas@axis.com> writes:

> I get the feeling that much of nnweb.el should be trimmed
> away since neither Deja nor InReference seems available
> anymore.

And here are the patches that does just that. I've removed
all engines but google, but I've kept the dejanews alias
(pointing to google) in order to not break anything that
might work today. Someone with more guts than myself should
rip that out as well.

Also, I noted that the documentation mentioned that
mail.yahoo.com offers a pop mail service. This is no longer
true, so I took that out as well.

Niklas


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Remove old Usenet search engines --]
[-- Type: text/x-patch, Size: 13942 bytes --]

cd h:/pgnus/lisp/
diff -u -b "h:/pgnus/lisp/nnweb.el.~6.19.~" "h:/pgnus/lisp/nnweb.el"
--- h:/pgnus/lisp/nnweb.el.~6.19.~	Mon May 27 11:17:29 2002
+++ h:/pgnus/lisp/nnweb.el	Mon May 27 11:20:36 2002
@@ -49,7 +49,7 @@
 
 (defvoo nnweb-type 'google
   "What search engine type is being used.
-Valid types include `google', `dejanews', `reference', and `altavista'.")
+Valid types include `google' and `dejanews'.")
 
 (defvar nnweb-type-definition
   '((google
@@ -61,33 +61,17 @@
      (address . "http://groups.google.com/groups")
      (identifier . nnweb-google-identity))
     (dejanews ;; alias of google
-     ;;(article . nnweb-google-wash-article)
-     ;;(id . "http://groups.google.com/groups?as_umsgid=%s")
      (article . ignore)
      (id . "http://groups.google.com/groups?selm=%s&output=gplain")
-     ;;(reference . nnweb-google-reference)
      (reference . identity)
      (map . nnweb-google-create-mapping)
      (search . nnweb-google-search)
      (address . "http://groups.google.com/groups")
-     (identifier . nnweb-google-identity))
-    (reference
-     (article . nnweb-reference-wash-article)
-     (map . nnweb-reference-create-mapping)
-     (search . nnweb-reference-search)
-     (address . "http://www.reference.com/cgi-bin/pn/go")
-     (identifier . identity))
-    (altavista
-     (article . nnweb-altavista-wash-article)
-     (map . nnweb-altavista-create-mapping)
-     (search . nnweb-altavista-search)
-     (address . "http://www.altavista.digital.com/cgi-bin/query")
-     (id . "/cgi-bin/news?id@%s")
-     (identifier . identity)))
+     (identifier . nnweb-google-identity)))
   "Type-definition alist.")
 
 (defvoo nnweb-search nil
-  "Search string to feed to DejaNews.")
+  "Search string to feed to Google.")
 
 (defvoo nnweb-max-hits 999
   "Maximum number of hits to display.")
@@ -309,383 +293,6 @@
 	       (format " *nnweb %s %s %s*"
 		       nnweb-type nnweb-search server))
 	      (current-buffer))))))
-
-;; (defun nnweb-fetch-url (url)
-;;   (let (buf)
-;;     (save-excursion
-;;       (if (not nnheader-callback-function)
-;; 	  (progn
-;; 	    (with-temp-buffer
-;; 	      (mm-enable-multibyte)
-;; 	      (let ((coding-system-for-read 'binary)
-;; 		    (coding-system-for-write 'binary)
-;; 		    (default-process-coding-system 'binary))
-;; 		(nnweb-insert url))
-;; 	      (setq buf (buffer-string)))
-;; 	    (erase-buffer)
-;; 	    (insert buf)
-;; 	    t)
-;; 	(nnweb-url-retrieve-asynch
-;; 	 url 'nnweb-callback (current-buffer) nnheader-callback-function)
-;; 	t))))
-
-;; (defun nnweb-callback (buffer callback)
-;;   (when (gnus-buffer-live-p url-working-buffer)
-;;     (save-excursion
-;;       (set-buffer url-working-buffer)
-;;       (funcall (nnweb-definition 'article))
-;;       (nnweb-decode-entities)
-;;       (set-buffer buffer)
-;;       (goto-char (point-max))
-;;       (insert-buffer-substring url-working-buffer))
-;;     (funcall callback t)
-;;     (gnus-kill-buffer url-working-buffer)))
-
-;; (defun nnweb-url-retrieve-asynch (url callback &rest data)
-;;   (let ((url-request-method "GET")
-;; 	(old-asynch url-be-asynchronous)
-;; 	(url-request-data nil)
-;; 	(url-request-extra-headers nil)
-;; 	(url-working-buffer (generate-new-buffer-name " *nnweb*")))
-;;     (setq-default url-be-asynchronous t)
-;;     (save-excursion
-;;       (set-buffer (get-buffer-create url-working-buffer))
-;;       (setq url-current-callback-data data
-;; 	    url-be-asynchronous t
-;; 	    url-current-callback-func callback)
-;;       (url-retrieve url nil))
-;;     (setq-default url-be-asynchronous old-asynch)))
-
-;; (if (fboundp 'url-retrieve-synchronously)
-;;     (defun nnweb-url-retrieve-asynch (url callback &rest data)
-;;       (url-retrieve url callback data)))
-
-;;;
-;;; DejaNews functions.
-;;;
-
-(defun nnweb-dejanews-create-mapping ()
-  "Perform the search and create an number-to-url alist."
-  (save-excursion
-    (set-buffer nnweb-buffer)
-    (erase-buffer)
-    (when (funcall (nnweb-definition 'search) nnweb-search)
-      (let ((i 0)
-	    (more t)
-	    (case-fold-search t)
-	    (active (or (cadr (assoc nnweb-group nnweb-group-alist))
-			(cons 1 0)))
-	    subject date from
-	    map url parse a table group text)
-	(while more
-	  ;; Go through all the article hits on this page.
-	  (goto-char (point-min))
-	  (setq parse (w3-parse-buffer (current-buffer))
-		table (nth 1 (nnweb-parse-find-all 'table parse)))
-	  (dolist (row (nth 2 (car (nth 2 table))))
-	    (setq a (nnweb-parse-find 'a row)
-		  url (cdr (assq 'href (nth 1 a)))
-		  text (nreverse (nnweb-text row)))
-	    (when a
-	      (setq subject (nth 4 text)
-		    group (nth 2 text)
-		    date (nth 1 text)
-		    from (nth 0 text))
-	      (if (string-match "\\([0-9]+\\)/\\([0-9]+\\)/\\([0-9]+\\)" date)
-		  (setq date (format "%s %s 00:00:00 %s"
-				     (car (rassq (string-to-number
-						  (match-string 2 date))
-						 parse-time-months))
-				     (match-string 3 date)
-				     (match-string 1 date)))
-		(setq date "Jan 1 00:00:00 0000"))
-	      (incf i)
-	      (setq url (concat url "&fmt=text"))
-	      (when (string-match "&context=[^&]+" url)
-		(setq url (replace-match "" t t url)))
-	      (unless (nnweb-get-hashtb url)
-		(push
-		 (list
-		  (incf (cdr active))
-		  (make-full-mail-header
-		   (cdr active) (concat subject " (" group ")") from date
-		   (concat "<" (nnweb-identifier url) "@dejanews>")
-		   nil 0 0 url))
-		 map)
-		(nnweb-set-hashtb (cadar map) (car map)))))
-	  ;; See whether there is a "Get next 20 hits" button here.
-	  (goto-char (point-min))
-	  (if (or (not (re-search-forward
-			"HREF=\"\\([^\"]+\\)\"[<>b]+Next result" nil t))
-		  (>= i nnweb-max-hits))
-	      (setq more nil)
-	    ;; Yup -- fetch it.
-	    (setq more (match-string 1))
-	    (erase-buffer)
-	    (mm-url-insert more)))
-	;; Return the articles in the right order.
-	(setq nnweb-articles
-	      (sort (nconc nnweb-articles map) 'car-less-than-car))))))
-
-(defun nnweb-dejanews-search (search)
-  (mm-url-insert
-   (concat
-    (nnweb-definition 'address)
-    "?"
-    (mm-url-encode-www-form-urlencoded
-     `(("ST" . "PS")
-       ("svcclass" . "dnyr")
-       ("QRY" . ,search)
-       ("defaultOp" . "AND")
-       ("DBS" . "1")
-       ("OP" . "dnquery.xp")
-       ("LNG" . "ALL")
-       ("maxhits" . "100")
-       ("threaded" . "0")
-       ("format" . "verbose2")
-       ("showsort" . "date")
-       ("agesign" . "1")
-       ("ageweight" . "1")))))
-  t)
-
-;; (defun nnweb-dejanewsold-search (search)
-;;   (nnweb-fetch-form
-;;    (nnweb-definition 'address)
-;;    `(("query" . ,search)
-;;      ("defaultOp" . "AND")
-;;      ("svcclass" . "dnold")
-;;      ("maxhits" . "100")
-;;      ("format" . "verbose2")
-;;      ("threaded" . "0")
-;;      ("showsort" . "date")
-;;      ("agesign" . "1")
-;;      ("ageweight" . "1")))
-;;   t)
-
-(defun nnweb-dejanews-identity (url)
-  "Return an unique identifier based on URL."
-  (if (string-match "AN=\\([0-9]+\\)" url)
-      (match-string 1 url)
-    url))
-
-;;;
-;;; InReference
-;;;
-
-(defun nnweb-reference-create-mapping ()
-  "Perform the search and create an number-to-url alist."
-  (save-excursion
-    (set-buffer nnweb-buffer)
-    (erase-buffer)
-    (when (funcall (nnweb-definition 'search) nnweb-search)
-      (let ((i 0)
-	    (more t)
-	    (case-fold-search t)
-	    (active (or (cadr (assoc nnweb-group nnweb-group-alist))
-			(cons 1 0)))
-	    Subject Score Date Newsgroups From Message-ID
-	    map url)
-	(while more
-	  ;; Go through all the article hits on this page.
-	  (goto-char (point-min))
-	  (search-forward "</pre><hr>" nil t)
-	  (delete-region (point-min) (point))
-	  (goto-char (point-min))
-	  (while (re-search-forward "^ +[0-9]+\\." nil t)
-	    (narrow-to-region
-	     (point)
-	     (if (re-search-forward "^$" nil t)
-		 (match-beginning 0)
-	       (point-max)))
-	    (goto-char (point-min))
-	    (when (looking-at ".*href=\"\\([^\"]+\\)\"")
-	      (setq url (match-string 1)))
-	    (mm-url-remove-markup)
-	    (goto-char (point-min))
-	    (while (search-forward "\t" nil t)
-	      (replace-match " "))
-	    (goto-char (point-min))
-	    (while (re-search-forward "^\\([^:]+\\): \\(.*\\)$" nil t)
-	      (set (intern (match-string 1)) (match-string 2)))
-	    (widen)
-	    (search-forward "</pre>" nil t)
-	    (incf i)
-	    (unless (nnweb-get-hashtb url)
-	      (push
-	       (list
-		(incf (cdr active))
-		(make-full-mail-header
-		 (cdr active) (concat  "(" Newsgroups ") " Subject) From Date
-		 Message-ID
-		 nil 0 (string-to-int Score) url))
-	       map)
-	      (nnweb-set-hashtb (cadar map) (car map))))
-	  (setq more nil))
-	;; Return the articles in the right order.
-	(setq nnweb-articles
-	      (sort (nconc nnweb-articles map) 'car-less-than-car))))))
-
-(defun nnweb-reference-wash-article ()
-  (let ((case-fold-search t))
-    (goto-char (point-min))
-    (re-search-forward "^</center><hr>" nil t)
-    (delete-region (point-min) (point))
-    (search-forward "<pre>" nil t)
-    (forward-line -1)
-    (let ((body (point-marker)))
-      (search-forward "</pre>" nil t)
-      (delete-region (point) (point-max))
-      (mm-url-remove-markup)
-      (goto-char (point-min))
-      (while (looking-at " *$")
-	(gnus-delete-line))
-      (narrow-to-region (point-min) body)
-      (while (and (re-search-forward "^$" nil t)
-		  (not (eobp)))
-	(gnus-delete-line))
-      (goto-char (point-min))
-      (while (looking-at "\\(^[^ ]+:\\) *")
-	(replace-match "\\1 " t)
-	(forward-line 1))
-      (goto-char (point-min))
-      (when (re-search-forward "^References:" nil t)
-	(narrow-to-region
-	 (point) (if (re-search-forward "^$\\|^[^:]+:" nil t)
-		     (match-beginning 0)
-		   (point-max)))
-	(goto-char (point-min))
-	(while (not (eobp))
-	  (unless (looking-at "References")
-	    (insert "\t")
-	    (forward-line 1)))
-	(goto-char (point-min))
-	(while (search-forward "," nil t)
-	  (replace-match " " t t)))
-      (widen)
-      (mm-url-decode-entities)
-      (set-marker body nil))))
-
-(defun nnweb-reference-search (search)
-  (mm-url-insert
-   (concat
-    (nnweb-definition 'address)
-    "?"
-    (mm-url-encode-www-form-urlencoded
-     `(("search" . "advanced")
-       ("querytext" . ,search)
-       ("subj" . "")
-       ("name" . "")
-       ("login" . "")
-       ("host" . "")
-       ("organization" . "")
-       ("groups" . "")
-       ("keywords" . "")
-       ("choice" . "Search")
-       ("startmonth" . "Jul")
-       ("startday" . "25")
-       ("startyear" . "1996")
-       ("endmonth" . "Aug")
-       ("endday" . "24")
-       ("endyear" . "1996")
-       ("mode" . "Quick")
-       ("verbosity" . "Verbose")
-       ("ranking" . "Relevance")
-       ("first" . "1")
-       ("last" . "25")
-       ("score" . "50")))))
-  (setq buffer-file-name nil)
-  t)
-
-;;;
-;;; Alta Vista
-;;;
-
-(defun nnweb-altavista-create-mapping ()
-  "Perform the search and create an number-to-url alist."
-  (save-excursion
-    (set-buffer nnweb-buffer)
-    (erase-buffer)
-    (let ((part 0))
-      (when (funcall (nnweb-definition 'search) nnweb-search part)
-	(let ((i 0)
-	      (more t)
-	      (case-fold-search t)
-	      (active (or (cadr (assoc nnweb-group nnweb-group-alist))
-			  (cons 1 0)))
-	      subject date from id group
-	      map url)
-	  (while more
-	    ;; Go through all the article hits on this page.
-	    (goto-char (point-min))
-	    (search-forward "<dt>" nil t)
-	    (delete-region (point-min) (match-beginning 0))
-	    (goto-char (point-min))
-	    (while (search-forward "<dt>" nil t)
-	      (replace-match "\n<blubb>"))
-	    (mm-url-decode-entities)
-	    (goto-char (point-min))
-	    (while (re-search-forward "<blubb>.*href=\"\\([^\"]+\\)\"><strong>\\([^>]*\\)</strong></a><dd>\\([^-]+\\)- <b>\\([^<]+\\)<.*href=\"news:\\([^\"]+\\)\">.*\">\\(.+\\)</a><P>"
-				      nil t)
-	      (setq url (match-string 1)
-		    subject (match-string 2)
-		    date (match-string 3)
-		    group (match-string 4)
-		    id (concat "<" (match-string 5) ">")
-		    from (match-string 6))
-	      (incf i)
-	      (unless (nnweb-get-hashtb url)
-		(push
-		 (list
-		  (incf (cdr active))
-		  (make-full-mail-header
-		   (cdr active) (concat  "(" group ") " subject) from date
-		   id nil 0 0 url))
-		 map)
-		(nnweb-set-hashtb (cadar map) (car map))))
-	    ;; See if we want more.
-	    (when (or (not nnweb-articles)
-		      (>= i nnweb-max-hits)
-		      (not (funcall (nnweb-definition 'search)
-				    nnweb-search (incf part))))
-	      (setq more nil)))
-	  ;; Return the articles in the right order.
-	  (setq nnweb-articles
-		(sort (nconc nnweb-articles map) 'car-less-than-car)))))))
-
-(defun nnweb-altavista-wash-article ()
-  (goto-char (point-min))
-  (let ((case-fold-search t))
-    (when (re-search-forward "^<strong>" nil t)
-      (delete-region (point-min) (match-beginning 0)))
-    (goto-char (point-min))
-    (while (looking-at "<strong>\\([^ ]+\\) +</strong> +\\(.*\\)$")
-      (replace-match "\\1: \\2" t)
-      (forward-line 1))
-    (when (re-search-backward "^References:" nil t)
-      (narrow-to-region (point) (progn (forward-line 1) (point)))
-      (goto-char (point-min))
-      (while (re-search-forward "<A.*\\?id@\\([^\"]+\\)\">[0-9]+</A>" nil t)
-	(replace-match "&lt;\\1&gt; " t)))
-    (widen)
-    (mm-url-remove-markup)
-    (mm-url-decode-entities)))
-
-(defun nnweb-altavista-search (search &optional part)
-  (mm-url-insert
-   (concat
-    (nnweb-definition 'address)
-    "?"
-    (mm-url-encode-www-form-urlencoded
-     `(("pg" . "aq")
-       ("what" . "news")
-       ,@(when part `(("stq" . ,(int-to-string (* part 30)))))
-       ("fmt" . "d")
-       ("q" . ,search)
-       ("r" . "")
-       ("d0" . "")
-       ("d1" . "")))))
-  (setq buffer-file-name nil)
-  t)
 
 ;;;
 ;;; Deja bought by google.com

Diff finished at Mon May 27 11:24:05

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Remove old Usenet search engines and yahoo's pop service. --]
[-- Type: text/x-patch, Size: 3099 bytes --]

cd h:/pgnus/texi/
diff -u -b "h:/pgnus/texi/gnus.texi.~6.281.~" "h:/pgnus/texi/gnus.texi"
--- h:/pgnus/texi/gnus.texi.~6.281.~	Mon May 27 11:06:15 2002
+++ h:/pgnus/texi/gnus.texi	Mon May 27 11:28:22 2002
@@ -2559,20 +2559,18 @@
 @item G w
 @kindex G w (Group)
 @findex gnus-group-make-web-group
-@cindex DejaNews
-@cindex Alta Vista
-@cindex InReference
+@cindex Google
 @cindex nnweb
 Make an ephemeral group based on a web search
 (@code{gnus-group-make-web-group}).  If you give a prefix to this
 command, make a solid group instead.  You will be prompted for the
 search engine type and the search string.  Valid search engine types
-include @code{dejanews}, @code{altavista} and @code{reference}.
+include @code{google} and @code{dejanews}.
 @xref{Web Searches}.
 
-If you use the @code{dejanews} search engine, you can limit the search
+If you use the @code{google} search engine, you can limit the search
 to a particular group by using a match string like
-@samp{~g alt.sysadmin.recovery shaving}.
+@samp{shaving group:alt.sysadmin.recovery}.
 
 @item G DEL
 @kindex G DEL (Group)
@@ -9075,12 +9073,12 @@
 match.
 
 Here's an example setting that will first try the current method, and
-then ask Deja if that fails:
+then ask Google if that fails:
 
 @lisp
 (setq gnus-refer-article-method
       '(current
-        (nnweb "refer" (nnweb-type dejanews))))
+        (nnweb "refer" (nnweb-type google))))
 @end lisp
 
 Most of the mail back ends support fetching by @code{Message-ID}, but
@@ -12819,9 +12817,6 @@
 @uref{webmail.netscape.com}, @uref{www.netaddress.com},
 @uref{www.my-deja.com}.
 
-NOTE: Now @uref{mail.yahoo.com} provides POP3 service, so @sc{pop} mail source
-is suggested.
-
 NOTE: Webmail largely depends cookies. A "one-line-cookie" patch is
 required for url "4.0pre.46".
 
@@ -14374,8 +14369,6 @@
 @cindex nnweb
 @cindex Google
 @cindex DejaNews
-@cindex Alta Vista
-@cindex InReference
 @cindex Usenet searches
 @cindex searching the Usenet
 
@@ -14398,7 +14391,7 @@
 manner.  Not even using duplicate suppression (@pxref{Duplicate
 Suppression}) will help, since @code{nnweb} doesn't even know the
 @code{Message-ID} of the articles before reading them using some search
-engines (DejaNews, for instance).  The only possible way to keep track
+engines (Google, for instance).  The only possible way to keep track
 of which articles you've read is by scoring on the @code{Date}
 header---mark all articles posted before the last date you read the
 group as read.
@@ -14419,8 +14412,8 @@
 @item nnweb-type
 @vindex nnweb-type
 What search engine type is being used.  The currently supported types
-are @code{google}, @code{dejanews}, @code{altavista} and
-@code{reference}.
+are @code{google} and @code{dejanews}. Note that @code{dejanews} is an
+alias to @code{google}.
 
 @item nnweb-search
 @vindex nnweb-search
@@ -14429,7 +14422,7 @@
 @item nnweb-max-hits
 @vindex nnweb-max-hits
 Advisory maximum number of hits per search to display.  The default is
-100.
+999.
 
 @item nnweb-type-definition
 @vindex nnweb-type-definition

Diff finished at Mon May 27 11:31:48

      parent reply	other threads:[~2002-05-27  9:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-22 12:02 Trivial documentation patch for nnweb Niklas Morberg
2002-05-23 19:32 ` Simon Josefsson
2002-05-27  9:40 ` Niklas Morberg [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ud6vi0vz6.fsf@axis.com \
    --to=niklas.morberg@axis.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).