diff --git a/zen/new_file_in_astroport.sh b/zen/new_file_in_astroport.sh index 7fa0c2a..1906a67 100755 --- a/zen/new_file_in_astroport.sh +++ b/zen/new_file_in_astroport.sh @@ -24,31 +24,29 @@ G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) # mkdir -p ~/astroport/mp3 ######################################################################## path="$1" +# Add trailing / if needed +length=${#path} +last_char=${path:length-1:1} +[[ $last_char != "/" ]] && path="$path/"; : + file="$2" ipns="$3" + echo "~/.zen/astrXbian/zen/new_file_in_astroport.sh PATH/ \"$path\" FILE \"$file\" IPNS \"$ipns\"" + extension="${file##*.}" TITLE="${file%.*}" -# .part file false flag correcting + +# .part file false flag correcting (inotify mode) [[ ! -f "${path}${file}" ]] && file="${TITLE%.*}" && extension="${TITLE##*.}" && [[ ! -f "${path}${file}" ]] && echo "NO FILE" && exit 1 # GET XZUID -[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title) || XZUID=$(hostname) +[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title) || XZUID=$(cat /etc/hostname) [[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && echo "Les fichiers sont à placer dans ~/astroport/ MERCI" && exit 1 -TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... film, youtube, mp3 +TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... TYPE(film, youtube, mp3)/ REFERENCE / CAT=$(echo "$TYPE" | awk '{ print tolower($0) }') -[[ ! $CAT ]] && echo "CAT est le 5e sous-répertoire de $path" && exit 1 PREFIX=$(echo "$TYPE" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M ou Y -if [[ "$PREFIX" == "Y" || "$PREFIX" == "M" ]]; then - INDEXPREFIX="YOUTUBE_" - REFERENCE=$(echo "$file" | cut -d "_" -f 1) # Youtube filename starts with ID_ -else - INDEXPREFIX="TMDB_" - REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Contains TMDB id - [ "${REFERENCE}" -ne "${REFERENCE}" ] && echo "ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ " && exit 1 # ${REFERENCE} NOT A NUMBER -fi - # File is placed in ROOT ~/astroport ? if [[ $PREFIX == "" ]] then @@ -56,6 +54,56 @@ then echo "WARNING. $TYPE is root file UNTREATED" && exit 1 fi +######################################################################## +# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new ) +######################################################################## +case ${PREFIX} in + Y) + INDEXPREFIX="YOUTUBE_" + REFERENCE=$(echo "$file" | cut -d "_" -f 1) # Youtube filename starts with ID_ + ;; + M) + INDEXPREFIX="MP3TUBE_" + REFERENCE=$(echo "$file" | cut -d "_" -f 1) # Youtube filename starts with ID_ + ;; + F | S | A) + INDEXPREFIX="TMDB_" + REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Path contains TMDB id + [ "${REFERENCE}" -ne "${REFERENCE}" ] && echo "ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ " && exit 1 # ${REFERENCE} NOT A NUMBER + ;; + *) + echo "$PREFIX inconnu" && exit 1 + ;; +esac + +######################################################################## +## CHECK if ${INDEXPREFIX}${REFERENCE} KEY exists +######################################################################## +isREFERENCEinINDEX=$(grep ";$REFERENCE;" ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN) +if [[ ${isREFERENCEinINDEX} ]] +then + if [[ -d ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] + then + # FILE IS MINE, replacing it in INDEX + ipnslink=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) + echo "CLEF IPNS ${INDEXPREFIX}${REFERENCE} = $ipnslink" + + # DELETING GCHANGE AD + gchangeAD=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad) + ~/.zen/astrXbian/zen/jaklis/jaklis.py deleteoffer -i $gchangeAD + rm ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad + + # DELETING OLD LINE FROM INDEX + sed -i "/;$REFERENCE;/d" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN + + else + echo "FILE IS FROM ANOTHER" + echo ${isREFERENCEinINDEX} + # I could send message to my friend, PIN, exchange contract... TODO + fi +fi + +######################################################################## echo "ADDING ${path}${file} to IPFS and create ${PREFIX}ASTRXBIAN INDEX" echo "~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN" echo "-----------------------------------------------------------------" @@ -83,16 +131,21 @@ if [[ $KEY ]]; then echo "$KEY" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link # .zen could contain ZEN for economic value touch ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.zen - # CLEAR ipfs link (is then cyphered to manage exchange regulation) - echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink - echo "${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename - # TRANSFERT from ajouter_video.sh "ajouter_video.txt" later used line 118 - [[ -f ~/astroport/${CAT}/${TMDB}/ajouter_video.txt ]] && mv ~/astroport/${CAT}/${TMDB}/ajouter_video.txt ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ -################ ENCRYPT SENSIBLE DATA + ################ ENCRYPT keystore/$KEYFILE $MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.ipfs/keystore/$KEYFILE -o ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.natools.encrypt - $MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -o ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt - rm ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink fi + +# CLEAR ipfs link (is then cyphered to manage exchange regulation) +echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink +################ ENCRYPT .ipfs.filelink +$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -o ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt +rm ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink + +echo "${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename + +# TRANSFERT from ajouter_video.sh "ajouter_video.txt" later used +[[ -f ~/astroport/${CAT}/${TMDB}/ajouter_video.txt ]] && mv ~/astroport/${CAT}/${TMDB}/ajouter_video.txt ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ + # IPNS index.html Redirect to ipfs streaming link (could be contract or anything !!) echo "" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html echo " @@ -104,11 +157,13 @@ IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) ######################################################################## # PUBLISH GCHANGE AD ######################################################################## -GOFFER=$(~/.zen/astrXbian/zen/jaklis/jaklis.py setoffer -t "#kodi / ${file}" -d "${INDEXPREFIX}${REFERENCE} https://aries.copylaradio.com/ipns/$IPNS/" -p ~/.zen/astrXbian/disk.png) -echo $GOFFER > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad -NEWIPFS=$(ipfs add -rHq ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/ | tail -n 1 ) -IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) - +if [[ ! -f ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad ]] +then + GOFFER=$(~/.zen/astrXbian/zen/jaklis/jaklis.py setoffer -t "#astroport ${INDEXPREFIX}${REFERENCE} ${TITLE}" -d "https://aries.copylaradio.com/ipns/$IPNS/" -p ~/.zen/astrXbian/disk.png) + echo $GOFFER > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad + NEWIPFS=$(ipfs add -rHq ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/ | tail -n 1 ) + IPNS=$(ipfs name publish --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) +fi ######################################################################## # FIRST ${PREFIX}ASTRXBIAN 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 @@ -126,7 +181,12 @@ if [[ ! $isFILEinINDEX && ! $isLINKinINDEX ]]; then touch ~/.zen/ipfs/.${IPFSNODEID}/PIN/${IPFSREPFILEID}/$G1PUB # SIMILAR with "ipfs ls /ipns/${IPFSNODEID}/.${IPFSNODEID}/PIN/ (...)" # TODO: switch case $PREFIX - [[ -f ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt ]] && line=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g") || line="$CAT;${REFERENCE};$YEAR;$TITLE;$SAISON;;${XZUID};$RES;/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME" + if [[ -f ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt ]] + then + line=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g") + else + line="$CAT;${REFERENCE};$YEAR;$TITLE;$SAISON;;${XZUID};$RES;/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME" + fi echo "$line" >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN else if [[ $isFILEinMYINDEX ]]; then