Automagical updating of last-known good if a non-spammy update was made.
Thu Jun 16 05:58:14 UTC 2011 pix@kepibu.org
* Automagical updating of last-known good if a non-spammy update was made.
hunk ./claki.lisp 42
-(defvar *has-spam* (list) "list of (cliki-page . version) known to have spam.")
+(defvar *has-spam* (list) "list of (cliki-page version) known to have spam.")
+(defvar *updated-pages* (list) "list of pages that have been updated in the format (cliki-page version).")
+(defvar *ignore-update* (list) "list of pages in the format (cliki-page version) which updates should not result in updating the last-known good version (e.g., because we did it and it was a reversion).")
hunk ./claki.lisp 56
+ (format t "; Page ~s modified, now at version ~a.~%" page-url current-version)
+ (pushnew (list page-url current-version) *updated-pages* :test #'equal)
hunk ./claki.lisp 141
+(defun update-last-known-good ()
+ ;; Remove known-spam pages from list of updates
+ (loop :for (page-url version) :in *has-spam*
+ :do (removef *updated-pages* (list page-url version) :test #'equal))
+ ;; Remove updates we made from list of updates (that way, we'll continue to
+ ;; use the old cached known-good, saving a bit of strain on cliki)
+ (loop :for (page-url version) :in *ignore-update*
+ :do (removef *updated-pages* (list page-url version) :test #'equal))
+ (setf *updated-pages*
+ (loop :for (page-url version) :in *updated-pages*
+ ;; If there are unclassified urls from this page, don't mark good
+ ;; (could be spam!)
+ :if (notany (lambda (x) (and (string= page-url (second x))
+ (string= version (third x))))
+ *urls-to-classify*)
+ :do (format t "; Updating last-known good of ~s from ~a to ~a~%" page-url (gethash page-url *last-known-good*) version)
+ (setf (gethash page-url *last-known-good*) version)
+ :else
+ :collect (list page-url version))))
+
+(defun numstring+1 (numstring)
+ (write-to-string (1+ (parse-integer numstring))))
+
hunk ./claki.lisp 173
- ("name" . "Claki (Revertobot Alpha)")))
+ ("name" . "Claki (Revertobot Beta)")))
hunk ./claki.lisp 179
+ (pushnew (list url (numstring+1 current-version)) *ignore-update* :test #'equal)
hunk ./claki.lisp 206
+ (update-last-known-good)
hunk ./claki.lisp 212
+ (update-last-known-good)
hunk ./claki.lisp 259
- (rs:btree-insert btree 'known-good *last-known-good*)))
+ (rs:btree-insert btree 'known-good *last-known-good*)
+ (rs:btree-insert btree 'updated-pages *updated-pages*)
+ (rs:btree-insert btree 'our-updates *ignore-update*)))
hunk ./claki.lisp 269
- *last-known-good* (rs:btree-search btree 'known-good))))
+ *last-known-good* (rs:btree-search btree 'known-good)
+ *updated-pages* (rs:btree-search btree 'updated-pages)
+ *ignore-update* (rs:btree-search btree 'our-updates))))