astrXbian/zen/new_file_in_astroport.sh

131 lines
7.8 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
########################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.3
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
# COPY ~/astroport/* files to IPFS
# Publish INDEX ~/.zen/ipfs/.*/${PREFIX}ASTRXBIAN
######## #### ### ## #
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
IPFSNODEID=$(ipfs id -f='<id>\n')
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
# ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
# Astropot/Kodi/Vstream source reads ${PREFIX}ASTRXBIAN from http://127.0.0.1:8181/.$IPFNODEID/
# Index File Format (could be enhanced) is using Kodi TMDB enhancement
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films
########################################################################
## RUN inotifywait process ~/astroport/ NEW FILE DETECT
# /usr/bin/inotifywait -r -e close_write -m /home/$YOU/astroport | while read dir flags file; do ~/.zen/astrXbian/zen/new_file_in_astroport.sh "$dir" "$file"; done &
# mkdir -p ~/astroport/youtube
# mkdir -p ~/astroport/mp3
########################################################################
path="$1"
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
[[ ! -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)
[[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && echo "Fichiers à placer dans ~/astroport/ MERCI" && exit 1
TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... film, youtube, mp3
CAT=$(echo "$TYPE" | awk '{ print tolower($0) }')
[[ ! $CAT ]] && echo "CAT est le 5e champs de $path" && exit 1
PREFIX=$(echo "$TYPE" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M
TMDB=$(echo "$path" | cut -d '/' -f 6 )
[ "$TMDB" -ne "$TMDB" ] && echo "ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ " && exit 1 # $TMDB NOT A NUMBER
# File is placed in ROOT ~/astroport ?
[[ $PREFIX == "" ]] && echo "WARNING. $TYPE is root file UNTREATED" && exit 1
echo "ADDING ${path}${file} to IPFS and ${PREFIX}ASTRXBIAN INDEX"
echo "~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN"
echo "-----------------------------------------------------------------"
IPFSREPFILEID=$(ipfs add -wq "${path}${file}" | tail -n 1)
[[ $IPFSREPFILEID == "" ]] && echo "ipfs add ERROR" && exit 1
echo "-----------------------------------------------------------------"
echo "IPFS: $file : ipfs ls /ipfs/$IPFSREPFILEID"
echo "-----------------------------------------------------------------"
echo "New $TYPE INDEX ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN "
[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/
########################################################################
## CREATE NEW ipns KEY : TMDB_$TMDB
########################################################################
########################################################################
[[ ! -d ~/.zen/KEY/TMDB_$TMDB/${G1PUB} ]] && mkdir -p ~/.zen/KEY/TMDB_$TMDB/${G1PUB} && KEY=$(ipfs key gen "TMDB_$TMDB") && KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1)
## INIT ipns
if [[ $KEY ]]; then
echo "$KEYFILE" > ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/.ipns.key.keystore_filename
echo "$KEY" > ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/.ipns.link
touch ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/.zen
mv ~/astroport/${CAT}/${TMDB}/ajouter_video.txt ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/
# echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://localhost:8181/ipns/$KEY/TMDB_$TMDB/${G1PUB}/\">" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/TMDB_$TMDB/ipns.html
# TRY NATOOLS FOR SECURE SHARING # $MY_PATH/jaklis/lib/natools.py encrypt -k $G1PUB -i ~/.ipfs/keystore/$KEYFILE -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/TMDB_$TMDB/.ipns.key.encrypt.natools
fi
# IPNS index.html Redirect to ipfs streaming link (could be contract or anything !!)
echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://localhost:8181/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/index.html
NEWIPFS=$(ipfs add -rHq ~/.zen/KEY/TMDB_$TMDB/ | tail -n 1 )
ipfs name publish --key="TMDB_$TMDB" $NEWIPFS
########################################################################
########################################################################
########################################################################
URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri)
# 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
## CHECK IF $IPFSREPFILEID is NEW, or an already existing in SWARMs?
isFILEinINDEX=$(grep "$URLENCODE_FILE_NAME" ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/*ASTRXBIAN)
isLINKinINDEX=$(grep "$IPFSREPFILEID" ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/*ASTRXBIAN)
isFILEinMYINDEX=$(grep "$URLENCODE_FILE_NAME" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN)
isLINKinMYINDEX=$(grep "$IPFSREPFILEID" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN)
# Is it a new file? Add it to INDEX
if [[ ! $isFILEinINDEX && ! $isLINKinINDEX ]]; then
mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/PIN/${IPFSREPFILEID}/
touch ~/.zen/ipfs/.${IPFSNODEID}/PIN/${IPFSREPFILEID}/$G1PUB
# SIMILAR with "ipfs ls /ipns/${IPFSNODEID}/.${IPFSNODEID}/PIN/ (...)"
# TODO: switch case $PREFIX
[[ -f ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/ajouter_video.txt ]] && line=$(cat ~/.zen/KEY/TMDB_$TMDB/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g") || line="$CAT;$TMDB;$YEAR;$TITLE;$SAISON;;${XZUID};$RES;/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME"
echo "$line" >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
else
if [[ $isFILEinMYINDEX ]]; then
echo "$file already in INDEX, updating IPFS link" ## File was updated => Change OLDLINK
OLDLINK=$(echo $isFILEinMYINDEX | cut -d ";" -f 9 | cut -d "/" -f 3 | tail -n 1) # GRAB old ipfs id
sed -i "s/$OLDLINK/$IPFSREPFILEID/g" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
fi
[[ $isLINKinINDEX ]] && echo "$IPFSREPFILEID already in INDEX $isLINKinINDEX DO NOTHING" && exit 1
fi
echo "~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN"
echo "-----------------------------------------------------------------"
cat ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN | cat ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/${PREFIX}* | sort | uniq > ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN
echo "--------------- KODI INDEX UPDATED ----------------------"
# CLEAN all ipns keys except self
# for key in $(ipfs key list | grep -Ev 'self'); do ipfs key rm $key; done
########################################################################
# REFRESH IPNS SELF PUBLISH
########################################################################
~/.zen/astrXbian/zen/ipns_self_publish.sh
########################################################################
echo "NEW $TYPE ($file) ADDED."
echo "INDEX UPDATED : http://127.0.0.1:8181/ipns/${IPFSNODEID}/.${IPFSNODEID}/${PREFIX}ASTRXBIAN"
echo "VIDEO IPNS LINK : http://localhost:8181/ipns/$KEY"