From 43d9e4dd327d0c43df5cbfc343669b50d979fa16 Mon Sep 17 00:00:00 2001 From: Patryk Niedźwiedziński Date: Mon, 15 Mar 2021 09:12:29 +0100 Subject: Add rss --- gen | 49 ++++++++++++++-- ssg5 | 4 +- tools/rssg | 189 ------------------------------------------------------------- 3 files changed, 44 insertions(+), 198 deletions(-) delete mode 100755 tools/rssg diff --git a/gen b/gen index 04ac0cc..fd94db9 100755 --- a/gen +++ b/gen @@ -1,13 +1,36 @@ #!/bin/sh +TITLE="19 PDH Puszcza" +URL="https://nojs--api-puszcza.netlify.app" +DESCRIPTION="" + rm -r dest || true mkdir dest # This is useful when deploying on netlify. Thanks to storing compiled binaries # in this folder they will be cached and restored. -export PATH="$PWD/.jekyll-cache:$PATH" +export PATH="$PWD/.jekyll-cache:$PWD/tools:$PATH" ./tools/compile +post_rss() { + path="$URL$1" + title=$2 + photo=$3 + description=$4 + file=$5 + date=`git log -n 1 --date="format:%Y-%m-%dT%H:%M:%SZ" --pretty=format:'%ad' -- $file` + cat << EOF + + $path + $path + $date + $title + + +EOF +} post_link() { path=$1 @@ -33,10 +56,22 @@ cat > wpisy/kronika.html << EOF

Ostatnie wpisy

-RSS +RSS
EOF +mkdir -p dest/kronika +cat > dest/kronika/rss.xml << EOF + + + + +$TITLE +$DESCRIPTION +$URL +$(date -R) +EOF + i=0 for f in `find wpisy/kronika/20* -name '*.md' | sort -r`; do path=`echo $f | sed 's/wpisy//;s/.md//'` @@ -45,12 +80,14 @@ for f in `find wpisy/kronika/20* -name '*.md' | sort -r`; do [ -z $photo ] && photo="/assets/default_tree.jpg" description=`grep -E "^[A-Z]" $f | grep -v "|" | head -n 1 | cut -d" " -f1-30` post_link "$path" "$title" "$photo" "$description" >> wpisy/kronika.html - [ $i -lt 4 ] && \ + [ $i -lt 20 ] && \ + post_rss "$path" "$title" "$photo" "$description" "$f" >> dest/kronika/rss.xml + # [ $i -lt 4 ] && \ # post_link "$path" "$title" "$photo" "$description" >> wpisy/index.md && \ - i=$(($i+1)) + i=$(($i+1)) done echo "
" >> wpisy/kronika.html +echo "" >> dest/kronika/rss.xml -./ssg5 wpisy dest "19 PDH Puszcza" "https://19.niedzwiedzinski.cyou" +./ssg5 wpisy dest "$TITLE" "$URL" cp -r static/* dest -./tools/rssg dest/kronika/index.html "19 PDH Puszcza" > dest/rss.xml diff --git a/ssg5 b/ssg5 index 84311e4..67736d6 100755 --- a/ssg5 +++ b/ssg5 @@ -201,9 +201,7 @@ render_md_files_lowdown() { echo "
" > $in || \ echo "
" > $in - # Filter out frontmatter - tail -n +$(($(sed -n '/---/,/---/p' $1/$f | wc -l)+1)) $1/$f | \ - lowdown --html-no-skiphtml --html-no-escapehtml >> $in && \ + lowdown-f "$1/$f" >> $in && \ echo "
" >> $in cat "$in" | diff --git a/tools/rssg b/tools/rssg deleted file mode 100755 index 52031e7..0000000 --- a/tools/rssg +++ /dev/null @@ -1,189 +0,0 @@ -#!/bin/sh -# -# https://www.romanzolotarev.com/bin/rssg -# Copyright 2018 Roman Zolotarev -# -# Permission to use, copy, modify, and/or distribute this software for any -# purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# -set -e - - -main () { - test -n "$1" || usage - test -n "$2" || usage - test -f "$1" || no_file "$1" - - - index_file=$(readlink -f "$1") - test -z "${index_file##*html}" && html=$(cat "$index_file") - test -z "${index_file##*md}" && html=$(md_to_html "$index_file") - test -n "$html" || usage - - base="${index_file%/*}" - base_url="$(echo "$html" | get_url | sed 's#\(.*\)/[^/]*#\1#')" - - url=$( echo "$html" | get_url) - - title="$2" - - description=$( echo "$html" | get_description | - remove_tags | - remove_nbsp ) - - items=$( echo "$html" | get_items) - - rss=$( echo "$items" | - render_items "$base" "$base_url" | - render_feed "$url" "$title" "$description") - - >&2 echo "[rssg] ${index_file##$(pwd)/} $(echo "$rss" | grep -c '') items" - echo "$rss" -} - - -usage() { - echo "usage: ${0##*/} index.{html,md} title > rss.xml" >&2 - exit 1 -} - - -no_file() { - echo "${0##*/}: $1: No such file" >&2 - exit 2 -} - - -md_to_html() { - test -x "$(which lowdown)" || exit 3 - lowdown \ - -D html-skiphtml \ - -D smarty \ - -d metadata \ - -d autolink "$1" -} - - -get_title() { - awk 'tolower($0)~/^

]*>/,"",$0);print;exit}' -} - - -get_url() { - grep -i '\(.*\).*#\1 \2 \3#' -} - - -get_description() { - start='sub("^.*<"s"*"t"("s"[^>]*)?>","")' - stop='sub(".*","")&&x=1' - awk -v 's=[[:space:]]' -v 't=[Pp]' "$start,$stop;x{exit}" -} - -remove_tags() { - sed 's#<[^>]*>##g;s#]*>##g' -} - - -remove_nbsp() { - sed 's#\ # #g' -} - - -rel_to_abs_urls() { - site_url="$1" - base_url="$2" - - abs='s#(src|href)="/([^"]*)"#\1="'"$site_url"/'\2"#g' - rel='s#(src|href)="([^:/"]*)"#\1="'"$base_url"/'\2"#g' - sed -E "$abs;$rel" -} - - -date_rfc_822() { - date -j '+%a, %d %b %Y %H:%M:%S %z' \ - "$(echo "$1"| tr -cd '[:digit:]')0000" -} - - -render_items() { - while read -r i - do render_item "$1" "$2" "$i" - done -} - - -render_item() { - base="$1" - base_url="$2" - item="$3" - - site_url="$(echo "$base_url"| sed 's#\(.*//.*\)/.*#\1#')" - - date=$(echo "$item"|awk '{print$2}') - url=$(echo "$item"|awk '{print$1}') - - f="$base/$url" - test -f "$f" && html=$(cat "$f") - test -f "${f%\.html}.md" && html=$(md_to_html "${f%\.html}.md") - - description=$( - echo "$html" | - rel_to_abs_urls "$site_url" "$base_url" | - remove_nbsp - ) - title=$(echo "$description" | get_title) - guid="$base_url/$(echo "$url" | sed 's#^/##')" - - echo ' - -'"$guid"' -'"$guid"' -'"$(date_rfc_822 "$date")"' -'"$title"' - -' -} - - -render_feed() { - url="$1" - title=$(echo "$2" | remove_nbsp) - description="$3" - - base_url="$(echo "$url" | cut -d '/' -f1-3)" - - echo ' - - - -'"$title"' -'"$description"' -'"$base_url"'/ -'"$(date_rfc_822 date)"' -'"$(cat)"' -' -} - - -main "$@" -- cgit 1.4.1