From 1a86583160fbf10a68828958e80a7aa52e5c9db8 Mon Sep 17 00:00:00 2001 From: Matthew Fennell Date: Thu, 16 Apr 2026 18:30:17 +0100 Subject: Do not check for new slots in the next 3 days This is in order to prevent last-minute booking switches. --- config.scm | 1 + shuttlebot.scm | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config.scm b/config.scm index f07403b..64d14d0 100644 --- a/config.scm +++ b/config.scm @@ -8,6 +8,7 @@ (define default-venues '(botwell-green-leisure-centre)) (define default-activities '(badminton-40min badminton-60min)) (define default-dates '(sat sun)) +(define default-min-lookahead-days 3) (define default-checkout #t) (define default-user matthew) diff --git a/shuttlebot.scm b/shuttlebot.scm index 3672ae2..6985323 100755 --- a/shuttlebot.scm +++ b/shuttlebot.scm @@ -52,12 +52,15 @@ (venues default-venues) (activities default-activities) (dates default-dates) + (min-lookahead-days default-min-lookahead-days) (token #f)) (let* ((venues (map symbol->string venues)) (activities (map symbol->string activities)) + (today (10pm-adjusted-date (current-date))) + (ignored-dates (days-after today min-lookahead-days)) (dates (map this dates)) - (dates (filter (lambda (d) (not (equal? d (date-date (current-date))))) dates)) + (dates (filter (lambda (d) (not (any (cut equal? d <>) ignored-dates))) dates)) (dates (map date->api-string dates)) (permutations (cartesian-product venues activities dates)) (positive-spaces? (lambda (t) ((compose positive? time-data-spaces) t))) @@ -173,7 +176,7 @@ (let* ((token (login user)) (existing (scored (bookings #:venues venues #:activities activities #:dates dates #:token token))) (best-existing (reduce max-score fake-score existing)) - (new (scored (times #:venues venues #:activities activities #:dates dates #:token token))) + (new (scored (times #:venues venues #:activities activities #:dates dates #:min-lookahead-days default-min-lookahead-days #:token token))) (best-new (reduce max-score fake-score new))) (log-msg 'INFO "Best new booking: " (first best-new) " with score " (second best-new)) (log-msg 'INFO "Best existing booking: " (first best-existing) " with score " (second best-existing)) -- cgit v1.2.3