forked from qo-op/bunkerbox
Adding 1st TiddlyWiki HOMEPAGE/CHANNEL/index.html
This commit is contained in:
parent
1b665b1243
commit
082ff952af
108
crowdbunker.sh
108
crowdbunker.sh
|
@ -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
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in New Issue