diff options
author | Patryk Niedźwiedziński <pniedzwiedzinski19@gmail.com> | 2021-05-27 09:55:56 +0200 |
---|---|---|
committer | Patryk Niedźwiedziński <pniedzwiedzinski19@gmail.com> | 2021-05-27 10:04:45 +0200 |
commit | b0653a2ec8e4eaa78814144ccb4f77a30bda0ec3 (patch) | |
tree | 08339d4f41a488807b02c0bae9a79c6f76594767 | |
download | wpgem-b0653a2ec8e4eaa78814144ccb4f77a30bda0ec3.tar.gz wpgem-b0653a2ec8e4eaa78814144ccb4f77a30bda0ec3.zip |
Init
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README.md | 3 | ||||
-rwxr-xr-x | wpgem | 56 |
3 files changed, 60 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fcb152 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +out diff --git a/README.md b/README.md new file mode 100644 index 0000000..2ef8a25 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# wpgem + +Mirror any wordpress site with the gemini protocol. This script generates static version of wordpress site, as it is intended to be used on lower spec hardware. diff --git a/wpgem b/wpgem new file mode 100755 index 0000000..b215f66 --- /dev/null +++ b/wpgem @@ -0,0 +1,56 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i sh -p curl jq busybox nur.repos.pn.html2gmi +##!/bin/sh +## Usage: +## $ wpgem https://wordpress-site.org + +VERSION="0.1" + +usage() { + echo "wpgem v$VERSION" + echo "Usage:" + echo "\twpgem URL [OUTPUT_DIR]" + echo "Default OUTPUT_DIR=out" +} + +URL=$1 +[ -z $URL ] && usage && exit 2 + +OUT=$2 +[ -z $OUT ] && OUT=out + +[ -d $OUT ] && echo "Directory $OUT exists" +mkdir -p $OUT/.cache $OUT/data +rm $OUT/.cache/cur_index + +B=0 +page=1 +while [ "$B" != "1" ]; do + curl "$URL/wp-json/wp/v2/posts?per_page=25&page=$page" > $OUT/.cache/$page + [ `tail -n1 $OUT/.cache/$page | cut -c 1` != "[" ] && break + + for post_id in `cat $OUT/.cache/$page | jq '.[].id'`; do + [ -f $OUT/data/$post_id ] && B=1 && break + cat $OUT/.cache/$page | jq -r ".[] | select(.id==$post_id) | { slug: .slug, link: .link, content: .content, title: .title }" > $OUT/data/$post_id + + link=`cat $OUT/data/$post_id | jq -r '.link'` + title=`cat $OUT/data/$post_id | jq -r '.title.rendered'` + rel=/`echo $link | cut -d'/' -f 4- | rev | cut -c 2- | rev` + + echo "=> .$rel.gmi $title" >> $OUT/.cache/cur_index + + mkdir -p $OUT/site/$(dirname $rel) + echo "# $title" > $OUT/site/$rel.gmi + cat $OUT/data/$post_id | jq -r '.content | .rendered' | html2gmi >> $OUT/site/$rel.gmi + printf "\n------\nArtykuł pochodzi z portalu $URL\n" >> $OUT/site/$rel.gmi + echo "=> $link Oryginalny artykuł" >> $OUT/site/$rel.gmi + done + page=$(($page+1)) +done + +cat $OUT/.cache/cur_index > $OUT/.cache/new_index +cat $OUT/data/index.idx >> $OUT/.cache/new_index +cp $OUT/.cache/new_index $OUT/data/index.idx + +printf "# $URL\n\n" > $OUT/site/index.gmi +cat $OUT/data/index.idx >> $OUT/site/index.gmi |