diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-12-30 16:03:48 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2021-12-30 16:03:48 +0100 |
commit | db73c44a2640413fce80a9b5fa03fa58dc98d458 (patch) | |
tree | 54c704290abfa527890297c76afee277189d18bf | |
parent | Fix add-to-load-path. (diff) | |
download | rss-filter-db73c44a2640413fce80a9b5fa03fa58dc98d458.tar.gz rss-filter-db73c44a2640413fce80a9b5fa03fa58dc98d458.tar.xz |
Move date parsing to library.
-rw-r--r-- | config.scm | 47 |
1 files changed, 8 insertions, 39 deletions
@@ -7,43 +7,12 @@ (feed-handler) - ((datetime) :select (datetime datetime->string))) + ((ice-9 i18n) :select (make-locale)) + ((calp util) :select (->)) + ((datetime) :select (datetime datetime->string + string->datetime))) -(define (parse-month str) - "Get month number from (a shortened) monthname. -Returns -1 on failure" - (let loop ((i 1) - (months - (list "january" "february" "march" "april" "may" "june" "july" - "august" "september" "october" "november" "december"))) - - - (if (null? months) - -1 - (let ((len (min (string-length (car months)) - (string-length str)))) - (if (string=? - (string-take (string-downcase str) len) - (string-take (car months) len)) - i - (loop (1+ i) (cdr months))))))) - - -(define (parse-date str) - (and=> (string-match "([a-zA-Z]*)\\. ([0-9]+), ([0-9]+), ([0-9]+):([0-9]+) ([ap])\\.m\\." str) - (lambda (m) - (let ((month (match:substring m 1)) - (day (string->number (match:substring m 2))) - (year (string->number (match:substring m 3))) - (hour (string->number (match:substring m 4))) - (minute (string->number (match:substring m 5))) - (am-pm (match:substring m 6))) - (datetime #:year year - #:month (parse-month month) - #:day day - #:hour (+ hour (if (string=? am-pm "p") 12 0)) - #:minute minute))))) (define feeds (list @@ -62,10 +31,10 @@ Returns -1 on failure" "https://swordscomic.com/comic/feed/" `((rss:pubDate . ,(lambda (key . children) - (cond ((parse-date (car children)) - => (lambda (dt) - (list key (datetime->string dt "~Y-~m-~dT~H:~M:~S")))) - (else (cons key children))))) + (list key + (-> (car children) + (string->datetime "~b. ~d, ~Y, ~H:~M ~p" (make-locale LC_TIME "en_US.UTF-8")) + (datetime->string "~Y-~m-~dT~H:~M:~S"))))) (rss:description . ,(lambda (key . children) |