From a22a0346524910c596f97aba955b7346b7479c2d Mon Sep 17 00:00:00 2001 From: stuebinm Date: Thu, 7 Apr 2022 21:44:23 +0200 Subject: flora: fix the trainspotter script --- flora/services/trainspotter.scm | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 flora/services/trainspotter.scm (limited to 'flora/services/trainspotter.scm') diff --git a/flora/services/trainspotter.scm b/flora/services/trainspotter.scm new file mode 100644 index 0000000..860f0ab --- /dev/null +++ b/flora/services/trainspotter.scm @@ -0,0 +1,56 @@ +#!/usr/bin/env gosh + +(use gauche.process) +(use srfi-13) +(use srfi-19) +(use file.util) + +(define url "https://ilztalbahn.eu/wp-content/uploads/2020/07/gtfs.zip") +(define cachefile "/tmp/urlwatch-cache") +(define storagedir "/var/lib/urlwatch-ilztal") + +(do-process `(mkdir "-p" ,storagedir)) + +(define (get-hash url) + (string-trim-both + (process-output->string `((curl ,url) + (sha256sum))))) + +(define hash + (get-hash url)) + +(define pretty-date + (date->string (time-utc->date (current-time)) "~5")) + +(define (hash-did-change oldhash newhash) + (print (format "the url's hash has changed to ~s!" newhash)) + (let ([newfile (string-append storagedir "/" newhash)]) + (do-process `(curl ,url "-o" ,newfile)) + (let ([diff (if oldhash + (let ([oldfile (string-append storagedir "/" oldhash)]) + (process-output->string `(zipcmp ,oldfile ,newfile))) + "")]) + (do-pipeline `((echo ,(format " + +Neuer hash ist ~a +Link ist ~a + +~a + +(~a) + +" newhash url diff pretty-date)) + (mail "-s" "Ilztalbahn GTFS Update" + "stuebinm@disroot.org" + "-a" "From: trainspotter@flora.stuebinm.eu"))) + (sexp-list->file + cachefile + (list (list pretty-date newhash)) + :if-exists :append)))) + +(if (file-is-writable? cachefile) + (let ([oldhash (cadr (last (file->sexp-list cachefile)))]) + (if (equal? (cadr (last (file->sexp-list cachefile))) hash) + (print (format "url did not change, hash remains ~a" hash)) + (hash-did-change oldhash hash))) + (hash-did-change #f hash)) -- cgit v1.2.3