(require 'gnus)
(require 'gnus-start)
(require 'gnus-group)
(require 'time-date)
(defvar gnus-auto-subscribe-default-period 10)
(defun gnus-auto-subscribe-groups nil
"Subscribe groups with `auto-subscribe' group parameter."
(let ((newsrc (cdr gnus-newsrc-alist))
(period))
(dolist (info newsrc)
(let* ((group (gnus-info-group info))
(spec (gnus-group-find-parameter group 'auto-subscribe t)))
(when spec
(unless (listp spec)
(setq spec (list spec)))
(if (eq (car-safe spec) t)
(setq period gnus-auto-subscribe-default-period)
(setq period (car spec)))
(when (stringp period)
(setq period (string-to-number period)))
(if (cadr spec)
(when (>= (days-between (current-time-string) (cadr spec))
period)
(gnus-group-set-parameter group 'auto-subscribe
(list (car spec) (current-time-string)))
(gnus-group-unsubscribe-group group gnus-level-default-subscribed))
(gnus-group-set-parameter group 'auto-subscribe
(list (car spec) (current-time-string)))))))))
(provide 'gnus-auto-subscribe)