2022-04-07 02:14:21 +02:00
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
mkdir -p ~/.zen/bunkerbox # BunkerBOX temp directory
# Fred MadeInZion, [20/03/2022 23:03]
# Script qui capture et transfert dans IPFS le flux des nouvelles vidéos de https://crowdbunker.com/
# le resultat est inscrit dans une chaine video accessible localement ou publiée au travers de qo-op
# ou du TestNET astrXbian, videoclub entre amis d'amis...
MY_PATH = " `dirname \" $0 \"` " # relative
MY_PATH = " `( cd \" $MY_PATH \" && pwd )` " # absolutized and normalized
ME = " ${ 0 ##*/ } "
2022-04-08 23:29:28 +02:00
countMErunning = $( ps auxf --sort= +utime | grep -w " $ME " | grep -v -E 'color=auto|grep' | wc -l)
[ [ $countMErunning -gt 2 ] ] && echo " $ME already running. EXIT. " && exit 0
2022-04-07 02:14:21 +02:00
TS = $( date -u +%s%N | cut -b1-13)
[ [ ! $( which ipfs) ] ] && echo "EXIT. Vous devez avoir installé ipfs CLI sur votre ordinateur" && echo "RDV sur https://dist.ipfs.io/#go-ipfs" && exit 1
YOU = $( ps auxf --sort= +utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) || echo " warning ipfs daemon not running"
isLAN = $( hostname -I | awk '{print $1}' | head -n 1 | cut -f3 -d '/' | grep -E " (^127\.)|(^192\.168\.)|(^fd42\:)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1 $)|(^[fF][cCdD])/ " )
2022-04-13 20:40:34 +02:00
IPFSNODEID = $( cat ~/.ipfs/config | jq -r .Identity.PeerID)
2022-04-07 02:14:21 +02:00
IPFSNGW = "https://tube.copylaradio.com"
IPFSNGW = "http://127.0.0.1:8080"
[ [ ! $isLAN ] ] && IPFSNGW = " https:// $( hostname) "
echo " IPFS GATEWAY $IPFSNGW "
2022-04-13 19:45:50 +02:00
###########################################################################
2022-04-11 00:50:10 +02:00
## History Rotation
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
NUMBER = $( cat ~/.zen/bunkerbox/history.json | jq '.Videos[].link' | wc -l) && echo " .ROTATION. Hier historique de $NUMBER Videos. "
[ [ -f ~/.zen/bunkerbox/history.json ] ] && mv ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/history_${ hier } .json
## CREATE/UPDATE calendar.json
[ [ ! -f ~/.zen/bunkerbox/calendar.json || $( cat ~/.zen/bunkerbox/calendar.json 2>/dev/null) = = "" ] ] && cp ${ MY_PATH } /templates/data/calendar.json ~/.zen/bunkerbox/calendar.json
cat ~/.zen/bunkerbox/calendar.json | jq '.History += [{"link": "<a href=' "'_INDEX_'" '>_HIER_</a>"}]' > ~/.zen/tmp/calendar.json
sed -i " s~_INDEX_~/ipfs/ $( cat ~/.zen/bunkerbox/homepage/chain) ~g " ~/.zen/tmp/calendar.json
sed -i " s~_HIER_~ ${ hier } ( $NUMBER )~g " ~/.zen/tmp/calendar.json
[ [ " $( cat ~/.zen/tmp/calendar.json) " = = "" ] ] && echo "NO calendar.json FATAL ERROR" && exit 1
cp ~/.zen/tmp/calendar.json ~/.zen/bunkerbox/calendar.json
2022-04-11 12:14:31 +02:00
# RESET IPNS HISTORY FILE ( reset history_qo-op.json )
cp ${ MY_PATH } /templates/data/history.json ~/.zen/bunkerbox/homepage/history.json
VROOT = $( ipfs add -rwHq ~/.zen/bunkerbox/homepage/* | tail -n 1)
echo " 'qo-op' update with /ipfs/ $VROOT "
ipfs name publish --key= qo-op /ipfs/$VROOT
2022-04-11 00:50:10 +02:00
fi
2022-04-13 19:45:50 +02:00
###########################################################################
2022-04-11 00:50:10 +02:00
2022-04-07 02:14:21 +02:00
## GET LATEST VIDEOS
VWALLURL = "https://api.crowdbunker.com/post/all"
curl -s $VWALLURL -H "Accept: application/json" > ~/.zen/bunkerbox/crowd.json
2022-04-08 13:41:34 +02:00
[ [ ! -f ~/.zen/bunkerbox/crowd.json ] ] && echo " ERROR GET VIDEO SOURCE LIST FROM $VWALLURL " && exit 1
2022-04-07 02:14:21 +02:00
2022-04-07 16:58:11 +02:00
## LOOP THROUGH (REVERSE LIST)
cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id' > /tmp/vuid.list
2022-04-08 13:41:34 +02:00
# Reverse list to start with older videos
2022-04-07 16:58:11 +02:00
for VUID in $( tac /tmp/vuid.list) ; do
2022-04-07 02:14:21 +02:00
[ [ " $VUID " = = "null" ] ] && echo "MESSAGE... Bypassing..." && echo && continue
2022-04-08 15:25:19 +02:00
echo "====================================================="
2022-04-07 02:14:21 +02:00
echo " Bunker BOX : Adding $VUID "
2022-04-08 18:26:09 +02:00
mkdir -p ~/.zen/bunkerbox/cache/$VUID /media
2022-04-07 02:14:21 +02:00
URL = " https://api.crowdbunker.com/post/ $VUID /details "
# echo "WISHING TO EXPLORE $URL ?"; read TEST; [[ "$TEST" != "" ]] && echo && continue
2022-04-08 18:26:09 +02:00
curl -s $URL -H "Accept: application/json" -o ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json
2022-04-07 02:14:21 +02:00
# STREAMING LIVE ?
2022-04-08 18:26:09 +02:00
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
DURATION = $( cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq -r .video.duration) && [ [ $DURATION = = 0 ] ] && echo "NOT STARTED YET" && echo && continue
2022-04-12 14:02:04 +02:00
TITLE = $( cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq -r .video.title | sed "s/'/ /g" | sed 's/"/ /g' | sed "s/&/ /g" ) # Remove quote
2022-04-08 18:26:09 +02:00
CHANNEL = $( cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq -r .channel.organization.uid)
2022-04-13 19:45:50 +02:00
## GET MORE DATA FROM JSON, or get it from web page loading $VUID.json
2022-04-08 15:25:19 +02:00
2022-04-08 18:26:09 +02:00
HLS = $( cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq -r .video.hlsManifest.url)
2022-04-07 02:14:21 +02:00
MEDIASOURCE = $( echo $HLS | rev | cut -d '/' -f 2- | rev)
echo " $TITLE ( $DURATION s) "
2022-04-07 15:43:42 +02:00
## NO choice made, so ask to continue each loop
[ [ ! $( 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
2022-04-07 02:14:21 +02:00
echo " $HLS "
2022-04-07 15:43:42 +02:00
## Download HLS source m3u8 (contains video & audio)
2022-04-08 18:26:09 +02:00
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
2022-04-07 02:14:21 +02:00
2022-04-13 19:45:50 +02:00
# Choose 360p or 480p or 720p or 240p
echo ">>>>>>>>>>>>>>>> Selecting VIDEO"
VIDEOHEAD = "" ; VIDEOSRC = ""
for VSIZE in 360 480 720 240; do
[ [ " $VIDEOHEAD " = = "" ] ] && VIDEOHEAD = $( cat ~/.zen/bunkerbox/cache/$VUID /$VUID .m3u8 | grep -B1 ${ VSIZE } p | head -n 1)
[ [ " $VIDEOSRC " = = "" ] ] && VIDEOSRC = $( cat ~/.zen/bunkerbox/cache/$VUID /$VUID .m3u8 | grep ${ VSIZE } p | tail -n 1 | cut -f 1 -d '.' )
VTHUMB = " $( cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq -r --arg VSIZE " $VSIZE " '.video.thumbnails[] | select(.height == $VSIZE) | .url' ) "
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$VUID .jpg ] ] && echo " Downloading $VSIZE thumbnail " && curl -s $VTHUMB -o ~/.zen/bunkerbox/cache/$VUID /media/$VUID .jpg
done
## NO VIDEO FOUND ?
[ [ " $VIDEOSRC " = = "" ] ] && echo "NO COMPATIBLE RESOLUTION VIDEO FOUND." && cat ~/.zen/bunkerbox/cache/$VUID /$VUID .m3u8 && continue
2022-04-07 02:14:21 +02:00
echo " VIDEOSRC= $MEDIASOURCE / $VIDEOSRC "
2022-04-13 19:45:50 +02:00
# CORRECT MISSING THUMB
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$VUID .jpg ] ] && cp ${ MY_PATH } /images/astroport.jpg ~/.zen/bunkerbox/cache/$VUID /media/$VUID .jpg
echo ">>>>>>>>>>>>>>>> Downloading VIDEO"
2022-04-07 02:14:21 +02:00
# Downloading Video m3u8 and Video
2022-04-08 18:26:09 +02:00
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$VIDEOSRC .m3u8 ] ] && curl -s $MEDIASOURCE /$VIDEOSRC .m3u8 -o ~/.zen/bunkerbox/cache/$VUID /media/$VIDEOSRC .m3u8
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$VIDEOSRC ] ] && curl $MEDIASOURCE /$VIDEOSRC -o ~/.zen/bunkerbox/cache/$VUID /media/$VIDEOSRC
2022-04-07 02:14:21 +02:00
echo ">>>>>>>>>>>>>>>> Downloading AUDIO"
2022-04-08 18:26:09 +02:00
AUDIOLINE = $( cat ~/.zen/bunkerbox/cache/$VUID /$VUID .m3u8 | grep '=AUDIO' )
2022-04-07 02:14:21 +02:00
AUDIOFILE = $( echo $AUDIOLINE | rev | cut -d '.' -f 2- | cut -d '"' -f 1 | rev)
echo " AUDIO= $MEDIASOURCE / $AUDIOFILE "
# Downloading Audio m3u8 and Audio
2022-04-08 18:26:09 +02:00
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$AUDIOFILE .m3u8 ] ] && curl -s $MEDIASOURCE /$AUDIOFILE .m3u8 -o ~/.zen/bunkerbox/cache/$VUID /media/$AUDIOFILE .m3u8
[ [ ! -f ~/.zen/bunkerbox/cache/$VUID /media/$AUDIOFILE ] ] && curl $MEDIASOURCE /$AUDIOFILE -o ~/.zen/bunkerbox/cache/$VUID /media/$AUDIOFILE
2022-04-07 02:14:21 +02:00
echo " >>>>>>>>>>>>>>>> CREATING $VSIZE M3U8 "
echo " #EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
$AUDIOLINE
$VIDEOHEAD
$VIDEOSRC .m3u8
2022-04-08 18:26:09 +02:00
" > ~/.zen/bunkerbox/cache/ $VUID /media/ $VUID .m3u8
2022-04-07 15:43:42 +02:00
2022-04-11 16:16:53 +02:00
# ls ~/.zen/bunkerbox/cache/$VUID/media/ # SHOW ALL COLLECTED MEDIA
2022-04-07 15:43:42 +02:00
2022-04-07 02:14:21 +02:00
##########################################################################
2022-04-07 15:43:42 +02:00
##########################################################################
2022-04-08 15:25:19 +02:00
start = ` date +%s`
2022-04-07 02:14:21 +02:00
echo "##########################################################################"
echo ">>>>>>>>>>>>>>>> ADDING index.html"
# COPY index, style, js AND data
2022-04-08 18:26:09 +02:00
cp -R ${ MY_PATH } /templates/styles ~/.zen/bunkerbox/cache/$VUID /media/
cp -R ${ MY_PATH } /templates/js ~/.zen/bunkerbox/cache/$VUID /media/
cp ${ MY_PATH } /templates/videojs.html ~/.zen/bunkerbox/cache/$VUID /media/index.html
cp ${ MY_PATH } /images/astroport.jpg ~/.zen/bunkerbox/cache/$VUID /media/
2022-04-07 02:14:21 +02:00
2022-04-08 15:25:19 +02:00
## 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
2022-04-07 11:42:42 +02:00
2022-04-07 15:43:42 +02:00
# qo-op get latest history.json
2022-04-08 15:25:19 +02:00
if [ [ " $( cat ~/.zen/bunkerbox/choice 2>/dev/null) " = = "qo-op" ] ] ; then
2022-04-12 01:57:11 +02:00
[ [ $( cat ~/.zen/bunkerbox/history_qo-op.json | jq .Videos[ ] .link | grep $VUID ) ] ] && echo "VIDEO DEJA LOCALE... CONTINUE" && continue
2022-04-08 19:36:33 +02:00
IPNSL = " /ipns/ $( ipfs key list -l | grep 'qo-op' | cut -f 1 -d ' ' ) "
2022-04-08 19:28:52 +02:00
ipfs get -o ~/.zen/bunkerbox/history_qo-op.json $IPNSL /history.json # Get actual IPNS qo-op history.json
2022-04-08 20:16:39 +02:00
[ [ ! -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
2022-04-12 01:57:11 +02:00
[ [ $( 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
2022-04-08 13:41:34 +02:00
# JSON FUSION
2022-04-08 19:28:52 +02:00
jq -s '.[0] * .[1]' ~/.zen/bunkerbox/history_qo-op.json ~/.zen/bunkerbox/history.json | jq -M '.Videos |= unique_by(.link)' > ~/.zen/bunkerbox/history.fusion.json
2022-04-07 15:43:42 +02:00
mv ~/.zen/bunkerbox/history.fusion.json ~/.zen/bunkerbox/history.json ## REPLACE LOCAL HISTORY CACHE
2022-04-07 02:14:21 +02:00
else
2022-04-07 15:43:42 +02:00
IPNSL = "./"
2022-04-07 02:14:21 +02:00
fi
2022-04-07 15:43:42 +02:00
2022-04-08 18:02:23 +02:00
# Add previous CHANNEL History
2022-04-08 18:26:09 +02:00
[ [ -f ~/.zen/bunkerbox/history.${ CHANNEL } .json ] ] && cp ~/.zen/bunkerbox/history.${ CHANNEL } .json ~/.zen/bunkerbox/cache/$VUID /media/
2022-04-08 18:02:23 +02:00
2022-04-11 18:40:06 +02:00
# Add current/latest history to media
2022-04-08 18:26:09 +02:00
echo '{ "Videos":' > ~/.zen/bunkerbox/cache/$VUID /media/history.json
2022-04-11 18:40:06 +02:00
cat ~/.zen/bunkerbox/history.json | jq '.[]' >> ~/.zen/bunkerbox/cache/$VUID /media/history.json
2022-04-08 18:26:09 +02:00
echo '}' >> ~/.zen/bunkerbox/cache/$VUID /media/history.json
2022-04-07 15:43:42 +02:00
2022-04-08 15:25:19 +02:00
# COPY videojs.html TEMPLATE & Updating links
2022-04-08 18:26:09 +02:00
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 !
sed -i " s~_TITLE_~ $TITLE ~g " ~/.zen/bunkerbox/cache/$VUID /media/index.html
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/* "
2022-04-07 02:14:21 +02:00
echo
2022-04-08 18:02:23 +02:00
#################################################################
2022-04-08 18:26:09 +02:00
# IPFS WRITING. All that is prepared above in ~/.zen/bunkerbox/cache/$VUID/media/ will become permanent !
2022-04-08 18:02:23 +02:00
#################################################################
2022-04-08 18:26:09 +02:00
IPFSROOT = $( ipfs add -rwHq ~/.zen/bunkerbox/cache/$VUID /media/* | tail -n 1)
2022-04-07 02:14:21 +02:00
INDEX = " /ipfs/ $IPFSROOT "
2022-04-08 18:02:23 +02:00
#################################################################
# 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'
#################################################################
2022-04-08 18:06:59 +02:00
#################
2022-04-08 18:02:23 +02:00
# 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
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
2022-04-08 18:26:09 +02:00
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
2022-04-08 18:02:23 +02:00
2022-04-08 18:26:09 +02:00
[ [ " $( cat ~/.zen/bunkerbox/cache/$VUID /media/history.${ CHANNEL } .json) " = = "" ] ] && echo " NO history. ${ CHANNEL } .json FATAL ERROR " && exit 1
2022-04-08 18:02:23 +02:00
2022-04-08 18:26:09 +02:00
cp ~/.zen/bunkerbox/cache/$VUID /media/history.${ CHANNEL } .json ~/.zen/bunkerbox/history.${ CHANNEL } .json
2022-04-08 18:02:23 +02:00
fi
2022-04-08 18:06:59 +02:00
#################
2022-04-07 02:14:21 +02:00
## UPDATE GLOCAL HISTORY ?
IsThere = $( cat ~/.zen/bunkerbox/history.json | jq .Videos[ ] .link | grep $VUID )
if [ [ ! $IsThere ] ] ; then
2022-04-08 18:26:09 +02:00
echo " Add $INDEX to ~/.zen/bunkerbox/cache/ $VUID /media/history.json "
2022-04-08 02:47:03 +02:00
## history.json Videos.link is the HTML code displayed in index.html with pagination.js (related to)
2022-04-08 18:26:09 +02:00
cat ~/.zen/bunkerbox/history.json | jq '.Videos += [{"link": "<a id=' "'_TSVUID_'" ' href=' "'_INDEX_'" '><img src=' "'_INDEX_/_VUID_.jpg'" ' height=80 ></a><br>' "'_TITLE_'" '"}]' > ~/.zen/bunkerbox/cache/$VUID /media/history.json
# sed -i "s~_TSVUID_~$TS$VUID~g" ~/.zen/bunkerbox/cache/$VUID/media/history.json # Makes different chain for each creator !!
sed -i " s~_INDEX_~ $INDEX ~g " ~/.zen/bunkerbox/cache/$VUID /media/history.json
sed -i " s~_VUID_~ $VUID ~g " ~/.zen/bunkerbox/cache/$VUID /media/history.json
sed -i " s~_TITLE_~ $TITLE ~g " ~/.zen/bunkerbox/cache/$VUID /media/history.json
2022-04-08 15:25:19 +02:00
2022-04-07 02:14:21 +02:00
# COULD BE DONE LIKE THAT
2022-04-08 18:26:09 +02:00
# cat ~/.zen/bunkerbox/cache/$VUID/media/history.json | jq --arg INDEX "$INDEX" --arg TITLE "$TITLE" '.Videos += [{"link": "<a href='''$INDEX''' >'''$TITLE'''</a>"}]' > ~/.zen/bunkerbox/history.json
2022-04-08 13:57:36 +02:00
echo "MISE A JOUR ~/.zen/bunkerbox/history.json"
2022-04-08 18:26:09 +02:00
[ [ " $( cat ~/.zen/bunkerbox/cache/$VUID /media/history.json) " = = "" ] ] && echo " NO $VUID /media/history.json FATAL ERROR " && exit 1
2022-04-11 18:40:06 +02:00
# Upgrade local history.json with new one
2022-04-08 18:26:09 +02:00
if [ [ -f ~/.zen/bunkerbox/cache/$VUID /media/history.json ] ] ; then
2022-04-08 15:25:19 +02:00
echo '{ "Videos":' > ~/.zen/bunkerbox/history.json
2022-04-11 14:03:15 +02:00
cat ~/.zen/bunkerbox/cache/$VUID /media/history.json | jq '.[]' >> ~/.zen/bunkerbox/history.json
2022-04-08 13:57:36 +02:00
echo '}' >> ~/.zen/bunkerbox/history.json
fi
2022-04-07 02:14:21 +02:00
fi
2022-04-08 18:06:59 +02:00
#################
VMAIN = " /ipfs/ $IPFSROOT / $VUID .m3u8 "
# UPDATING original JSON - TODO inform crowdbunker that IPFS copy is available.
2022-04-08 18:26:09 +02:00
cat ~/.zen/bunkerbox/cache/$VUID /media/$VUID .json | jq " .video.hlsManifest.url = \" $VMAIN \" " > ~/.zen/bunkerbox/cache/$VUID /$VUID .json
2022-04-08 18:06:59 +02:00
echo " TODO: CALL BACK SOURCE ... New HLS = $IPFSNGW $VMAIN "
#################
# Create local index.html simple redirect to current IPFS video
2022-04-08 02:47:03 +02:00
echo " <meta http-equiv=\"refresh\" content=\"0;URL= $IPFSNGW $INDEX \"> " > ~/.zen/bunkerbox/index.html
2022-04-07 15:43:42 +02:00
echo " ===== INDEX ===== $IPFSNGW /ipfs/ $IPFSROOT "
echo " HISTORY : $IPFSNGW /ipfs/ $IPFSROOT /history.json "
2022-04-07 02:14:21 +02:00
2022-04-08 18:06:59 +02:00
################# ################# #################
2022-04-08 13:57:36 +02:00
PS3 = "Comment voulez-vous publier votre collecte ? "
2022-04-07 02:14:21 +02:00
choices = ( "debug" "local" "qo-op" "astrXbian" )
2022-04-07 16:00:19 +02:00
fav = $( cat ~/.zen/bunkerbox/choice 2>/dev/null)
2022-04-07 02:14:21 +02:00
[ [ ! $fav ] ] && select fav in " ${ choices [@] } " ; do [ [ $fav ] ] && break; done
case $fav in
"local" )
echo 'local' > ~/.zen/bunkerbox/choice
2022-04-08 13:57:36 +02:00
echo "MODE 'local'"
2022-04-07 02:14:21 +02:00
continue
; ;
"astrXbian" )
2022-04-08 18:02:23 +02:00
echo "MODE 'astrXbian' (DEV ZONE)"
2022-04-07 02:14:21 +02:00
[ [ ! -d ~/.zen/astrXbian ] ] && echo "DEV ZONE - Installez astrXbian SVP ... P2P VideoClub DEMO - DEV ZONE !" && exit 1
[ [ ! $IPFSNODEID ] ] && echo "Missing IPFSNODEID. Exit" && exit 1
echo 'astrXbian' > ~/.zen/bunkerbox/choice
mkdir -p ~/.zen/ipfs/.$IPFSNODEID /astroport/bunkerbox
echo " <meta http-equiv=\"refresh\" content=\"0;URL= $INDEX \"> " > ~/.zen/ipfs/.$IPFSNODEID /astroport/bunkerbox/index.html
cp ~/.zen/bunkerbox/history.json ~/.zen/ipfs/.$IPFSNODEID /astroport/bunkerbox/
2022-04-07 15:43:42 +02:00
echo " BALISE Station :: $IPFSNGW /ipns/ $IPFSNODEID /. $IPFSNODEID /astroport/bunkerbox/ "
echo "Propagation lors du prochain cycle astrXbian"
2022-04-07 02:14:21 +02:00
continue
; ;
"qo-op" )
2022-04-08 13:57:36 +02:00
echo "MODE 'qo-op'"
2022-04-07 02:14:21 +02:00
if [ [ ! $( ipfs key list | grep 'qo-op' ) ] ] ; then
2022-04-07 15:43:42 +02:00
echo "Clef qo-op manquante! (Missing qo-op key!)"
echo "Récupérez la auprès de votre meilleur ami. Et ne brisez pas la chaine de confiance!"
echo "(Get it from your best friend and do not break confidence ring!)"
sleep 2
echo
echo "Envoyez un email pour obtenir assistance. (Contact support@qo-op.com) ? HELP !"
sleep 1
echo
2022-04-08 18:02:23 +02:00
echo "Utiliser la clef 'qo-op' par défaut ? ENTRER pour OUI. Saisissez un caractère avant si NON."
2022-04-07 02:14:21 +02:00
read KDEV
2022-04-07 15:43:42 +02:00
if [ [ " $KDEV " != "" ] ] ; then
echo "La confiance est dans la CLEF (Confidence is in the KEY)."
2022-04-08 18:02:23 +02:00
echo "Génération de la votre (here is yours): "
2022-04-07 15:43:42 +02:00
publishkey = $( ipfs key gen qo-op)
echo "~/.ipfs/keystore/key_ofxs233q"
2022-04-08 18:02:23 +02:00
echo "Partagez cette clef avec vos amis pour créer votre chaine video en commun..."
2022-04-07 15:43:42 +02:00
echo " $IPFSNGW /ipns/ $publishkey "
2022-04-08 18:02:23 +02:00
echo
2022-04-07 15:43:42 +02:00
echo " $publishkey " > ~/.zen/bunkerbox/qo-op
echo 'qo-op' > ~/.zen/bunkerbox/choice
else
## USE DEV KEY
2022-04-08 18:02:23 +02:00
echo "Activation clef 'qo-op' par défaut."
2022-04-07 15:43:42 +02:00
echo "k51qzi5uqu5djt17zonkpg1cb8hrxhahpesybusz8q57j4ocqm0qlc6s99z60x" > ~/.zen/bunkerbox/qo-op
cp ${ MY_PATH } /key_ofxs233q ~/.ipfs/keystore/
fi
2022-04-07 02:14:21 +02:00
else
2022-04-08 13:57:36 +02:00
## qo-op KEY IS ALREADY THERE. WRITE 'qo-op' IPNS key
2022-04-08 18:02:23 +02:00
# Refreshing actual 'qo-op' key
2022-04-07 02:14:21 +02:00
ipfs key list -l | grep 'qo-op' | cut -f 1 -d ' ' > ~/.zen/bunkerbox/qo-op
fi
echo 'qo-op' > ~/.zen/bunkerbox/choice
IPNS = $( cat ~/.zen/bunkerbox/qo-op)
2022-04-08 13:57:36 +02:00
echo
echo " Chaine Vidéo 'qo-op' => $IPFSNGW /ipns/ $IPNS "
2022-04-07 02:14:21 +02:00
echo
2022-04-08 18:06:59 +02:00
##### NEW HOMEPAGE / NEW DYNAMIC DATA ###### HERE TIMESTAMPING IS OK
2022-04-11 12:14:31 +02:00
InHere = $( cat ~/.zen/bunkerbox/history_*.json | jq .Videos[ ] .link | grep $VUID )
2022-04-07 02:14:21 +02:00
if [ [ ! $InHere ] ] ; then
2022-04-08 18:02:23 +02:00
echo "BunkerBOX - NOUVELLE VIDEO - Mise à jour homepage & dynamic history(s).json"
2022-04-08 18:37:55 +02:00
mkdir -p ~/.zen/bunkerbox/homepage/
2022-04-08 03:11:35 +02:00
## This is the welcome page of your qo-op channel.
# Could be redirect, or ... Your homepage is introduced there !!
2022-04-08 18:37:55 +02:00
# 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
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
cp ${ MY_PATH } /templates/crowbunkerbox.png ~/.zen/bunkerbox/homepage/
sed -i " s~_IPNSL_~ $IPNSL ~g " ~/.zen/bunkerbox/homepage/index.html
2022-04-11 13:24:24 +02:00
sed -i " s~_VUID_~ $INDEX / $VUID ~g " ~/.zen/bunkerbox/homepage/index.html
2022-04-13 20:40:34 +02:00
sed -i " s/_WHO_/ $( date -u "+%Y-%m-%d#%H:%M:%S" ) @ $IPFSNODEID /g " ~/.zen/bunkerbox/homepage/index.html
2022-04-12 01:50:59 +02:00
sed -i " s~_TITLE_~ $TITLE ~g " ~/.zen/bunkerbox/homepage/index.html
2022-04-08 18:37:55 +02:00
cp ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/homepage/history.json
2022-04-11 00:50:10 +02:00
cp ~/.zen/bunkerbox/calendar.json ~/.zen/bunkerbox/homepage/calendar.json
2022-04-08 18:37:55 +02:00
cp ~/.zen/bunkerbox/history.${ CHANNEL } .json ~/.zen/bunkerbox/homepage/history.${ CHANNEL } .json
echo " $TS " > ~/.zen/bunkerbox/homepage/ts # TimeStamping
echo "Adding ~/.zen/bunkerbox/homepage/* to IPFS "
VROOT = $( ipfs add -rwHq ~/.zen/bunkerbox/homepage/* | tail -n 1)
2022-04-08 13:57:36 +02:00
echo " 'qo-op' update with /ipfs/ $VROOT "
2022-04-07 02:14:21 +02:00
ipfs name publish --key= qo-op /ipfs/$VROOT
2022-04-11 00:50:10 +02:00
echo " $VROOT " > ~/.zen/bunkerbox/homepage/chain # Memorize chain ipfs reference
2022-04-08 13:57:36 +02:00
echo " HOME : $IPFSNGW /ipns/ $IPNS / "
echo " HISTORY : $IPFSNGW /ipns/ $IPNS /history.json "
2022-04-07 02:14:21 +02:00
fi
continue
; ;
"debug" )
echo "debug"
> ~/.zen/bunkerbox/choice
2022-04-08 15:25:19 +02:00
continue
2022-04-07 02:14:21 +02:00
; ;
esac
2022-04-08 15:25:19 +02:00
end = ` date +%s` ; echo ___Duration ` expr $end - $start ` seconds___
2022-04-07 02:14:21 +02:00
done
2022-04-11 00:50:10 +02:00