(define-module (config) :export (feeds)) (use-modules (sxml xpath) (ice-9 regex) (rss-filter feed-handler) ((ice-9 i18n) :select (make-locale)) ((texinfo string-utils) :select (escape-special-chars)) ((hnh util) :select (->)) ((datetime) :select (datetime datetime->string string->datetime))) (define feeds (list (make-feed "https://lwn.net/headlines/Features" `((rss:item . ,(lambda (key . children) (define tag (cons key children)) (call-with-values (lambda () (apply values ((sxpath '(rss:title *text*)) tag))) (case-lambda (() tag) ((title . _) (if (string-match (escape-special-chars "^[$]" "[]$" #\\) title) '() tag)))))))) (make-feed "https://swordscomic.com/comic/feed/" `((rss:pubDate . ,(lambda (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) (cons key ;; Each entry has a " (car children)) => (lambda (m) (list (string-drop (car children) (match:end m))))) (else children))))) )) ))