Adding 1st TiddlyWiki HOMEPAGE/CHANNEL/index.html

This commit is contained in:
fred 2022-04-20 17:09:58 +02:00
parent 1b665b1243
commit 082ff952af
3 changed files with 97 additions and 33 deletions

View File

@ -17,6 +17,7 @@ countMErunning=$(ps auxf --sort=+utime | grep -w "$ME" | grep -v -E 'color=auto|
[[ $countMErunning -gt 2 ]] && echo "$ME already running. EXIT." && exit 0
TS=$(date -u +%s%N | cut -b1-13)
MOATS=(date -u +"%Y%m%d%H%M%S%4N")
[[ ! $(which ipfs) ]] && echo "EXIT. Vous devez avoir installé ipfs CLI sur votre ordinateur" && echo "RDV sur https://dist.ipfs.io/#go-ipfs" && exit 1
@ -31,7 +32,8 @@ IPFSNGW="http://127.0.0.1:8080"
echo "IPFS GATEWAY $IPFSNGW"
###########################################################################
## History Rotation
## Global parsing History Rotation ~/.zen/tmp/calendar.json (used with pagination.js)
###########################################################################
hier=$(date --date="yesterday" +"%Y-%m-%d")
# New day! 00:00 is passed...
if [[ ! -f ~/.zen/bunkerbox/history_${hier}.json && -f ~/.zen/bunkerbox/homepage/chain ]]; then
@ -54,25 +56,26 @@ if [[ ! -f ~/.zen/bunkerbox/history_${hier}.json && -f ~/.zen/bunkerbox/homepage
fi
###########################################################################
## GET LATEST VIDEOS
## SCRAP LATEST CROWDBUNKER VIDEOS
VWALLURL="https://api.crowdbunker.com/post/all"
curl -s $VWALLURL -H "Accept: application/json" > ~/.zen/bunkerbox/crowd.json
[[ ! -f ~/.zen/bunkerbox/crowd.json ]] && echo "ERROR GET VIDEO SOURCE LIST FROM $VWALLURL" && exit 1
## LOOP THROUGH (REVERSE LIST)
## LOOP THROUGH VIDEO ID ($VUID) (REVERSE LIST)
cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id' > /tmp/vuid.list
# Reverse list to start with older videos
# loop starts with older videos (tac is reversing cat)
for VUID in $(tac /tmp/vuid.list); do
[[ "$VUID" == "null" ]] && echo "MESSAGE... Bypassing..." && echo && continue
echo "====================================================="
echo "Bunker BOX : Adding $VUID"
mkdir -p ~/.zen/bunkerbox/cache/$VUID/media
## GET VIDEO DETAIL JSON
URL="https://api.crowdbunker.com/post/$VUID/details"
# echo "WISHING TO EXPLORE $URL ?"; read TEST; [[ "$TEST" != "" ]] && echo && continue
curl -s $URL -H "Accept: application/json" -o ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json
# STREAMING LIVE ?
# FILTERING STREAMING LIVE
echo ">>> Extracting video caracteristics from ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json"
ISLIVE=$(cat ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json | jq -r .video.isLiveType)&& [[ "$ISLIVE" == "true" ]] && echo "LIVE... "
LIVE=$(cat ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json | jq -r .video.isLiveActive) && [[ "$LIVE" == "true" ]] && echo "STREAMING... Bypassing..." && echo && continue
@ -81,14 +84,15 @@ for VUID in $(tac /tmp/vuid.list); do
CHANNEL=$(cat ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json | jq -r .channel.organization.uid)
## GET MORE DATA FROM JSON, or get it from web page loading $VUID.json
## EXTRACT HLS LINK and MEDIA SOURCE
HLS=$(cat ~/.zen/bunkerbox/cache/$VUID/media/$VUID.json | jq -r .video.hlsManifest.url)
MEDIASOURCE=$(echo $HLS | rev | cut -d '/' -f 2- | rev)
echo "$TITLE ($DURATION s)"
echo "$HLS"
echo "===> $TITLE ($DURATION s)"
## NO choice made, so ask to continue each loop
## VERIFIY choice made, empty means debug mode
[[ ! $(cat ~/.zen/bunkerbox/choice 2>/dev/null) ]] && echo "READY TO PROCESS ? ENTER. Any character sent means next." && read TEST && [[ "$TEST" != "" ]] && echo && continue ## NO CHOICE MADE
echo "$HLS"
## Download HLS source m3u8 (contains video & audio)
curl -s $HLS -o ~/.zen/bunkerbox/cache/$VUID/$VUID.m3u8
[[ ! $(cat ~/.zen/bunkerbox/choice 2>/dev/null) ]] && cat ~/.zen/bunkerbox/cache/$VUID/$VUID.m3u8 # DEBUG
@ -136,6 +140,7 @@ $VIDEOSRC.m3u8
# ls ~/.zen/bunkerbox/cache/$VUID/media/ # SHOW ALL COLLECTED MEDIA
##########################################################################
## ADD YOUR HTML TEMPLATING WITH MEDIA
##########################################################################
start=`date +%s`
echo "##########################################################################"
@ -149,11 +154,12 @@ echo "##########################################################################
## NO OR EMPTY HISTORY? COPY from TEMPLATE (PROGRAM START)
[[ ! -f ~/.zen/bunkerbox/history.json || $(cat ~/.zen/bunkerbox/history.json 2>/dev/null) == "" ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history.json
# qo-op get latest history.json
# get latest history.json publishes with (shared?) 'qo-op' IPNS key
if [[ "$(cat ~/.zen/bunkerbox/choice 2>/dev/null)" == "qo-op" ]]; then
[[ $(cat ~/.zen/bunkerbox/history_qo-op.json | jq .Videos[].link | grep $VUID) ]] && echo "VIDEO DEJA LOCALE... CONTINUE" && continue
[[ $(cat ~/.zen/bunkerbox/history_qo-op.json | jq .Videos[].link | grep $VUID) ]] && echo "VIDEO DEJA DANS LE CACHE... CONTINUE" && continue
IPNSL="/ipns/$(ipfs key list -l | grep 'qo-op' | cut -f 1 -d ' ')"
ipfs get -o ~/.zen/bunkerbox/history_qo-op.json $IPNSL/history.json # Get actual IPNS qo-op history.json
# Missing file... reseting
[[ ! -f ~/.zen/bunkerbox/history_qo-op.json || $(cat ~/.zen/bunkerbox/history_qo-op.json 2>/dev/null) == "" ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history_qo-op.json
[[ $(cat ~/.zen/bunkerbox/history_qo-op.json | jq .Videos[].link | grep $VUID) ]] && echo "VIDEO DEJA DANS LE RESEAU... CONTINUE" && echo && cp ~/.zen/bunkerbox/history_qo-op.json ~/.zen/bunkerbox/history.json && continue
# JSON FUSION
@ -166,12 +172,10 @@ echo "##########################################################################
# Add previous CHANNEL History
[[ -f ~/.zen/bunkerbox/history.${CHANNEL}.json ]] && cp ~/.zen/bunkerbox/history.${CHANNEL}.json ~/.zen/bunkerbox/cache/$VUID/media/
# Add current/latest history to media
echo '{ "Videos":' > ~/.zen/bunkerbox/cache/$VUID/media/history.json
cat ~/.zen/bunkerbox/history.json | jq '.[]' >> ~/.zen/bunkerbox/cache/$VUID/media/history.json
echo '}' >> ~/.zen/bunkerbox/cache/$VUID/media/history.json
# Add latest history.json within media directory
cp ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/cache/$VUID/media/history.json
# COPY videojs.html TEMPLATE & Updating links
# COPY videojs.html TEMPLATE & Updating it
sed "s/_IPFSROOT_/./g" ${MY_PATH}/templates/videojs.html > ~/.zen/bunkerbox/cache/$VUID/media/index.html
sed -i "s/_VUID_/$VUID/g" ~/.zen/bunkerbox/cache/$VUID/media/index.html
# sed -i s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g ~/.zen/bunkerbox/cache/$VUID/media/index.html # !! Different Copy Makes Different Chains !
@ -179,33 +183,86 @@ echo "##########################################################################
sed -i "s~_CHANNEL_~$CHANNEL~g" ~/.zen/bunkerbox/cache/$VUID/media/index.html
sed -i "s~_IPNSL_~$IPNSL~g" ~/.zen/bunkerbox/cache/$VUID/media/index.html #MAJ IPNS link
echo ">>>>> ADDING MEDIA TO IPFS : ipfs add -rwH ~/.zen/bunkerbox/cache/$VUID/media/* "
echo ">>>>> NOW ADDING MEDIA TO IPFS : ipfs add -rwH ~/.zen/bunkerbox/cache/$VUID/media/* "
echo
#################################################################
################################################################# #########
# IPFS WRITING. All that is prepared above in ~/.zen/bunkerbox/cache/$VUID/media/ will become permanent !
#################################################################
################################################################# #########
IPFSROOT=$(ipfs add -rwHq ~/.zen/bunkerbox/cache/$VUID/media/* | tail -n 1)
INDEX="/ipfs/$IPFSROOT"
#################################################################
# IPFS WRITING DONE. Doing after is to UPDATE local history(s).json in ~/.zen/bunkerbox/
# Then publishing on IPNS 'qo-op' all dynamic data needed by above 'index.html'
# $INDEX/$VUID.m3u8 is ready + videojs.html + json's
# Publishing on IPNS 'qo-op' all dynamic data needed by above 'index.html' (homepage)
#################################################################
#################
# Take care about CHANNEL history
echo "++ MANAGE $CHANNEL HISTORY"
[[ ! -f ~/.zen/bunkerbox/history.${CHANNEL}.json || $(cat ~/.zen/bunkerbox/history.${CHANNEL}.json 2>/dev/null) == "" ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history.${CHANNEL}.json
if [[ ! $(cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq .Videos[].link | grep $VUID) ]]; then
if [[ ! $(cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq .Videos[].link | grep $VUID) ]]; then ## This is a new video !!!
echo "ADD ~/.zen/bunkerbox/history.${CHANNEL}.json"
# Bad characters breaks this command !! # cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq --arg INDEX "$INDEX" --arg TITLE "$TITLE" --arg VUID "$VUID" --arg TSVUID "TSVUID" '.Videos += [{"link": "<a id='''$TSVUID''' href='''$INDEX'''><img src='''$INDEX/$VUID.jpg''' height=80 ></a><br>'''$TITLE''' "}]' > ~/.zen/tmp/history.${CHANNEL}.json
# cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq --arg INDEX "$INDEX" --arg TITLE "$TITLE" --arg VUID "$VUID" --arg TSVUID "TSVUID" '.Videos += [{"link": "<a id="'"$TSVUID"'" href="'"$INDEX"'"><img src="'"$INDEX/$VUID.jpg"'" height=80 ></a><br>"'"$TITLE"'" "}]' > ~/.zen/tmp/history.${CHANNEL}.json
cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq '.Videos += [{"link": "<a id='"'_TS_'"' href='"'_INDEX_'"'><img src='"'_INDEX_/_VUID_.jpg'"' height=80 ></a><br>'"'_TITLE_'"'"}]' > ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json
sed -i "s~_INDEX_~$INDEX~g" ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json
sed -i "s~_VUID_~$VUID~g" ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json
sed -i "s~_TITLE_~$TITLE~g" ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json
# SECURE
[[ "$(cat ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json)" == "" ]] && echo "NO history.${CHANNEL}.json FATAL ERROR" && exit 1
# REFRESH ${CHANNEL}'s HISTORY ~/.zen/bunkerbox/
cp ~/.zen/bunkerbox/cache/$VUID/media/history.${CHANNEL}.json ~/.zen/bunkerbox/history.${CHANNEL}.json
######################### ######################### #########################
## Add to Video caroussel json
echo STOP; read
[[ ! -f ~/.zen/bunkerbox/caroussel.${CHANNEL}.json ]] && CARSRC="${MY_PATH}/templates/data/videowallcaroussel.json" || CARSRC="~/.zen/bunkerbox/caroussel.${CHANNEL}.json "
SOURCE="$INDEX/$VUID.m3u8"
POSTER="$INDEX/$VUID.jpg"
cat $CARSRC | jq --arg SOURCE "$SOURCE" --arg POSTER "$POSTER" --arg TITLE "$TITLE" '.videos[.videos| length]
|= . +
{
"src": "'"$SOURCE"'",
"poster": "'"$POSTER"'",
"mime": "application/x-mpegURL",
"title": "'"$TITLE"'"
}' > ~/.zen/bunkerbox/cache/$VUID/media/caroussel.json
# SECURE
[[ "$(cat ~/.zen/bunkerbox/cache/$VUID/media/caroussel.json)" == "" ]] && echo "NO caroussel.${CHANNEL}.json FATAL ERROR" && exit 1
## MAJ Racine.
cp ~/.zen/bunkerbox/cache/$VUID/media/caroussel.json ~/.zen/bunkerbox/caroussel.${CHANNEL}.json
echo STOP; read
######################### ######################### ######################### TO FINISH
## CONSTRUCT 'MOA' CHANNEL PUBLICATION ZONE.
if [[ ! -f ~/.zen/bunkerbox/channels/${CHANNEL}/qo-op_${CHANNEL}.key ]]; then
mkdir -p ~/.zen/bunkerbox/homepage/${CHANNEL}/
mkdir -p ~/.zen/bunkerbox/channels/${CHANNEL}/
# New tiddlywiki with moa key
if [[ ! $(ipfs key list | grep qo-op_${CHANNEL}) ]]; then
channelfilename=$(${MY_PATH}/tools/give_me_keystore_filename.py qo-op_${CHANNEL})
# Creating IPNS Key for channel
channelkey=$(ipfs key gen qo-op_${CHANNEL})
# Create first tiddlywiki and inject some values
sed "s~_BIRTHDATE_~${MOATS}~g" ${MY_PATH}/templates/ipfstiddlywiki.html > ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~_PSEUDO_~${CHANNEL}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~_MOAID_~${channelkey}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~_QOOP_~${IPNSL}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~_MOAKEY_~qo-op_${CHANNEL}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~k2k4r8opmmyeuee0xufn6txkxlf3qva4le2jlbw6da7zynhw46egxwp2~${channelkey}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/bunkerbox/homepage/${CHANNEL}/index.html
## BACKUP IPNS KEY qo-op_${CHANNEL}.key
cp ~/.ipfs/keystore/${channelfilename} ~/.zen/bunkerbox/channels/${CHANNEL}/qo-op_${CHANNEL}.key
echo $channelkey > ~/.zen/bunkerbox/channels/${CHANNEL}/channelkey
else
echo "$CHANNEL IS UP. KEY IS CREATED. WAITING FOR SYNCING. PRINTING KNOWN MOA KEY."
ipfs key list -l | grep "qo-op_${CHANNEL}"
fi
fi
######################### ######################### #########################
fi
#################
@ -245,6 +302,7 @@ echo "##########################################################################
echo "HISTORY : $IPFSNGW/ipfs/$IPFSROOT/history.json"
################# ################# #################
## GESTION CHOICE
PS3="Comment voulez-vous publier votre collecte ? "
choices=("debug" "local" "qo-op" "astrXbian")
fav=$(cat ~/.zen/bunkerbox/choice 2>/dev/null)
@ -315,7 +373,7 @@ echo "##########################################################################
## This is the welcome page of your qo-op channel.
# Could be redirect, or ... Your homepage is introduced there !!
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > ~/.zen/bunkerbox/homepage/index.html
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > ~/.zen/bunkerbox/homepage/index.html
## Preparing homepage
cp -R ${MY_PATH}/templates/styles ~/.zen/bunkerbox/homepage/
cp -R ${MY_PATH}/templates/js ~/.zen/bunkerbox/homepage/
cp ${MY_PATH}/templates/homepage.html ~/.zen/bunkerbox/homepage/index.html
@ -332,7 +390,7 @@ echo "##########################################################################
## ACTIVATE CONTROL (UNCOMMENT THIS CODE AND protect history_qo-op.json corruption the way you want to (*white or black listing)
mkdir -p ~/.zen/bunkerbox/homepage/time/
echo "$TS" > ~/.zen/bunkerbox/homepage/ts # TimeStamping
echo "$IPFSNODEID" > ~/.zen/bunkerbox/homepage/time/$TS # Put my Station ID into time/$TS for control #astrXbian (whitelist swarm control) or blacklisting extension here)
echo "$IPFSNODEID" > ~/.zen/bunkerbox/homepage/time/$TS # (could be signed) Put my Station ID into time/$TS for control #astrXbian (whitelist swarm control) or blacklisting extension here)
#
# BALISE=$(echo $TS | ipfs add -q)
# ipfs name publish $BALISE ##### $IPFSNODEID IS now confirming it recognizes this TS as last publishing !!

File diff suppressed because one or more lines are too long

View File

@ -18,7 +18,7 @@
<body>
<header>
<h6>
<a href="_IPNSL_"> "<span>BunkerBOX@_CHANNEL_</span>"</a> /ipfs/
<a href="_IPNSL_/_CHANNEL_" target="_CHANNEL_"> "<span>BunkerBOX@_CHANNEL_</span>"</a> /<a href="_IPNSL_">qo-op</a>/
</h6>
</header>