Innocenty Enikeew 10 vuotta sitten
vanhempi
commit
06f883bece
1 muutettua tiedostoa jossa 4 lisäystä ja 4 poistoa
  1. 4 4
      rss.lisp

+ 4 - 4
rss.lisp

@@ -4,7 +4,7 @@
 (defstruct feed-item guid link title description published)
 
 (defparameter *rss-min-period* 60 "Min rss refresh period in seconds")
-(defparameter *rss-max-period* 600 "Min rss refresh period in seconds")
+(defparameter *rss-max-period* 1800 "Max rss refresh period in seconds")
 (defparameter *rss-change-rate* 0.1 "Refresh period adjustment rata")
 
 (defun http-default (url)
@@ -39,14 +39,14 @@
                             (dex:get url :force-binary t) :external-format :utf-8))))
     (make-feed :url url :title (child-text root "title"))))
 
-(defun adjust-period (feed had-new?)
+(defun adjust-period (feed coeff)
   "Adjust the period of feed based on whenever there were new items. With clamping"
   (let* ((p (feed-period feed))
          (diff (round (* p *rss-change-rate*))))
     (setf (feed-period feed)
           (min *rss-max-period*
                (max *rss-min-period*
-                    (if had-new? (- p diff) (+ p diff)))))))
+                    (- p (* coeff diff)))))))
 
 (defun need-fetch-p (feed)
   (or (null (feed-next-fetch feed))
@@ -58,7 +58,7 @@
             unless (member (feed-item-guid item) (feed-seen-guids feed) :test #'equal)
             do (pushnew (feed-item-guid item) (feed-seen-guids feed) :test #'equal)
             and collect item)))
-    (adjust-period feed (consp items))
+    (adjust-period feed (if (consp items) (length items) -1))
     (setf (feed-next-fetch feed)
           (local-time:timestamp+ (local-time:now)
                                  (feed-period feed)