headers article subject score from date lines parent point
contents tinfo fetchers map elem a href garticles topic old-max
inc datel table string current-page total-contents pages
- farticles forum-contents parse furl-fetched)
+ farticles forum-contents parse furl-fetched mmap farticle)
(setq map mapping)
(while (and (setq article (car articles))
map)
(setcdr table nil)
(setq table (nnultimate-find-forum-table contents)))
(setq contents (cdr (nth 2 (car (nth 2 table)))))
- (setq total-contents (nconc contents total-contents))
+ (setq total-contents (nconc total-contents contents))
(incf current-page))
;;(setq total-contents (nreverse total-contents))
(dolist (art (cdr elem))
datel nil))
(pop datel))
(setq date (delete "" (split-string date "[- \n\t\r ]")))
- (setq date (format "%s %s %s %s"
- (car (rassq (string-to-number (nth 1 date))
- parse-time-months))
- (nth 0 date) (nth 2 date) (nth 3 date)))
+ (if (or (member "AM" date)
+ (member "PM" date))
+ (setq date (format "%s %s %s %s"
+ (car (rassq (string-to-number (nth 0 date))
+ parse-time-months))
+ (nth 1 date) (nth 2 date) (nth 3 date)))
+ (setq date (format "%s %s %s %s"
+ (car (rassq (string-to-number (nth 1 date))
+ parse-time-months))
+ (nth 0 date) (nth 2 date) (nth 3 date))))
(push
(cons
article
article subject
from (or date "")
(concat "<" (number-to-string sid) "%"
- (number-to-string article)
+ (number-to-string article)
"@ultimate>")
"" 0
(/ (length (mapconcat
(erase-buffer)
(dolist (header nnultimate-headers)
(nnheader-insert-nov (cdr header)))))
- (setcar (nthcdr 6 entry) (nth 1 entry))
- (nnultimate-write-groups)
'nov)))
(deffoo nnultimate-request-group (group &optional server dont-check)
(nnultimate-possibly-change-server nil server)
- (when (or (not dont-check)
- (not nnultimate-groups))
+ (when (not nnultimate-groups)
(nnultimate-request-list))
(unless dont-check
(nnultimate-create-mapping group))
(deffoo nnultimate-request-list (&optional server)
(nnultimate-possibly-change-server nil server)
(with-temp-buffer
- (nnweb-insert (concat nnultimate-address "Ultimate.cgi"))
+ (nnweb-insert
+ (if (string-match "/$" nnultimate-address)
+ (concat nnultimate-address "Ultimate.cgi")
+ nnultimate-address))
(let ((contents (nth 2 (car (nth 2
(nnultimate-find-forum-table
(w3-parse-buffer (current-buffer)))))))
(setq forum (string-to-number (match-string 1 href)))
(if (setq elem (assoc group nnultimate-groups))
(setcar (cdr elem) articles)
- (push (list group articles forum description nil nil nil)
+ (push (list group articles forum description nil nil nil nil)
nnultimate-groups))))))
(nnultimate-write-groups)
(nnultimate-generate-active)
;;; Internal functions
+(defun nnultimate-prune-days (group time)
+ "Compute the number of days to fetch info for."
+ (let ((old-time (nth 7 (assoc group nnultimate-groups))))
+ (if (null old-time)
+ 1000
+ (- (time-to-days time) (time-to-days old-time)))))
(defun nnultimate-create-mapping (group)
(let* ((entry (assoc group nnultimate-groups))
(topics (nth 4 entry))
(mapping (nth 5 entry))
(old-total (or (nth 6 entry) 1))
- (furl "forumdisplay.cgi?action=topics&number=%d&DaysPrune=1000")
+ (current-time (current-time))
+ (furl
+ (concat "forumdisplay.cgi?action=topics&number=%d&DaysPrune="
+ (number-to-string
+ (nnultimate-prune-days group current-time))))
(furls (list (concat nnultimate-address (format furl sid))))
contents forum-contents furl-fetched a subject href
- garticles topic tinfo old-max inc)
+ garticles topic tinfo old-max inc parse)
(with-temp-buffer
(while furls
(erase-buffer)
(cdr (nth 2 (car (nth 2 (nnultimate-find-forum-table
parse))))))
(setq forum-contents (nconc contents forum-contents))
- (when (and (not mapping)
- (not furl-fetched))
+ (unless furl-fetched
(setq furl-fetched t)
- ;; On the first mapping, we fetch all the forum URLs.
+ ;; On the first time through this loop, we find all the
+ ;; forum URLs.
(dolist (a (nnweb-parse-find-all 'a parse))
(let ((href (cdr (assq 'href (nth 1 a)))))
(when (and href
(incf old-max inc)
(setcar (nthcdr 5 entry) mapping)
(setcar (nthcdr 6 entry) old-total)))))
+ (setcar (nthcdr 7 entry) current-time)
+ (setcar (nthcdr 1 entry) (1- old-total))
(nnultimate-write-groups)
mapping))
(when (and server
(not (nnultimate-server-opened server)))
(nnultimate-open-server server))
-; (unless nnultimate-groups-alist
+ (unless nnultimate-groups-alist
(nnultimate-read-groups)
(setq nnultimate-groups (cdr (assoc nnultimate-address
- nnultimate-groups-alist))))
+ nnultimate-groups-alist)))))
(deffoo nnultimate-open-server (server &optional defs connectionless)
(nnheader-init-server-buffer)
(unless (file-exists-p nnultimate-directory)
(gnus-make-directory nnultimate-directory)))
-(defun nnultimate-date-to-date (sdate)
- (let ((elem (split-string sdate)))
- (concat (substring (nth 0 elem) 0 3) " "
- (substring (nth 1 elem) 0 3) " "
- (substring (nth 2 elem) 0 2) " "
- (substring (nth 3 elem) 1 6) " "
- (format-time-string "%Y") " "
- (nth 4 elem))))
-
(defun nnultimate-generate-active ()
(save-excursion
(set-buffer nntp-server-buffer)