- commit
- 35fd5a415ec88cfe60236749d8ced9698773d272
- parent
- 85519303403f4995a0954e3362f4bc5b6c457c73
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-02-12 11:05
add JSON feed https://www.jsonfeed.org/version/1.1/
Diffstat
M | Makefile | 16 | +++++++++++----- |
M | _templates/base.html | 1 | + |
R | feed.sh -> feed-atom.sh | 0 | |
A | feed-json.sh | 46 | ++++++++++++++++++++++++++++++++++++++++++++++ |
4 files changed, 58 insertions, 5 deletions
diff --git a/Makefile b/Makefile
@@ -7,7 +7,7 @@ IMG := $(shell find _content -regex '.*\.\(png\|gif\|jpg\)$$' | sed 's/^_content 7 7 PANDOC_ARGS = -f markdown-smart --wrap=none 8 8 9 9 .PHONY: all10 -1 all: build/index.html $(PAGES) $(PAGES_MD) build/feed.xml build/feed-archive.xml $(STATIC) build/static/style.css $(IMG)-1 10 all: build/index.html $(PAGES) $(PAGES_MD) build/feed.xml build/feed-archive.xml build/feed.json build/feed-archive.json $(STATIC) build/static/style.css $(IMG) 11 11 12 12 .PHONY: push 13 13 push: all @@ -38,11 +38,17 @@ build/%.jpg: _content/%.jpg 38 38 build/%.gif: _content/%.gif 39 39 ln $< $@ 40 4041 -1 build/feed.xml: feed.sh $(PAGES_FEED)42 -1 ./feed.sh > $@-1 41 build/feed.xml: feed-atom.sh $(PAGES_FEED) -1 42 ./feed-atom.sh > $@ 43 4344 -1 build/feed-archive.xml: feed.sh $(PAGES_FEED)45 -1 ./feed.sh -a > $@-1 44 build/feed-archive.xml: feed-atom.sh $(PAGES_FEED) -1 45 ./feed-atom.sh -a > $@ -1 46 -1 47 build/feed.json: feed-json.sh $(PAGES_FEED) -1 48 ./feed-json.sh > $@ -1 49 -1 50 build/feed-archive.json: feed-json.sh $(PAGES_FEED) -1 51 ./feed-json.sh -a > $@ 46 52 47 53 build/static/%: static/% 48 54 @mkdir -p $$(dirname $@)
diff --git a/_templates/base.html b/_templates/base.html
@@ -9,6 +9,7 @@ 9 9 <title>Ξ${if(title)} - ${title}${endif}</title> 10 10 <link rel="stylesheet" type="text/css" href="/static/style.css"> 11 11 <link rel="alternate" type="application/atom+xml" href="/feed.xml"> -1 12 <link rel="alternate" type="application/feed+json" href="/feed.json"> 12 13 </head> 13 14 14 15 <body>
diff --git a/feed.sh b/feed-atom.sh
diff --git a/feed-json.sh b/feed-json.sh
@@ -0,0 +1,46 @@ -1 1 #!/bin/sh -1 2 -1 3 base_url='https://blog.ce9e.org/' -1 4 -1 5 escape() { -1 6 sed 's/\\/\\\\\\\\/g;s/"/\\"/g' -1 7 } -1 8 -1 9 value() { -1 10 printf '%.*s"%s": "%s",\n' "$1" ' ' "$2" "$3" -1 11 } -1 12 -1 13 echo '{' -1 14 value 1 'version' "https://jsonfeed.org/version/1.1" -1 15 echo ' "authors": [{"name": "Tobias Bengfort"}],' -1 16 value 1 'title' 'Ξ' -1 17 value 1 'home_page_url' "$base_url" -1 18 if [ "$1" = '-a' ]; then -1 19 value 1 'feed_url' "${base_url}feed-archive.json" -1 20 select='tail -n +11' -1 21 else -1 22 value 1 'feed_url' "${base_url}feed.json" -1 23 value 1 'next_url' "${base_url}feed-archive.json" -1 24 select='head -n 10' -1 25 fi -1 26 -1 27 ls _content/posts | tac | $select | while read l; do -1 28 if [ -z "$loop" ]; then -1 29 echo ' "items": [{' -1 30 loop=1 -1 31 else -1 32 echo ' }, {' -1 33 fi -1 34 -1 35 yml="_content/posts/$l/index.md" -1 36 html="_content/posts/$l/index.html" -1 37 url="${base_url}posts/$l/" -1 38 value 2 'title' "$(grep '^title:' "$yml" | head -n 1 | sed 's/title: //;s/^"\(.*\)"$/\1/' | escape)" -1 39 value 2 'url' "$url" -1 40 value 2 'id' "$url" -1 41 value 2 'date_published' "$(grep '^date:' "$yml" | head -n 1 | sed 's/date: //' | escape)" -1 42 echo " \"content_html\": \"$(cat "$html" | escape | sed 's/$/\\\\n/' | tr -d '\n')\"" -1 43 done -1 44 echo ' }]' -1 45 -1 46 echo '}'