cryogen-core/src/cryogen_core/rss.clj

36 lines
1.3 KiB
Clojure
Raw Normal View History

2014-12-05 15:56:40 +00:00
(ns cryogen-core.rss
2014-12-04 16:38:48 +00:00
(:require [clj-rss.core :as rss]
[text-decoration.core :refer :all]
2017-01-16 07:37:19 +00:00
[cryogen-core.io :as cryogen-io])
2014-12-04 16:38:48 +00:00
(:import java.util.Date))
2015-09-14 10:06:35 +00:00
(defn posts-to-items [^String site-url posts]
2014-12-04 16:38:48 +00:00
(map
2019-12-20 14:55:53 +00:00
(fn [{:keys [uri title content date enclosure author description]}]
(let [link (str (if (.endsWith site-url "/") (apply str (butlast site-url)) site-url) uri)
enclosure (if (nil? enclosure) "" enclosure)]
{:guid link
:link link
:title title
:description (or description content)
:author author
:enclosure enclosure
:pubDate date}))
posts))
2014-12-04 16:38:48 +00:00
(defn make-channel [config posts]
(apply
2019-12-20 14:55:53 +00:00
(partial rss/channel-xml
false
{:title (:site-title config)
:link (:site-url config)
:description (:description config)
:lastBuildDate (Date.)})
(posts-to-items (:site-url config) posts)))
(defn make-filtered-channels [{:keys [rss-filters blog-prefix] :as config} posts-by-tag]
(doseq [filter rss-filters]
2017-01-16 07:37:19 +00:00
(let [uri (cryogen-io/path "/" blog-prefix (str (name filter) ".xml"))]
(println "\t-->" (cyan uri))
2017-01-16 07:37:19 +00:00
(cryogen-io/create-file uri (make-channel config (get posts-by-tag filter))))))