2020-06-15 10:54:35 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
DIRECTORY="pages/blog"
|
|
|
|
|
2020-09-02 10:53:49 +03:00
|
|
|
FILES=`ls $DIRECTORY/*.md -1 | sort`
|
2020-08-24 09:42:43 +03:00
|
|
|
|
2021-01-06 17:04:05 +03:00
|
|
|
RETURNDATE=""
|
|
|
|
|
2021-04-06 17:07:17 +03:00
|
|
|
function printcut {
|
|
|
|
# argument 1: filename
|
|
|
|
|
|
|
|
CUT=`grep -m 1 -n '<!--[[:space:]]*cut[[:space:]]*-->[[:space:]]*' $1`
|
|
|
|
if [ -n "$CUT" ]; then
|
|
|
|
CUTLINE=`echo "$CUT" | cut -d ':' -f 1`
|
|
|
|
head -n $(($CUTLINE - 1)) $1 | grep -v '^%'
|
|
|
|
else
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-01-06 17:04:05 +03:00
|
|
|
# date is read from the 3rd %ed line of the document or from the git commit date
|
|
|
|
function getdate {
|
|
|
|
|
|
|
|
FILEDATE=`grep "^%" $1 | sed '3q;d' | cut -d ' ' -f 2-`
|
|
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
FTIME=`date -u --date="$FILEDATE" "+%s"`
|
|
|
|
else
|
|
|
|
RETURNDATE=0
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
RETURNDATE=$FTIME
|
|
|
|
return 0
|
|
|
|
else
|
|
|
|
RETURNDATE=0
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2020-08-24 09:42:43 +03:00
|
|
|
echo -n > blogdates.txt
|
|
|
|
for f in $FILES; do
|
2021-01-06 17:04:05 +03:00
|
|
|
getdate $f
|
|
|
|
printf "%d\t%s\n" $RETURNDATE $f >> blogdates.txt
|
2020-08-24 09:42:43 +03:00
|
|
|
done
|
|
|
|
|
2021-01-25 20:47:19 +03:00
|
|
|
# resort by resulting times
|
2020-08-24 09:42:43 +03:00
|
|
|
FILES=`cat blogdates.txt | sort -nr | cut -f 2-`
|
2020-06-15 10:54:35 +03:00
|
|
|
|
|
|
|
cat << RSSHEADER
|
2021-04-06 17:17:37 +03:00
|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
2020-06-15 10:54:35 +03:00
|
|
|
<rss version="2.0">
|
|
|
|
<channel>
|
|
|
|
<title>rnd's blog</title>
|
|
|
|
<link>https://rnd.neocities.org/blog</link>
|
|
|
|
<description>The RSS feed of articles published on the blog thingy</description>
|
|
|
|
RSSHEADER
|
|
|
|
|
|
|
|
for f in $FILES; do
|
2021-01-06 17:04:05 +03:00
|
|
|
|
|
|
|
getdate $f
|
|
|
|
MTIME=$RETURNDATE
|
2020-06-15 10:54:35 +03:00
|
|
|
|
|
|
|
TITLE=`head -n 1 $f`
|
|
|
|
TITLE=${TITLE#"% "}
|
|
|
|
|
|
|
|
OUTPAGE=${f%.md}.html
|
2021-01-25 20:47:19 +03:00
|
|
|
OUTPAGE=${OUTPAGE#pages/blog/}
|
2020-08-21 11:12:52 +03:00
|
|
|
|
|
|
|
echo "<item>"
|
|
|
|
echo "<title>$TITLE</title>"
|
2021-04-06 17:17:37 +03:00
|
|
|
echo "<link>https://rnd.neocities.org/blog/$OUTPAGE</link>"
|
2021-02-08 22:31:51 +03:00
|
|
|
|
2021-01-06 17:04:05 +03:00
|
|
|
if [ $MTIME -gt 0 ]; then
|
2021-02-08 22:31:51 +03:00
|
|
|
RDATE=`date -R -u -d @$MTIME`
|
|
|
|
if [[ "$RDATE" == *UTC ]]; then
|
|
|
|
RDATE="${RDATE%UTC}+0000"
|
|
|
|
fi
|
|
|
|
echo "<pubdate>$RDATE</pubdate>"
|
2020-08-21 11:12:52 +03:00
|
|
|
fi
|
2021-04-06 17:07:17 +03:00
|
|
|
DESCRIPTION="`printcut $f`"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
DESC_HTML=`echo "$DESCRIPTION" | markdown`
|
|
|
|
echo "<description>$DESC_HTML</description>"
|
|
|
|
fi
|
2021-04-06 17:17:37 +03:00
|
|
|
echo "</item>"
|
2021-04-06 17:07:17 +03:00
|
|
|
|
2020-06-15 10:54:35 +03:00
|
|
|
done
|
|
|
|
|
|
|
|
cat << RSSFOOTER
|
|
|
|
</channel>
|
2021-04-06 17:17:37 +03:00
|
|
|
</rss>
|
2020-06-15 10:54:35 +03:00
|
|
|
RSSFOOTER
|