Prepare youtube video feeding to bootstrap node type Astroport/Wordpress OASIS (CONTRACT App explanation)

This commit is contained in:
qo-op 2021-04-04 17:52:53 +02:00
parent b588d654f6
commit 0d8b3ba6af
2 changed files with 118 additions and 48 deletions

View File

@ -80,27 +80,74 @@ YFILE=$(ls -t ${YTEMP} | head -n 1)
FILE_NAME="$(basename "${YFILE}")" FILE_NAME="$(basename "${YFILE}")"
FILE_EXT="${FILE_NAME##*.}" FILE_EXT="${FILE_NAME##*.}"
JSON_FILE=$(echo ${FILE_NAME} | sed "s/${FILE_EXT}/json/g")
YID=$(echo "${FILE_NAME}" | cut -d "&" -f 1) 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) 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) [[ $(which detox) ]] && YNAME=$(echo "${FILE_NAME}" | cut -d "&" -f 2- | detox --inline)
TMDB="${YID}" 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" FILE_PATH="$HOME/astroport/youtube/$YID"
mkdir -p ${FILE_PATH} && mv -f ${YTEMP}/* ${FILE_PATH}/ 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}" 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 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) 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 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) 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 # _IPFSREPFILEID_ is replaced later
rm -Rf ${YTEMP} rm -Rf ${YTEMP}

View File

@ -148,7 +148,6 @@ if [[ $KEY ]]; then
echo "$KEY" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link echo "$KEY" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link
# CREATE .zen = ZEN economic value # CREATE .zen = ZEN economic value
touch ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.zen 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 $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 # CREATE other encrypted copies for friends depending DEFCON & stars
# > STARGATE 1 - 2 - 3 - 4 - 5 !! # > STARGATE 1 - 2 - 3 - 4 - 5 !!
@ -159,37 +158,55 @@ else
fi fi
# CLEAR ipfs link (is then cyphered to manage exchange regulation) # CLEAR ipfs link (is then cyphered to manage exchange regulation)
echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink echo "/ipfs/$IPFSREPFILEID/${file}" > /tmp/.ipfs.filelink
echo "$IPFSID" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid echo "$IPFSID" > /tmp/.ipfsid
################ ENCRYPT .ipfsid & .ipfs.filelink ################ ENCRYPT .ipfsid & .ipfs.filelink for A_boostrap_nodes and myself
$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 for g1node in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#") # remove comments
rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink do
$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 # CREATE $g1node IPFS communication directory
rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfsid [[ ! -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 "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename
echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title 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 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 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}/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}/ # 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) # CONTRACTS, are small App (fulljs or jquery + nginx backend app server)
# serve App will come from ipfs to certify the code # They must decrypt IPFS after succeeding a chalenge (, +/- n zen, ...)
######################################################################## ########################################################################
# Various App ipfs reference are listed here # Contract App Examples (ipns_TAG_refresh.sh makes MEDIAKEY evolution)
# Counting video views = # 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 # index.html is presenting Astroport/Kodi service then redirect to
# $G1PUB/index.html contains redirection to ipfs link # $G1PUB/index.html contains redirection to ipfs link
########################################################################
# IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!) # IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!)
echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://127.0.0.1:8181/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://127.0.0.1:8181/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.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)$ ]] if [[ "${CAT}" =~ ^(film|serie|anime)$ ]]
then then
@ -217,35 +234,41 @@ then
IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS)
fi fi
echo "Annonce gchange : $(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad)" 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 fi
######################################################################## ########################################################################
# NEW ${PREFIX}ASTRXBIAN FILE : Add header # PUBLISH TMDB film/serie/anime
[[ ! -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 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 # REFRESH IPNS SELF PUBLISH