From 4e749697600bab526b1cf51bcca493f6d31d2e34 Mon Sep 17 00:00:00 2001 From: nathansmith Date: Fri, 23 May 2025 07:43:34 -0600 Subject: Almost done with this stupidness --- org/blog/generate_feed.scm | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 org/blog/generate_feed.scm (limited to 'org/blog/generate_feed.scm') diff --git a/org/blog/generate_feed.scm b/org/blog/generate_feed.scm new file mode 100755 index 0000000..8519f0c --- /dev/null +++ b/org/blog/generate_feed.scm @@ -0,0 +1,66 @@ +#! /usr/bin/guile \ +-e main -s +!# + +(use-modules (sxml simple)) + +(define site-url "https://shittyweb.org") + +;; Generate description from article file +(define (get-description file) + (call-with-input-file file + (lambda (fp) + (letrec ((read-characters + (lambda (fp) + (let ((character (read-char fp))) + (unless (eof-object? character) + (display character) + (read-characters fp)))))) + (display "\n"))))) + +;; Generate rss item +(define (make-item article) + (let ((title (cadr (list-ref article 0))) + (name (cadr (list-ref article 2))) + (pub-date (cadr (list-ref article 4))) + (file (cadr (list-ref article 6)))) + (format #t "\n \n\ + ~a\n\ + ~a/blog#~a\n\ + ~a\n\ + \n" title site-url name pub-date) + (get-description file) + (display " \n") + (display " \n"))) + +;; Generate rss feed +(define (generate-feed) + ;; Display the rss header + (format #t "\n\ +\n\ + \n\ + Nathan's shitty blog\n\ + The coffee powered blog of chaos\n\ + ~a\n\ + \n\ + ~a/images/icon.png\n\ + Nathan's shitty blog\n\ + ~a/blog\n\ + \n" site-url site-url site-url) + + (call-with-input-file "articles.xml" + (lambda (fp) + (let ((articles (xml->sxml fp))) + (for-each (lambda (article) + (if (list? article) + (make-item (cddr article)))) + (cdr (cadr articles)))))) + + (display " \n") + (display "\n")) + +(define (main args) + (generate-feed)) + -- cgit v1.2.3