From 0d8b3ba6af09b5a53188654761549556bc8da152 Mon Sep 17 00:00:00 2001 From: qo-op Date: Sun, 4 Apr 2021 17:52:53 +0200 Subject: [PATCH] Prepare youtube video feeding to bootstrap node type Astroport/Wordpress OASIS (CONTRACT App explanation) --- ajouter_video.sh | 59 +++++++++++++++++-- zen/new_file_in_astroport.sh | 107 +++++++++++++++++++++-------------- 2 files changed, 118 insertions(+), 48 deletions(-) diff --git a/ajouter_video.sh b/ajouter_video.sh index 72f5350..180e62b 100755 --- a/ajouter_video.sh +++ b/ajouter_video.sh @@ -80,27 +80,74 @@ YFILE=$(ls -t ${YTEMP} | head -n 1) FILE_NAME="$(basename "${YFILE}")" FILE_EXT="${FILE_NAME##*.}" +JSON_FILE=$(echo ${FILE_NAME} | sed "s/${FILE_EXT}/json/g") + YID=$(echo "${FILE_NAME}" | cut -d "&" -f 1) YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | sed "s/[(][^)]*[)]//g" | sed -e 's/[^A-Za-z0-9._-]/_/g' | sed -e 's/__/_/g' ) # Remove YoutubeID_ and (what is in perentheses) [[ $(which detox) ]] && YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | detox --inline) TMDB="${YID}" +TITLE="${YNAME%.*}" + +## CORRECT PARAMETERS to Make Kodi compatible YASTRXBIAN FILE + +YOUTUBE_GENRES=$(zenity --list --checklist --title="GENRE" --height=${haut}\ + --text="Choisissez le(s) genre(s) d'information(s) contenue(s) dans cette vidéo \"${TITLE}\" publiée sur OASIS"\ + --column="Use"\ + --column="Feature"\ + FALSE Savoir\ + FALSE Nature\ + FALSE Habiter\ + FALSE Nourrir\ + FALSE Deplacer\ + FALSE Guerir\ + FALSE Divertir\ + FALSE Musique\ + FALSE DIY\ + FALSE Science\ + FALSE Humain\ + FALSE Animal\ + TRUE Eveil\ + TRUE ${AXID// /-}) + +# FORMAT GENRES ["genre1","genre2"] +GENRES="[\"$(echo ${YOUTUBE_GENRES} | sed s/\|/\",\"/g)\"]" + +## MANIFESTE OASIS +zenity --width ${large} --height=${haut} --text-info \ + --title="Engagement OASIS Astroport/OneNation" \ + --html \ + --url="https://oasis.astroport.com/" \ + --checkbox="J'ai lu et j'accepte les termes." + +case $? in + 0) + echo "Démarrage de l'installation !" + # next step + ;; + 1) + echo "Arrêt de l'installation !" && exit 1 + ;; + -1) + echo "Une erreur inattendue est survenue." && exit 1 + ;; +esac FILE_PATH="$HOME/astroport/youtube/$YID" mkdir -p ${FILE_PATH} && mv -f ${YTEMP}/* ${FILE_PATH}/ -# Remove "&" from FILE_NAME rename to YNAME +# rename FILE_NAME to YNAME (URL clean) mv "${FILE_PATH}/${FILE_NAME}" "${FILE_PATH}/${YNAME}" && FILE_NAME="${YNAME}" +# rename video.json +mv "${FILE_PATH}/${JSON_FILE}" "${FILE_PATH}/video.json" -## CORRECT PARAMETERS to Make Kodi compatible YASTRXBIAN FILE -TITLE="${YNAME%.*}" -GENRES="[\"$AXID\"]" GROUPES="_IPNSKEY_" # USE GROUPS TO RECORD IPNS MEDIAKEY FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${FILE_PATH}/${FILE_NAME}" | cut -d "x" -f 2) RES=${FILE_RES%?}0p -## CREATE "~/astroport/${CAT}/${TMDB}/ajouter_video.txt" (with film CAT !!!) +## CREATE "~/astroport/${CAT}/${TMDB}/ajouter_video.txt" and video.json URLENCODE_FILE_NAME=$(echo ${FILE_NAME} | jq -Rr @uri) -echo "film;${TMDB};${YEAR};${TITLE};${SAISON};${GENRES};${GROUPES};${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/astroport/${CAT}/${TMDB}/ajouter_video.txt +echo "youtube;${TMDB};${YEAR};${TITLE};${SAISON};${GENRES};${GROUPES};${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/astroport/${CAT}/${TMDB}/ajouter_video.txt + # _IPFSREPFILEID_ is replaced later rm -Rf ${YTEMP} diff --git a/zen/new_file_in_astroport.sh b/zen/new_file_in_astroport.sh index eeb66fb..18656ff 100755 --- a/zen/new_file_in_astroport.sh +++ b/zen/new_file_in_astroport.sh @@ -148,7 +148,6 @@ if [[ $KEY ]]; then echo "$KEY" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link # CREATE .zen = ZEN economic value touch ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.zen - ################ ENCRYPT keystore/$KEYFILE $MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.ipfs/keystore/$KEYFILE -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.natools.encrypt # CREATE other encrypted copies for friends depending DEFCON & stars # > STARGATE 1 - 2 - 3 - 4 - 5 !! @@ -159,37 +158,55 @@ else fi # CLEAR ipfs link (is then cyphered to manage exchange regulation) -echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -echo "$IPFSID" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid -################ ENCRYPT .ipfsid & .ipfs.filelink -$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt -rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid.encrypt -rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid +echo "/ipfs/$IPFSREPFILEID/${file}" > /tmp/.ipfs.filelink +echo "$IPFSID" > /tmp/.ipfsid +################ ENCRYPT .ipfsid & .ipfs.filelink for A_boostrap_nodes and myself +for g1node in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments +do + # CREATE $g1node IPFS communication directory + [[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node} ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node} + # Enscrypt IPFS links + $MY_PATH/tools/natools.py encrypt -p $g1node -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.ipfs.filelink.encrypt + $MY_PATH/tools/natools.py encrypt -p $g1node -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.ipfsid.encrypt + # Init zen, views counters & visitor + echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.zen + echo "0" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.views.counter + echo "anonymous" ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/${g1node}/.visitor +done +## encrypt links for myself +$MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt +$MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid.encrypt +rm /tmp/.ipfs.filelink +rm /tmp/.ipfsid echo "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.timestamp -# INIT .views.counter +# INIT GLOBAL .views.counter echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.views.counter -# COPY "ajouter_video.txt" later used +# COPY "ajouter_video.txt" and "video.json" to SELF IPNS publish data [[ -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ +[[ -f ~/astroport/${TYPE}/${REFERENCE}/video.json ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/video.json ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ ######################################################################## +## EXPLANATIONS ######################################################################## # What is being in ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/ -# is being published on http://127.0.0.1:8181/ipns/$KEY/ +# is published on http://127.0.0.1:8181/ipns/$KEY/ ######################################################################## -# To activate CONTRACTS, make small App with php + jquery (nginx) -# serve App will come from ipfs to certify the code +# CONTRACTS, are small App (fulljs or jquery + nginx backend app server) +# They must decrypt IPFS after succeeding a chalenge (, +/- n zen, ...) ######################################################################## -# Various App ipfs reference are listed here -# Counting video views = +# Contract App Examples (ipns_TAG_refresh.sh makes MEDIAKEY evolution) +# Counting video views = +1 .views.counter => decrypt key +# Balancing Zen wallets = -n form source = +n for destination => decrypt key ######################################################################## - +# Astroport/Gchange USE as public/private media copy friend of friends swarm +# one star level (no encrypt) # index.html is presenting Astroport/Kodi service then redirect to # $G1PUB/index.html contains redirection to ipfs link +######################################################################## # IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!) echo "" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html @@ -205,7 +222,7 @@ IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) ######################################################################## ######################################################################## -# PUBLISH GCHANGE AD for TMDB film/serie/anime ONLY +# PUBLISH TMDB film/serie/anime ######################################################################## if [[ "${CAT}" =~ ^(film|serie|anime)$ ]] then @@ -217,35 +234,41 @@ then IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) fi echo "Annonce gchange : $(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad)" + + ######################################################################## + # NEW ${PREFIX}ASTRXBIAN FILE : Add header + [[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ]] \ + && echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN + + # MEMORIZE NEW PIN + mkdir -p ~/.zen/PIN/${IPFSREPFILEID}/ + touch ~/.zen/PIN/${IPFSREPFILEID}/${G1PUB} + + # ADD NEW LINE TO INDEX + if [[ -f ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt ]] + then + line=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g" | sed "s/_IPNSKEY_/$IPNS/g" ) + else + FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${path}${file}" | cut -d "x" -f 2) + RES=${FILE_RES%?}0p + line="$CAT;${REFERENCE};$YEAR;$TITLE;$SAISON;;${IPNS};$RES;/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME" + fi + echo "-------------------- UPDATE MY INDEX -----------------------------" + echo "$line" + echo "$line" >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN + + echo "UPDATE IPNS ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/ajouter_video.txt" + echo "$line" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt + + echo "----------------- REFRESH LOCAL KODI INDEX ----------------------" + cat ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN | sort | uniq > ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN fi ######################################################################## -# NEW ${PREFIX}ASTRXBIAN FILE : Add header -[[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ]] \ -&& echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN +# PUBLISH TMDB film/serie/anime +######################################################################## -# MEMORIZE NEW PIN -mkdir -p ~/.zen/PIN/${IPFSREPFILEID}/ -touch ~/.zen/PIN/${IPFSREPFILEID}/${G1PUB} - -# ADD NEW LINE TO INDEX -if [[ -f ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt ]] -then - line=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g" | sed "s/_IPNSKEY_/$IPNS/g" ) -else - FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${path}${file}" | cut -d "x" -f 2) - RES=${FILE_RES%?}0p - line="$CAT;${REFERENCE};$YEAR;$TITLE;$SAISON;;${IPNS};$RES;/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME" -fi -echo "-------------------- UPDATE MY INDEX -----------------------------" -echo "$line" -echo "$line" >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN - -echo "UPDATE IPNS ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/ajouter_video.txt" -echo "$line" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt - -echo "----------------- REFRESH GLOBAL KODI INDEX ----------------------" -cat ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN | sort | uniq > ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN +######################################################################## ######################################################################## # REFRESH IPNS SELF PUBLISH