From e21c6e4e59ebece99a81996a01e1db45f4883e26 Mon Sep 17 00:00:00 2001 From: fred Date: Wed, 18 Oct 2023 01:06:29 +0200 Subject: [PATCH] Collect Sector TWs RSS json Tiddlers into UPlanet SECTOR TW --- ASTROBOT/G1PalPay.sh | 11 ++-- tools/RSS2UPlanetTW.sh | 124 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 5 deletions(-) create mode 100755 tools/RSS2UPlanetTW.sh diff --git a/ASTROBOT/G1PalPay.sh b/ASTROBOT/G1PalPay.sh index 61775ee9..e9f3e265 100755 --- a/ASTROBOT/G1PalPay.sh +++ b/ASTROBOT/G1PalPay.sh @@ -147,8 +147,8 @@ while read LINE; do [[ ! ${ASTROG1} ]] \ && echo "SORRY ${EMAIL} MISSING ASTROG1" \ - && echo " $PLAYER VEUX VOUS OFFRIR ${SHARE} G1 \n Joignez-vous au Collectif https://www.copylaradio.com/" > ~/.zen/tmp/palpay.bro \ - && ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" "BRO. " ~/.zen/tmp/palpay.bro \ + && echo " BRO. $PLAYER VEUX VOUS OFFRIR ${SHARE} G1 \n Joignez-vous à UPlanet https://www.qo-op.com/" > ~/.zen/tmp/palpay.bro \ + && ${MY_PATH}/../tools/mailjet.sh "${EMAIL}" ~/.zen/tmp/palpay.bro \ && continue @@ -236,15 +236,16 @@ while read LINE; do ## SEND nb JUNE TO ALL ## MAKE ONE EACH AFTER ALL EMAIL CONSUMED ## ~/.zen/Astroport.ONE/tools/timeout.sh -t 12 \ ${MY_PATH}/../tools/jaklis/jaklis.py -k ~/.zen/game/players/${PLAYER}/secret.dunikey pay -a $nb -p ${ASTROG1} -c "${emails[@]} $TTITLE" -m > /dev/null 2>&1 ## PalPay $nb G1 - ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "OK PalPay : $MSG" + echo "OK PalPay : $MSG" > ~/.zen/tmp/${MOATS}/g1message + ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message echo "PAYMENT SENT --- PINNING $TOPIN" ## PINNING IPFS MEDIA - PROOF OF COPY SYSTEM - ipfs pin add $TOPIN else - - ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" "ERREUR PalPay : ${TTITLE} : IMPOSSIBLE DE TROUVER ${emails[@]}" + echo "ERREUR PalPay : ${TTITLE} : IMPOSSIBLE DE TROUVER ${emails[@]}" > ~/.zen/tmp/${MOATS}/g1message + ${MY_PATH}/../tools/mailjet.sh "${PLAYER}" ~/.zen/tmp/${MOATS}/g1message echo "NO ACCOUNT FOUND" fi diff --git a/tools/RSS2UPlanetTW.sh b/tools/RSS2UPlanetTW.sh new file mode 100755 index 00000000..616dccd3 --- /dev/null +++ b/tools/RSS2UPlanetTW.sh @@ -0,0 +1,124 @@ +#!/bin/bash +######################################################################## +# Version: 0.1 +# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/) +######################################################################## +# INSERT NEW TIDDLERS FROM RSS JSON INTO UPLANET TW +# DETECTING CONFLICT WITH ON SAME TITLE +# ASKING TO EXISTING SIGNATURES TO UPDATE THEIR TW OR FORK TITLE +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" + +RSS=$1 +SECTOR=$2 +MOATS=$3 + +[[ ! -s ${RSS} ]] && echo "BAD RSS INPUT" && exit 1 +[[ ! -s ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html ]] && echo "BAD UPLANET CONTEXT" && exit 1 + +echo ${RSS} +titles=$(cat "${RSS}" | jq -r '.[] | .title') + +for title in $titles; do + + ## CHECK FOR TIDDLER WITH SAME TITTLE IN SECTOR TW + rm -f ~/.zen/tmp/${MOATS}/TMP.json + tiddlywiki --load ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html --output ~/.zen/tmp/${MOATS} --render '.' 'TMP.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "${title}" + ISHERE=$(cat ~/.zen/tmp/${MOATS}/TMP.json | jq -r ".[].title") + + if [[ ${ISHERE} != ${title} ]]; then + + ## NEW TIDDLER + echo "Importing Title: $title" + cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json + + tiddlywiki --load ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html \ + --import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \ + --output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "${SECTOR}.html" "text/plain" + + [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.html ]] \ + && rm ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html \ + && mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html + + else + + ## SAME TIDDLER + echo "TIDDLER WITH TITLE $title ALREADY EXISTS..." + # IS IT FROM SAME PLAYER + + cat ~/.zen/tmp/${MOATS}/TMP.json | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/INSIDE.json + cat "${RSS}" | jq -rc ".[] | select(.title == \"$title\")" > ~/.zen/tmp/${MOATS}/NEW.json + + [[ ! $(diff ~/.zen/tmp/${MOATS}/NEW.json ~/.zen/tmp/${MOATS}/INSIDE.json) ]] && echo "... Tiddlers are similar ..." && continue + + ## CHECK FOR EMAIL SIGNATURES + NTAGS=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .tags) + NEMAILS=($(echo "$NTAGS" | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) + N=${#NEMAILS[@]} + + ITAGS=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .tags) + IEMAILS=($(echo "$ITAGS" | grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b")) + I=${#IEMAILS[@]} + + if [ ${N} -gt ${I} ]; then + + ## DIFFERENCE IN EMAIL SIGNATURES + COMMON=() + NUNIQUE=() + IUNIQUE=() + + # Detect common and unique elements + for email in "${NEMAILS[@]}"; do + if [[ " ${IEMAILS[*]} " == *" $email "* ]]; then + COMMON+=("$email") + else + NUNIQUE+=("$email") + fi + done + + for email in "${IEMAILS[@]}"; do + if [[ " ${NEMAILS[*]} " != *" $email "* ]]; then + IUNIQUE+=("$email") + fi + done + + # Print the results + echo "Common email addresses: ${COMMON[*]}" + echo "Email addresses unique to NEMAILS: ${NUNIQUE[*]}" + echo "Email addresses unique to IEMAILS: ${IUNIQUE[*]}" + + for email in "${COMMON[@]}"; do + + echo "Hello ${COMMON[*]}\n\nA copy of your Tiddler has been made by ${NUNIQUE[*]} ${IUNIQUE[*]}\n\nPlease merge it\n or fork your title : $title" > ~/.zen/tmp/${MOATS}/g1message + ${MY_PATH}/mailjet.sh "$email" ~/.zen/tmp/${MOATS}/g1message + + done + + ## WAIT FOR FORK TO BE SOLVED + continue + + fi + + ## DIFFERENT + NCREATED=$(cat ~/.zen/tmp/${MOATS}/NEW.json | jq -r .created) + ICREATED=$(cat ~/.zen/tmp/${MOATS}/INSIDE.json | jq -r .created) + + if [ ${NCREATED} -gt ${ICREATED} ]; then + + echo "Newer Tiddler version... Updating TW" + + tiddlywiki --load ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html \ + --import ~/.zen/tmp/${MOATS}/NEW.json "application/json" \ + --output ~/.zen/tmp/${MOATS} --render "$:/core/save/all" "${SECTOR}.html" "text/plain" + + [[ -s ~/.zen/tmp/${MOATS}/${SECTOR}.html ]] \ + && rm ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html \ + && mv ~/.zen/tmp/${MOATS}/${SECTOR}.html ~/.zen/tmp/${MOATS}/${SECTOR}/TW/index.html + + fi + + fi + +done