From edcc0c4afe2d216d7563944b03382c00fa6a2a21 Mon Sep 17 00:00:00 2001 From: fred Date: Thu, 7 Apr 2022 15:43:42 +0200 Subject: [PATCH] optimisations --- crowdbunker.sh | 98 +++++++++++++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 36 deletions(-) diff --git a/crowdbunker.sh b/crowdbunker.sh index 536a5db..4e22b2e 100755 --- a/crowdbunker.sh +++ b/crowdbunker.sh @@ -55,12 +55,14 @@ for VUID in $(cat ~/.zen/bunkerbox/crowd.json | jq -r '.posts | .[] | .video.id' MEDIASOURCE=$(echo $HLS | rev | cut -d '/' -f 2- | rev) echo "$TITLE ($DURATION s)" - ## CHECK PUBLISH MODE - [[ ! -f ~/.zen/bunkerbox/choice ]] && echo "READY TO PROCESS ? ENTER. Any character sent means next." && read TEST && [[ "$TEST" != "" ]] && echo && continue ## NO CHOICE MADE + ## 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 + start=`date +%s` echo "$HLS" + ## Download HLS source m3u8 (contains video & audio) curl -s $HLS -o ~/.zen/bunkerbox/$VUID/$VUID.m3u8 - # cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 + [[ ! $(cat ~/.zen/bunkerbox/choice 2>/dev/null) ]] && cat ~/.zen/bunkerbox/$VUID/$VUID.m3u8 # DEBUG echo ">>>>>>>>>>>>>>>> Downloading VIDEO" # Choose 360p or 480p or 240p @@ -97,8 +99,12 @@ $VIDEOHEAD $VIDEOSRC.m3u8 " > ~/.zen/bunkerbox/$VUID/media/$VUID.m3u8 -ls ~/.zen/bunkerbox/$VUID/media/ + +ls ~/.zen/bunkerbox/$VUID/media/ # SHOW ALL COLLECTED MEDIA + ########################################################################## +########################################################################## + echo "##########################################################################" echo ">>>>>>>>>>>>>>>> ADDING index.html" # COPY index, style, js AND data @@ -107,23 +113,27 @@ echo "########################################################################## cp ${MY_PATH}/templates/videojs.html ~/.zen/bunkerbox/$VUID/media/index.html cp ${MY_PATH}/images/astroport.jpg ~/.zen/bunkerbox/$VUID/media/ - # Add current/latest common history reversed - if [[ -f ~/.zen/bunkerbox/history.json ]]; then - # qo-op get latest history.json - [[ "$(cat ~/.zen/bunkerbox/choice)"=="qo-op" ]] && IPNSL="/ipns/$(cat ~/.zen/bunkerbox/qo-op)" && ipfs get -o ~/.zen/bunkerbox/history.qo-op.json $IPNSL/history.json || IPNSL="./" - # [[ $(cat ~/.zen/bunkerbox/history.qo-op.json | jq .Videos[].link | grep $VUID) ]] && echo "Video déjà dans history" && continue + ## CREATE FIRST HISTORY from TEMPLATE + [[ ! -f ~/.zen/bunkerbox/history.json ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history.json + # qo-op get latest history.json + if [[ "$(cat ~/.zen/bunkerbox/choice 2>/dev/null)"=="qo-op" ]]; then + IPNSL="/ipns/$(cat ~/.zen/bunkerbox/qo-op)" + ipfs get -o ~/.zen/bunkerbox/history.qo-op.json $IPNSL/history.json # Get actual IPNS qo-op history.json + [[ $(cat ~/.zen/bunkerbox/history.qo-op.json | jq .Videos[].link | grep $VUID) ]] && echo "Video déjà dans history" && cp ~/.zen/bunkerbox/history.qo-op.json ~/.zen/bunkerbox/history.json && continue # FUSION/REPLACEMENT WHAT TODO ? - ## - echo '{ - "Videos":' > ~/.zen/bunkerbox/$VUID/media/history.json - cat ~/.zen/bunkerbox/history.json | jq '.[] | reverse' >> ~/.zen/bunkerbox/$VUID/media/history.json - echo '}' >> ~/.zen/bunkerbox/$VUID/media/history.json + jq -s '.[0] * .[1]' ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/history.qo-op.json | jq -M '.Videos |= unique_by(.link)' > ~/.zen/bunkerbox/history.fusion.json + mv ~/.zen/bunkerbox/history.fusion.json ~/.zen/bunkerbox/history.json ## REPLACE LOCAL HISTORY CACHE else - ## NEW history - [[ ! $(cat ~/.zen/bunkerbox/history.json | grep Videos) ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history.json - cp ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/$VUID/media/history.json + IPNSL="./" fi + + # Add current/latest reversed history to media + echo '{ + "Videos":' > ~/.zen/bunkerbox/$VUID/media/history.json + cat ~/.zen/bunkerbox/history.json | jq '.[] | reverse' >> ~/.zen/bunkerbox/$VUID/media/history.json + echo '}' >> ~/.zen/bunkerbox/$VUID/media/history.json + # Using relative links sed "s/_IPFSROOT_/./g" ${MY_PATH}/templates/videojs.html > ~/.zen/bunkerbox/$VUID/media/index.html sed -i "s/_VUID_/$VUID/g" ~/.zen/bunkerbox/$VUID/media/index.html @@ -138,7 +148,7 @@ echo "########################################################################## INDEX="/ipfs/$IPFSROOT" VMAIN="/ipfs/$IPFSROOT/$VUID.m3u8" - # UPDATING original JSON + # UPDATING original JSON - TODO inform crowdbunker that IPFS copy is available. cat ~/.zen/bunkerbox/$VUID/$VUID.json | jq ".video.hlsManifest.url = \"$VMAIN\"" > ~/.zen/bunkerbox/$VUID/media/$VUID.json echo "M3U8 : $IPFSNGW$VMAIN" @@ -161,17 +171,17 @@ echo "########################################################################## fi echo "" > ~/.zen/bunkerbox/index.html - echo "ACTUEL INDEX $IPFSNGW/ipfs/$IPFSROOT" - echo "OLD JSON : $IPFSNGW/ipfs/$IPFSROOT/history.json" + echo "===== INDEX ===== $IPFSNGW/ipfs/$IPFSROOT" + echo "HISTORY : $IPFSNGW/ipfs/$IPFSROOT/history.json" - PS3="Comment voulez-vous continuer et publier la collecte ? " + PS3="Comment voulez-vous continuer et publier votre collecte ? " choices=("debug" "local" "qo-op" "astrXbian") fav=$(cat ~/.zen/bunkerbox/choice) [[ ! $fav ]] && select fav in "${choices[@]}"; do [[ $fav ]] && break; done case $fav in "local") echo 'local' > ~/.zen/bunkerbox/choice - echo "Historique LOCAL = ~/.zen/bunkerbox/history.json" + echo "MODE LOCAL Historique = ~/.zen/bunkerbox/history.json" continue ;; "astrXbian") @@ -181,33 +191,49 @@ echo "########################################################################## mkdir -p ~/.zen/ipfs/.$IPFSNODEID/astroport/bunkerbox echo "" > ~/.zen/ipfs/.$IPFSNODEID/astroport/bunkerbox/index.html cp ~/.zen/bunkerbox/history.json ~/.zen/ipfs/.$IPFSNODEID/astroport/bunkerbox/ - echo "BALISE Station $IPFSNGW/ipns/$IPFSNODEID/.$IPFSNODEID/astroport/bunkerbox/ propagation au prochain cycle astrXbian" + echo "BALISE Station :: $IPFSNGW/ipns/$IPFSNODEID/.$IPFSNODEID/astroport/bunkerbox/" + echo "Propagation lors du prochain cycle astrXbian" continue ;; "qo-op") + echo "ACTIVATION qo-op" if [[ ! $(ipfs key list | grep 'qo-op') ]]; then - echo "MIssing qo-op key! Clef qo-op manquante!" - echo "get it from your best friend and do not break confidence ring!" - echo "récupérez la auprès de votre meilleur ami. Et ne brisez pas la chaine de confiance!" - echo "Contact support@qo-op.com for help! Envoyez un email pour obtenir assistance." - echo "Utiliser la clef de DEV ? ENTRER pour OUI. Répondez qqch pour NON." + 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 + echo "Utiliser la clef 'qo-op' de DEV ? ENTRER pour OUI. Saisissez un caractère avant si NON." read KDEV - [[ "$KDEV" != "" ]] && echo "BRAVO! Confidence is in the KEY. La confiance est dans la CLEF." && break ## NO CHOICE MADE - - ## USE DEV KEY - echo "k51qzi5uqu5djt17zonkpg1cb8hrxhahpesybusz8q57j4ocqm0qlc6s99z60x" > ~/.zen/bunkerbox/qo-op - cp ${MY_PATH}/key_ofxs233q ~/.ipfs/keystore/ - + if [[ "$KDEV" != "" ]]; then + echo "La confiance est dans la CLEF (Confidence is in the KEY)." + echo "Voici la votre (here is yours): " + publishkey=$(ipfs key gen qo-op) + echo "~/.ipfs/keystore/key_ofxs233q" + echo "Partagez cette clef avec vos amis pour créer une chaine video en commun..." + echo "$IPFSNGW/ipns/$publishkey" + echo "$publishkey" > ~/.zen/bunkerbox/qo-op + echo 'qo-op' > ~/.zen/bunkerbox/choice + else + ## USE DEV KEY + echo "k51qzi5uqu5djt17zonkpg1cb8hrxhahpesybusz8q57j4ocqm0qlc6s99z60x" > ~/.zen/bunkerbox/qo-op + cp ${MY_PATH}/key_ofxs233q ~/.ipfs/keystore/ + fi + ############################################ + ## FIRST PUBLISH index.html (REDIRECT) + history.json + ts mkdir -p /tmp/$VUID echo "" > /tmp/$VUID/index.html cp ~/.zen/bunkerbox/history.json /tmp/$VUID/history.json echo "$TS" > /tmp/$VUID/ts # TimeStamping VROOT=$(ipfs add -wHq /tmp/$VUID/* | tail -n 1) ipfs name publish --key=qo-op /ipfs/$VROOT - echo "qo-op : $IPFSNGW/ipns/$IPNS/history.json /ipfs/$VROOT" + echo "qo-op : $IPFSNGW/ipns/$IPNS/history.json REDIRECT TO /ipfs/$VROOT" else - ## WRITE qo-op IPNS key + ## qo-op KEY IS ALREADY THERE. WRITE qo-op IPNS key ipfs key list -l | grep 'qo-op' | cut -f 1 -d ' ' > ~/.zen/bunkerbox/qo-op fi echo 'qo-op' > ~/.zen/bunkerbox/choice