Add enclosure tag to facilitate Podcasting with Cryogen
Add an enclosure tag to a post's metadata to let a podcast client to deliver your audio content. It should look like this: :enclosure [{:url "<full-url>"}] Without the brackets, you end up with NullPointerExceptions, so make sure you have that. The URL should be the full location of where the audio file is hosted (not relative), so for example: :enclosure [{:url "http://www.example.com/01_episode_IV.mp3"}] I created a bunch of markdown files with just the enclosure and info about the audiobook with the following bash snippet: find -L books -type f -iname "*mp3" | sort | while read mp3; do name=$(basename $mp3 .mp3); book=$(basename "$(dirname $mp3)"); echo "{:title \"$name\"\n:layout :post\n:tags [\"audiobooks\" \"$book\"]\n:enclosure [{:url \"http://clashthebunny.mason.ch/blog/$mp3\"}]}\n $book - $name\n==================" > md/posts/"$(date "+%Y-$name").md"; done Each book was in it's own subdirectory of books: books/Dracula/1-01-Chapter1_part01.mp3 books/Dracula/1-02-Chapter1_part02.mp3 books/Dracula/2-01-Chapter2_part01.mp3 Note that the above script requires the prefix of the episode to be "date-like". It should be fairly easy to work out a way to get your podcast up and running. Add the book names to your rss-filters array, e.g.: ["Dracula" "Pride & Prejudice"] Most podcasting clients support authentication, so just password protect those directories and you should be good to go, even if you are hosting copyrighted content.
This commit is contained in:
parent
e1aa1d737f
commit
03cfabcbb9
2 changed files with 5 additions and 4 deletions
|
@ -143,7 +143,7 @@
|
||||||
"Adds the uri and title of a post to the list of posts under each of its tags"
|
"Adds the uri and title of a post to the list of posts under each of its tags"
|
||||||
[tags post]
|
[tags post]
|
||||||
(reduce (fn [tags tag]
|
(reduce (fn [tags tag]
|
||||||
(update-in tags [tag] (fnil conj []) (select-keys post [:uri :title :content :date])))
|
(update-in tags [tag] (fnil conj []) (select-keys post [:uri :title :content :date :enclosure])))
|
||||||
tags (:tags post)))
|
tags (:tags post)))
|
||||||
|
|
||||||
(defn group-by-tags
|
(defn group-by-tags
|
||||||
|
|
|
@ -1,18 +1,19 @@
|
||||||
(ns cryogen-core.rss
|
(ns cryogen-core.rss
|
||||||
(:require [clj-rss.core :as rss]
|
(:require [clj-rss.core :as rss]
|
||||||
[clojure.xml :refer [emit]]
|
|
||||||
[text-decoration.core :refer :all])
|
[text-decoration.core :refer :all])
|
||||||
(:import java.util.Date))
|
(:import java.util.Date))
|
||||||
|
|
||||||
|
|
||||||
(defn posts-to-items [site-url posts]
|
(defn posts-to-items [site-url posts]
|
||||||
(map
|
(map
|
||||||
(fn [{:keys [uri title content date]}]
|
(fn [{:keys [uri title content date enclosure]}]
|
||||||
(let [link (str (if (.endsWith site-url "/") (apply str (butlast site-url)) site-url) uri)]
|
(let [link (str (if (.endsWith site-url "/") (apply str (butlast site-url)) site-url) uri)
|
||||||
|
enclosure (if (nil? enclosure) "" enclosure)]
|
||||||
{:guid link
|
{:guid link
|
||||||
:link link
|
:link link
|
||||||
:title title
|
:title title
|
||||||
:description content
|
:description content
|
||||||
|
:enclosure enclosure
|
||||||
:pubDate date}))
|
:pubDate date}))
|
||||||
posts))
|
posts))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue