Tools Pimp Up - ajouter_media.sh - Aspirateur2.0 multimedia personnel + DEFON + Designer Essaim IPFS
This commit is contained in:
parent
2c26824b9f
commit
dcecee31f8
|
@ -0,0 +1,5 @@
|
||||||
|
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP)
|
||||||
|
# oasis.astroport.com = 2jQUH4HfHxdTesjCjvMCx1VJgA5AnpuvrWRq1swfRdsS
|
||||||
|
/ip4/51.15.166.54/tcp/4001/p2p/12D3KooWBYme2BsNUrtx4mEdNX6Yioa9AV7opWzQp6nrPs6ZKabN
|
||||||
|
# aries.copylaradio.com (thuya83pk) = HbBJDXDrN8swxvMohMxmegYRyZ7m99jqgxwwN1gwxck2
|
||||||
|
/ip4/37.187.127.175/tcp/4001/p2p/12D3KooWSQYTxeoZZ39SNosEKxi7RUdGTtAQAqpKeZJxjzqqrZTx
|
|
@ -0,0 +1,5 @@
|
||||||
|
/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN
|
||||||
|
/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa
|
||||||
|
/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb
|
||||||
|
/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt
|
||||||
|
/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
clear
|
||||||
|
echo "------------------------------------------------------------------------------"
|
||||||
|
if [ "$1" == "" ]; then
|
||||||
|
echo " Nothing to search for!"
|
||||||
|
else
|
||||||
|
echo " Searching for "$1" recursively. Please Wait..."
|
||||||
|
echo "------------------------------------------------------------------------------"
|
||||||
|
grep -h -r --exclude=B00 -H --colour=always "$1" ./
|
||||||
|
fi
|
||||||
|
echo "------------------------------------------------------------------------------"
|
||||||
|
if [ "$2" != "" ]; then
|
||||||
|
echo " To replace \"$1\" whith \"$2\", please run"
|
||||||
|
echo " grep -rl '$1' ./ | xargs sed -i 's/$1/$2/g'"
|
||||||
|
fi
|
||||||
|
## THIS IS A GREAT RETRO ENGINEERING AND CODING TOOLS
|
16
start.sh
16
start.sh
|
@ -31,7 +31,7 @@ YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail
|
||||||
[[ ! $YOU ]] && echo "Lancez 'ipfs daemon' SVP" && exit 1
|
[[ ! $YOU ]] && echo "Lancez 'ipfs daemon' SVP" && exit 1
|
||||||
|
|
||||||
## CONNECT USER
|
## CONNECT USER
|
||||||
PS3='Choisissez votre combinaison Astronaute ou ajoutez la votre. Identité ? '
|
PS3='Choisissez votre Astronaute ou ajoutez votre Identité à la liste. '
|
||||||
players=("NOUVEAU VISA" $(ls ~/.zen/game/players))
|
players=("NOUVEAU VISA" $(ls ~/.zen/game/players))
|
||||||
select fav in "${players[@]}"; do
|
select fav in "${players[@]}"; do
|
||||||
case $fav in
|
case $fav in
|
||||||
|
@ -56,14 +56,16 @@ PLAYER=$fav
|
||||||
rm -f ~/.zen/game/players/.current
|
rm -f ~/.zen/game/players/.current
|
||||||
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
|
ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
|
||||||
|
|
||||||
cat ~/.zen/game/players/.current/.pass 2>/dev/null # DEVEL
|
# DEVEL
|
||||||
echo "Saisissez votre PASS "
|
echo "Saisissez votre PASS -- DEBUG $(cat ~/.zen/game/players/.current/.pass 2>/dev/null) --"
|
||||||
read PASS
|
read pass
|
||||||
|
|
||||||
## DECODE CURRENT PLAYER CRYPTO
|
## DECODE CURRENT PLAYER CRYPTO
|
||||||
echo "_ssl_ DECODAGE _ssl_"
|
echo "********* DECODAGE SecuredSocketLayer *********"
|
||||||
openssl enc -aes-256-cbc -d -in "$HOME/.zen/game/players/.current/enc.secret.dunikey" -out "$HOME/.zen/tmp/${PLAYER}.dunikey" -k $PASS 2>/dev/null
|
rm -f ~/.zen/tmp/${PLAYER}.dunikey 2>/dev/null
|
||||||
[ $? != 0 ] && echo "ERROR. MAUVAIS PASS. EXIT" && rm $HOME/.zen/tmp/${PLAYER}.dunikey && exit 1
|
openssl enc -aes-256-cbc -d -in "$HOME/.zen/game/players/.current/enc.secret.dunikey" -out "$HOME/.zen/tmp/${PLAYER}.dunikey" -k $pass 2>/dev/null
|
||||||
|
[ ! -f $HOME/.zen/tmp/${PLAYER}.dunikey ] && echo "ERROR. MAUVAIS PASS. EXIT" && exit 1
|
||||||
|
|
||||||
echo "____________________";
|
echo "____________________";
|
||||||
echo
|
echo
|
||||||
PS3="$PLAYER choisissez une action à mener : "
|
PS3="$PLAYER choisissez une action à mener : "
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -149,7 +149,8 @@ else
|
||||||
sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_BIRTHDATE_~${MOATS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_PSEUDO_~${PSEUDO}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_PLAYER_~${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
sed -i "s~_MOAID_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_MOANS_~${MOANS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
|
sed -i "s~_QOOPNS_~${QOOPNS}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
STATION=$(ipfs key list -l | grep -w 'qo-op' | cut -d ' ' -f 1)
|
STATION=$(ipfs key list -l | grep -w 'qo-op' | cut -d ' ' -f 1)
|
||||||
sed -i "s~_QOOP_~${STATION}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_QOOP_~${STATION}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
sed -i "s~_MOAKEY_~qo-op_${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
sed -i "s~_MOAKEY_~qo-op_${PLAYER}~g" ~/.zen/game/players/$PLAYER/ipfs/.$PeerID/index.html
|
||||||
|
@ -181,7 +182,7 @@ qrencode -s 6 -o "$HOME/.zen/game/players/$PLAYER/QR.QOOPNS.png" "$QOOPNS"
|
||||||
echo; echo "Création de vos QR codes IPNS, clefs de votre réseau IPFS."; sleep 1
|
echo; echo "Création de vos QR codes IPNS, clefs de votre réseau IPFS."; sleep 1
|
||||||
|
|
||||||
[[ $1 != "quiet" ]] && echo; echo "*** Espace Astronaute Activé : ~/.zen/game/players/$PLAYER/"; sleep 1
|
[[ $1 != "quiet" ]] && echo; echo "*** Espace Astronaute Activé : ~/.zen/game/players/$PLAYER/"; sleep 1
|
||||||
[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Personnel (niveau 5) : $PLAYER"; echo "http://127.0.0.1:8080/ipns/$PLAYERNS"; sleep 2
|
[[ $1 != "quiet" ]] && echo; echo "*** Votre Home : $PLAYER"; echo "http://127.0.0.1:8080/ipns/$PLAYERNS"; sleep 2
|
||||||
[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Astronaute (niveau 3) : moa_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$(ipfs key list -l | grep -w moa_$PLAYER | cut -d ' ' -f 1)"; sleep 2
|
[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Astronaute (niveau 3) : moa_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$(ipfs key list -l | grep -w moa_$PLAYER | cut -d ' ' -f 1)"; sleep 2
|
||||||
[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Passerelle (niveau 0/1) : qo-op_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$(ipfs key list -l | grep -w qo-op_$PLAYER | cut -d ' ' -f 1)"; sleep 2
|
[[ $1 != "quiet" ]] && echo; echo "*** Votre Journal Passerelle (niveau 0/1) : qo-op_$PLAYER"; echo " http://127.0.0.1:8080/ipns/$(ipfs key list -l | grep -w qo-op_$PLAYER | cut -d ' ' -f 1)"; sleep 2
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,615 @@
|
||||||
|
#!/bin/bash
|
||||||
|
########################################################################
|
||||||
|
# Author: Fred (support@qo-op.com)
|
||||||
|
# Version: 0.1
|
||||||
|
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||||
|
########################################################################
|
||||||
|
# SCRIPT INTERACTIF POUR AJOUTER UN FICHIER à ASTROPORT/KODI
|
||||||
|
#
|
||||||
|
# 1. CAT: film, serie
|
||||||
|
# 2. TMDB: ID de la fiche sur https://www.themoviedb.org/
|
||||||
|
# 3. TITLE: Titre de la vidéo
|
||||||
|
# 4. YEAR: Année de la vidéo
|
||||||
|
# 5. RES: Résolution 1080p, 4K, SD, 720, HD
|
||||||
|
# 6. SAISON: Pour les séries, c'est le numéro de saison.
|
||||||
|
# Pour un film, le champ SAISON est utilisé pour renseigner la Saga
|
||||||
|
# 7. GENRES: Action, Aventure, Fantastique, Animation, etc (choix multiple).
|
||||||
|
# 8. GROUPES: Stocker la clef IPNS du MEDIAKEY.
|
||||||
|
#
|
||||||
|
# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films
|
||||||
|
########################################################################
|
||||||
|
MY_PATH="`dirname \"$0\"`" # relative
|
||||||
|
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||||
|
ME="${0##*/}"
|
||||||
|
|
||||||
|
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||||
|
########################################################################
|
||||||
|
[[ $(which ipfs) == "" ]] && echo "ERREUR! Installez ipfs" && echo "wget https://git.p2p.legal/axiom-team/astrXbian/raw/master/.install/ipfs_alone.sh -O /tmp/ipfs_install.sh && chmod +x /tmp/ipfs_install.sh && /tmp/ipfs_install.sh" && exit 1
|
||||||
|
[[ $(which zenity) == "" ]] && echo "ERREUR! Installez zenity" && echo "sudo apt install zenity" && exit 1
|
||||||
|
[[ $(which ffmpeg) == "" ]] && echo "ERREUR! Installez ffmpeg" && echo "sudo apt install ffmpeg" && exit 1
|
||||||
|
[[ $(which xdpyinfo) == "" ]] && echo "ERREUR! Installez x11-utils" && echo "sudo apt install x11-utils" && exit 1
|
||||||
|
|
||||||
|
URL="$1"
|
||||||
|
if [ $URL ]; then
|
||||||
|
echo "URL: $URL"
|
||||||
|
REVSOURCE="$(echo "$URL" | awk -F/ '{print $3}' | rev)_"
|
||||||
|
[ ! $2 ] && IMPORT=$(zenity --entry --width 640 --title="$URL => Astroport" --text="Que copier depuis cette source ?" --entry-text="Video" MP3 Web) || IMPORT="Youtube"
|
||||||
|
[[ $IMPORT == "Video" ]] && IMPORT="Youtube"
|
||||||
|
CHOICE="$IMPORT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ $CHOICE == "Web" ]] && CHOICE=$(zenity --entry --width 640 --title="$URL => Astroport" --text="Cette source Web est à enregistrer comme " --entry-text="Page" WebSite)
|
||||||
|
|
||||||
|
# REMOVE GtkDialog errors for zenity
|
||||||
|
shopt -s expand_aliases
|
||||||
|
alias zenity='zenity 2> >(grep -v GtkDialog >&2)'
|
||||||
|
|
||||||
|
# GET SCREEN DIMENSIONS
|
||||||
|
screen=$(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
|
||||||
|
width=$(echo $screen | cut -d 'x' -f 1)
|
||||||
|
height=$(echo $screen | cut -d 'x' -f 2)
|
||||||
|
large=$((width-300))
|
||||||
|
haut=$((height-200))
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||||
|
[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XGUID="$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title)" || XGUID="$(cat /etc/hostname)"
|
||||||
|
[[ -f ~/.zen/ipfs/.$IPFSNODEID/_xbian.zuid ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/_xbian.zuid)
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## CADRE EXCEPTION COPIE PRIVE
|
||||||
|
# https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006278917/2008-12-11/
|
||||||
|
if [[ ! -f ~/.zen/legal ]]; then
|
||||||
|
zenity --width ${large} --height=${haut} --text-info \
|
||||||
|
--title="Action conforme avec le Code de la propriété intellectuelle" \
|
||||||
|
--html \
|
||||||
|
--url="https://fr.wikipedia.org/wiki/Droit_d%27auteur_en_France#Les_exceptions_au_droit_d%E2%80%99auteur" \
|
||||||
|
--checkbox="J'ai lu et j'accepte les termes."
|
||||||
|
|
||||||
|
case $? in
|
||||||
|
0)
|
||||||
|
echo "AUTORISATION COPIE PRIVE ASTROPORT OK !"
|
||||||
|
echo "$G1PUB" > ~/.zen/legal
|
||||||
|
# next step
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
echo "Refus conditions"
|
||||||
|
rm -f ~/.zen/legal
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
-1)
|
||||||
|
echo "Erreur."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
## CHECK IF ASTROPORT/CRON/IPFS IS RUNNING
|
||||||
|
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||||
|
[[ ! $YOU ]] && RUN=$(zenity --entry --width 300 --title="Astroport IPFS OFF" --text="Activer Astroport ?" --entry-text="OUI" NON) && [[ $RUN == "" || $RUN == "NON" ]] && exit 1
|
||||||
|
[[ $YOU && ! $1 ]] && RUN=$(zenity --entry --width 300 --title="Astroport IPFS ON" --text="Désactiver Astroport ? Non, vous voulez ajouter un Media?" --entry-text="OUI" NON)
|
||||||
|
## DES/ACTIVATION ASTROPORT
|
||||||
|
if [[ $RUN == "OUI" ]]; then
|
||||||
|
STRAP=$(ipfs bootstrap)
|
||||||
|
BOOT=$(zenity --entry --width 300 --title="Catégorie" --text="$STRAP Changez de Bootstrap" --entry-text="Aucun" astrXbian Public)
|
||||||
|
[[ $BOOT == "Aucun" ]] && ipfs bootstrap rm --all
|
||||||
|
[[ $BOOT == "astrXbian" ]] && for bootnode in $(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#"); do ipfs bootstrap add $bootnode; done
|
||||||
|
[[ $BOOT == "Public" ]] && for bootnode in $(cat ~/.zen/astrXbian/A_boostrap_public.txt | grep -Ev "#"); do ipfs bootstrap add $bootnode; done
|
||||||
|
REP=$(~/.zen/astrXbian/zen/cron_VRFY.sh) && zenity --warning --width 600 --text "$REP"
|
||||||
|
fi
|
||||||
|
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1)
|
||||||
|
[[ $YOU == "" ]] && echo "IPFS not running" && exit 1
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CHOOSE CATEGORY (remove anime, not working!)
|
||||||
|
[[ $CHOICE == "" ]] && CHOICE=$(zenity --entry --width 300 --title="Catégorie" --text="Choisissez la catégorie de votre media" --entry-text="Film" Serie Youtube Video)
|
||||||
|
[[ $CHOICE == "" ]] && exit 1
|
||||||
|
|
||||||
|
# LOWER CARACTERS
|
||||||
|
CAT=$(echo "${CHOICE}" | awk '{print tolower($0)}')
|
||||||
|
# UPPER CARACTERS
|
||||||
|
CHOICE=$(echo "${CAT}" | awk '{print toupper($0)}')
|
||||||
|
|
||||||
|
PREFIX=$(echo "${CAT}" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, S, A, Y, M ... P W
|
||||||
|
[[ $PREFIX == "" ]] && exit 1
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
case ${CAT} in
|
||||||
|
########################################################################
|
||||||
|
# CASE ## YOUTUBE
|
||||||
|
# _ _
|
||||||
|
# _ _ ___ _ _| |_ _ _| |__ ___
|
||||||
|
#| | | |/ _ \| | | | __| | | | '_ \ / _ \
|
||||||
|
#| |_| | (_) | |_| | |_| |_| | |_) | __/
|
||||||
|
# \__, |\___/ \__,_|\__|\__,_|_.__/ \___|
|
||||||
|
# |___/
|
||||||
|
########################################################################
|
||||||
|
youtube)
|
||||||
|
|
||||||
|
YTURL="$URL"
|
||||||
|
[[ $YTURL == "" ]] && YTURL=$(zenity --entry --width 300 --title "Lien ou identifiant à copier" --text "Indiquez le lien (URL) ou l'ID de la vidéo" --entry-text="")
|
||||||
|
[[ $YTURL == "" ]] && exit 1
|
||||||
|
|
||||||
|
REVSOURCE="$(echo "$YTURL" | awk -F/ '{print $3}' | rev)_"
|
||||||
|
|
||||||
|
# Create TEMP directory to copy $YID_$TITLE.$FILE_EXT
|
||||||
|
YTEMP="$HOME/astroport/tmp/$(date -u +%s%N | cut -b1-13)"
|
||||||
|
mkdir -p ${YTEMP}
|
||||||
|
|
||||||
|
# youtube-dl $YTURL
|
||||||
|
echo "VIDEO $YTURL"
|
||||||
|
if [[ ! -f /usr/local/bin/youtube-dl ]]; then
|
||||||
|
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
|
||||||
|
sudo chmod a+rx /usr/local/bin/youtube-dl
|
||||||
|
fi
|
||||||
|
/usr/local/bin/youtube-dl -f '[height=360]/best' \
|
||||||
|
--no-playlist --write-info-json \
|
||||||
|
--no-mtime -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" $YTURL
|
||||||
|
|
||||||
|
# Get filename, extract ID, make destination dir and move copy.
|
||||||
|
YFILE=$(ls -S ${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)
|
||||||
|
MEDIAID="$REVSOURCE${YID}"
|
||||||
|
TITLE="${YNAME%.*}"
|
||||||
|
MEDIAKEY="YOUTUBE_${MEDIAID}"
|
||||||
|
## CORRECT PARAMETERS to Make Kodi compatible YASTRXBIAN FILE
|
||||||
|
|
||||||
|
[ ! $2 ] && 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 ${XZUID// /-}) || GENRES="${XZUID// /-}"
|
||||||
|
|
||||||
|
# FORMAT GENRES genre1|genre2|genre3
|
||||||
|
|
||||||
|
FILE_PATH="$HOME/astroport/youtube/$MEDIAID"
|
||||||
|
mkdir -p ${FILE_PATH} && mv -f ${YTEMP}/* ${FILE_PATH}/
|
||||||
|
# rename FILE_NAME to YNAME (URL clean)
|
||||||
|
mv "${FILE_PATH}/${FILE_NAME}" "${FILE_PATH}/${YNAME}" && FILE_NAME="${YNAME}"
|
||||||
|
# get & rename video.json
|
||||||
|
jsonfile=$(ls ${FILE_PATH}/*.json)
|
||||||
|
mv "${jsonfile}" "${FILE_PATH}/video.json"
|
||||||
|
|
||||||
|
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}/${MEDIAID}/ajouter_video.txt" and video.json
|
||||||
|
URLENCODE_FILE_NAME=$(echo ${FILE_NAME} | jq -Rr @uri)
|
||||||
|
echo "youtube;${MEDIAID};$(date -u +%s%N | cut -b1-13);${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||||
|
|
||||||
|
# _IPFSREPFILEID_ is replaced later
|
||||||
|
|
||||||
|
rm -Rf ${YTEMP}
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CASE ## WEB
|
||||||
|
web)
|
||||||
|
|
||||||
|
## wget current URL -> index.html ## TEST ## TEST httrack ??
|
||||||
|
[[ ! $(which httrack) ]] && zenity --warning --width ${large} --text "Utilitaire de copie de site web absent.. Lancez la commande 'sudo apt install httrack'" && exit 1
|
||||||
|
echo "httrack --mirror $URL"
|
||||||
|
FILE_NAME="index.html"
|
||||||
|
REVSOURCE="$(echo "$URL" | rev | sha256sum | cut -d ' ' -f 1)_"; echo $REVSOURCE # URL="https://discuss.ipfs.io/t/limit-ipfs-get-command/3573/6"
|
||||||
|
MEDIAID="$REVSOURCE" # MEDIAID=1252ff59950395070a0cc56bb058cbb1ccfd2f8d8a32476acaf472f62b14d97d_
|
||||||
|
MEDIAKEY="WWW_${MEDIAID}" # MEDIAKEY=PAGE_1252ff59950395070a0cc56bb058cbb1ccfd2f8d8a32476acaf472f62b14d97d_
|
||||||
|
FILE_PATH="$HOME/astroport/web/$MEDIAID";
|
||||||
|
mkdir -p $FILE_PATH
|
||||||
|
|
||||||
|
wget -mpck --user-agent="" -e robots=off --wait 1 "$URL" > ${FILE_PATH}/
|
||||||
|
|
||||||
|
echo "web;${MEDIAID};$(date -u +%s%N | cut -b1-13);${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$FILE_NAME" > ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||||
|
|
||||||
|
zenity --warning --width ${large} --text "Vérifiez que la copie de votre site se trouve bien dans ${FILE_PATH}/"
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CASE ## PAGE
|
||||||
|
page)
|
||||||
|
|
||||||
|
## record one page to PDF
|
||||||
|
[[ ! $(which chromium) ]] && zenity --warning --width ${large} --text "Utilitaire de copie de page web absent.. Lancez la commande 'sudo apt install chromium'" && exit 1
|
||||||
|
cd /tmp/ && rm -f output.pdf
|
||||||
|
chromium --headless --no-sandbox --print-to-pdf $URL
|
||||||
|
|
||||||
|
TITLE=$(zenity --entry --width 480 --title "Titre" --text "Quel nom de fichier à donner à cette page ? " --entry-text="${URL}")
|
||||||
|
[[ $TITLE == "" ]] && exit 1
|
||||||
|
FILE_NAME="$(echo "${TITLE}" | detox --inline).pdf" ## TODO make it better
|
||||||
|
|
||||||
|
MEDIAID="$REVSOURCE$(echo "${TITLE}" | detox --inline)"
|
||||||
|
MEDIAKEY="PAGE_${MEDIAID}"
|
||||||
|
FILE_PATH="$HOME/astroport/page/$MEDIAID"
|
||||||
|
mkdir -p ${FILE_PATH} && mv output.pdf ${FILE_PATH}/${FILE_NAME}
|
||||||
|
|
||||||
|
echo "page;${MEDIAID};$(date -u +%s%N | cut -b1-13);${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$FILE_NAME" > ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CASE ## MP3
|
||||||
|
# _____
|
||||||
|
# _ __ ___ _ __|___ /
|
||||||
|
#| '_ ` _ \| '_ \ |_ \
|
||||||
|
#| | | | | | |_) |__) |
|
||||||
|
#|_| |_| |_| .__/____/
|
||||||
|
# |_|
|
||||||
|
########################################################################
|
||||||
|
mp3)
|
||||||
|
|
||||||
|
zenity --warning --width 600 --text 'DEV ZONE . Please Participate https://git.p2p.legal'
|
||||||
|
|
||||||
|
# Create TEMP directory
|
||||||
|
YTEMP="$HOME/astroport/tmp/$(date -u +%s%N | cut -b1-13)"
|
||||||
|
mkdir -p ${YTEMP}
|
||||||
|
|
||||||
|
artist=$(zenity --entry --width 400 --title "Extraction MP3 depuis Youtube" --text "Artiste recherché ou Lien Youtube" --entry-text="")
|
||||||
|
[[ $artist == "" ]] && exit 1
|
||||||
|
|
||||||
|
## CHECK if artist is LINK or ID
|
||||||
|
length=${#artist}
|
||||||
|
islink=$(echo "$artist" | grep "http")
|
||||||
|
if [[ ! $islink && $length != 11 ]]
|
||||||
|
then
|
||||||
|
# Ask for song name
|
||||||
|
song=$(zenity --entry --width 300 --title "Titre à chercher sur Youtube" --text "Titre recherché" --entry-text="")
|
||||||
|
[[ $song == "" ]] && exit 1
|
||||||
|
else
|
||||||
|
song=$(zenity --entry --width 300 --title "Confirmer ID" --text "Titre recherché (ou confirmer la saisie précédente)" --entry-text="$artist")
|
||||||
|
[[ "$song" == "$artist" ]] && song=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download mp3 from 1st youtube search video result (--write-info-json)
|
||||||
|
/usr/local/bin/youtube-dl --default-search ytsearch1: \
|
||||||
|
--ignore-errors --no-mtime \
|
||||||
|
--embed-thumbnail --metadata-from-title "%(artist)s - %(title)s" --add-metadata \
|
||||||
|
--extract-audio --audio-format mp3 -o "${YTEMP}/%(id)s&%(title)s.%(ext)s" "$artist $song"
|
||||||
|
|
||||||
|
ls ${YTEMP}
|
||||||
|
# Get filename, extract ID, make destination dir and move copy.
|
||||||
|
YFILE=$(ls -t ${YTEMP} | head -n 1)
|
||||||
|
FILE_NAME="$(basename "${YFILE}")"
|
||||||
|
FILE_EXT="${FILE_NAME##*.}"
|
||||||
|
|
||||||
|
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)"
|
||||||
|
|
||||||
|
[[ ! $islink && "$song" != "" ]] && FILE_PATH="$HOME/astroport/$CAT/$artist/_o-o_" \
|
||||||
|
|| FILE_PATH="$HOME/astroport/$CAT/${YID}"
|
||||||
|
|
||||||
|
mkdir -p "${FILE_PATH}" && mv -f ${YTEMP}/* "${FILE_PATH}/"
|
||||||
|
# Remove "&" from FILE_NAME rename to YNAME
|
||||||
|
mv "${FILE_PATH}/${FILE_NAME}" "${FILE_PATH}/${YNAME}" && FILE_NAME="${YNAME}"
|
||||||
|
|
||||||
|
MEDIAID="${YID}"
|
||||||
|
TITLE="${YNAME%.*}"
|
||||||
|
GENRES="[\"$XZUID\"]"
|
||||||
|
GROUPES="_IPNSKEY_" # USE GROUPS TO RECORD IPNS MEDIAKEY
|
||||||
|
MEDIAKEY="MP3_$MEDIAID"
|
||||||
|
|
||||||
|
rm -Rf ${YTEMP}
|
||||||
|
# zenity --warning --width ${large} --text "MP3 copié"
|
||||||
|
echo "~/.zen/astrXbian/zen/new_mp3_in_astroport.sh \"${FILE_PATH}/\" \"${FILE_NAME}\""
|
||||||
|
~/.zen/astrXbian/zen/new_mp3_in_astroport.sh "${FILE_PATH}/" "${FILE_NAME}" > /tmp/${CHOICE}_${MEDIAID}.log 2>&1
|
||||||
|
|
||||||
|
cat /tmp/${CHOICE}_${MEDIAID}.log
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# __ _ _
|
||||||
|
# / _(_) |_ __ ___
|
||||||
|
#| |_| | | '_ ` _ \
|
||||||
|
#| _| | | | | | | |
|
||||||
|
#|_| |_|_|_| |_| |_| THE MOVIE DATABASE INDEX
|
||||||
|
#
|
||||||
|
########################################################################
|
||||||
|
film | serie)
|
||||||
|
|
||||||
|
# SELECT FILE TO ADD TO ASTROPORT/KODI
|
||||||
|
FILE=$(zenity --file-selection --title="Sélectionner le fichier à ajouter")
|
||||||
|
echo "${FILE}"
|
||||||
|
[[ $FILE == "" ]] && exit 1
|
||||||
|
|
||||||
|
# Remove file extension to get file name => STITLE
|
||||||
|
FILE_PATH="$(dirname "${FILE}")"
|
||||||
|
FILE_NAME="$(basename "${FILE}")"
|
||||||
|
FILE_EXT="${FILE_NAME##*.}"
|
||||||
|
FILE_TITLE="${FILE_NAME%.*}"
|
||||||
|
|
||||||
|
# OPEN default browser and search TMDB
|
||||||
|
zenity --question --width 300 --text "Ouvrir https://www.themoviedb.org pou récupérer le numéro d'identification de $(echo ${FILE_TITLE} | sed 's/_/%20/g') ?"
|
||||||
|
[ $? == 0 ] && xdg-open "https://www.themoviedb.org/search?query=$(echo ${FILE_TITLE} | sed 's/_/%20/g')"
|
||||||
|
|
||||||
|
MEDIAID=$(zenity --entry --title="Identification TMDB" --text="Copiez le nom de la page du film. Ex: 301528-toy-story-4 pour une adresse https://www.themoviedb.org/movie/301528-toy-story-4)" --entry-text="")
|
||||||
|
[[ $MEDIAID == "" ]] && exit 1
|
||||||
|
CMED=$(echo $MEDIAID | cut -d '-' -f 1)
|
||||||
|
TMTL=$(echo $MEDIAID | cut -d '-' -f 2-) # contient la fin du nom de fichier tmdb (peut servir?)
|
||||||
|
|
||||||
|
if ! [[ "$CMED" =~ ^[0-9]+$ ]]
|
||||||
|
then
|
||||||
|
zenity --warning --width ${large} --text "Vous devez renseigner un numéro! Merci de recommencer... Seules les vidéos référencées sur The Movie Database sont acceptées." && exit 1
|
||||||
|
fi
|
||||||
|
MEDIAID=$CMED
|
||||||
|
MEDIAKEY="TMDB_$MEDIAID"
|
||||||
|
|
||||||
|
# VIDEO TITLE
|
||||||
|
TITLE=$(zenity --entry --width 300 --title "Titre" --text "Indiquez le titre de la vidéo" --entry-text="${FILE_TITLE}")
|
||||||
|
[[ $TITLE == "" ]] && exit 1
|
||||||
|
TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TITLE (NO ;)
|
||||||
|
|
||||||
|
# VIDEO YEAR
|
||||||
|
YEAR=$(zenity --entry --width 300 --title "Année" --text "Indiquez année de la vidéo. Exemple: 1985" --entry-text="")
|
||||||
|
|
||||||
|
# VIDEO RESOLUTION
|
||||||
|
FILE_RES=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "${FILE}" | cut -d "x" -f 2)
|
||||||
|
RES=${FILE_RES%?}0p # Rounding. Replace last digit with 0
|
||||||
|
#RES=$(zenity --entry --width 300 --title="Résolution" --text="Résolution de la vidéo" --entry-text="${FILE_RES}" SD HD 4K 360p 480p 720p 1080p)
|
||||||
|
|
||||||
|
# VIDEO SEASON or SAGA
|
||||||
|
[[ "${CAT}" == "serie" ]] && SAISON=$(zenity --entry --width 300 --title "${CHOICE} Saison" --text "Indiquez SAISON et EPISODE. Exemple: S02E05" --entry-text="")
|
||||||
|
[[ "${CAT}" == "film" ]] && SAISON=$(zenity --entry --width 300 --title "${CHOICE} Saga" --text "Indiquez une SAGA (optionnel). Exemple: James Bond" --entry-text="")
|
||||||
|
|
||||||
|
# VIDEO GENRES
|
||||||
|
FILM_GENRES=$(zenity --list --checklist --title="GENRE" --height=${haut}\
|
||||||
|
--text="Choisissez le(s) genre(s) de la vidéo \"${TITLE}\""\
|
||||||
|
--column="Use"\
|
||||||
|
--column="Feature"\
|
||||||
|
FALSE '+18'\
|
||||||
|
FALSE Action\
|
||||||
|
FALSE Animation\
|
||||||
|
FALSE 'Arts martiaux'\
|
||||||
|
FALSE Aventure\
|
||||||
|
FALSE Autre\
|
||||||
|
FALSE Biographie\
|
||||||
|
FALSE Biopic\
|
||||||
|
FALSE Comedie\
|
||||||
|
FALSE 'Comedie dramatique'\
|
||||||
|
FALSE 'Comedie musicale'\
|
||||||
|
FALSE Crime\
|
||||||
|
FALSE Documentaire\
|
||||||
|
FALSE Drame\
|
||||||
|
FALSE Divers\
|
||||||
|
FALSE Educatif\
|
||||||
|
FALSE Enfant\
|
||||||
|
FALSE 'Epouvante horreur'\
|
||||||
|
FALSE Espionnage\
|
||||||
|
FALSE Famille\
|
||||||
|
FALSE Fantastique\
|
||||||
|
FALSE Guerre\
|
||||||
|
FALSE Histoire\
|
||||||
|
FALSE Historique\
|
||||||
|
FALSE Judiciaire\
|
||||||
|
FALSE Opera\
|
||||||
|
FALSE Medical\
|
||||||
|
FALSE Musique\
|
||||||
|
FALSE Mystere\
|
||||||
|
FALSE Peplum\
|
||||||
|
FALSE Policier\
|
||||||
|
FALSE Romance\
|
||||||
|
FALSE 'Science fiction'\
|
||||||
|
FALSE Soap\
|
||||||
|
FALSE Spectacle\
|
||||||
|
FALSE Sport\
|
||||||
|
FALSE Telefilm\
|
||||||
|
FALSE Thriller\
|
||||||
|
FALSE Western\
|
||||||
|
TRUE ${XZUID// /-})
|
||||||
|
|
||||||
|
# FORMAT GENRES ["genre1","genre2"]
|
||||||
|
GENRES="[\"$(echo ${FILM_GENRES} | sed s/\|/\",\"/g)\"]"
|
||||||
|
|
||||||
|
# DEBUG VERIFICATION
|
||||||
|
# zenity --question --width ${large} --title "EMBARQUEMENT ASTROPORT! OK?"\
|
||||||
|
# --text "${FILE_NAME} (${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};${GROUPES};${RES})"
|
||||||
|
# [ $? == 1 ] && echo "ANNULATION." && exit 1
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Screen capture is used as thumbnail
|
||||||
|
########################################################################
|
||||||
|
zenity --warning --width 300 --text "Cliquez nous capturons votre écran comme vignette MEDIA"
|
||||||
|
sleep 1
|
||||||
|
[[ $(echo $DISPLAY | cut -d ':' -f 1) == "" ]] && import -window root /tmp/screen.png
|
||||||
|
|
||||||
|
|
||||||
|
###################################
|
||||||
|
### MOVING FILE TO ~/astroport ####
|
||||||
|
###################################
|
||||||
|
mkdir -p ~/astroport/${CAT}/${MEDIAID}/
|
||||||
|
mv -f "${FILE_PATH}/${FILE_NAME}" "$HOME/astroport/${CAT}/${MEDIAID}/${TITLE}.${FILE_EXT}"
|
||||||
|
mv /tmp/screen.png ~/astroport/${CAT}/${MEDIAID}/screen.png
|
||||||
|
|
||||||
|
if [ $? == 0 ]; then
|
||||||
|
zenity --warning --width ${large} --text "Votre fichier ~/astroport/${CAT}/${MEDIAID}/${TITLE}.${FILE_EXT} est prêt à embarquer. Cliquez sur OK, nous allons préparer son script d'ajout à Astroport..."
|
||||||
|
else
|
||||||
|
zenity --warning --width ${large} --text "Impossible de déplacer votre fichier ${FILE_PATH}/${FILE_NAME} vers ~/astroport - EXIT -"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FILE_NAME="${TITLE}.${FILE_EXT}"
|
||||||
|
|
||||||
|
|
||||||
|
## CREATE "~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt"
|
||||||
|
URLENCODE_FILE_NAME=$(echo ${FILE_NAME} | jq -Rr @uri)
|
||||||
|
echo "${CAT};${MEDIAID};${YEAR};${TITLE};${SAISON};${GENRES};_IPNSKEY_;${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||||
|
# _IPFSREPFILEID_ is replaced later
|
||||||
|
|
||||||
|
;;
|
||||||
|
# _ _
|
||||||
|
#__ _(_) __| | ___ ___
|
||||||
|
#\ \ / / |/ _` |/ _ \/ _ \
|
||||||
|
# \ V /| | (_| | __/ (_) |
|
||||||
|
# \_/ |_|\__,_|\___|\___/
|
||||||
|
# TIMESTAMP INDEX
|
||||||
|
|
||||||
|
video)
|
||||||
|
|
||||||
|
zenity --warning --width 600 --text 'DEVELOPPEMENT. SVP. Inscrivez-vous sur https://git.p2p.legal'
|
||||||
|
|
||||||
|
## GENERAL MEDIAKEY for uploaded video. Title + Decription + hashtag + hashipfs
|
||||||
|
# SELECT FILE TO ADD TO ASTROPORT/KODI
|
||||||
|
FILE=$(zenity --file-selection --title="Sélectionner le fichier vidéo à ajouter")
|
||||||
|
echo "${FILE}"
|
||||||
|
[[ $FILE == "" ]] && exit 1
|
||||||
|
|
||||||
|
# Remove file extension to get file name => STITLE
|
||||||
|
FILE_PATH="$(dirname "${FILE}")"
|
||||||
|
FILE_NAME="$(basename "${FILE}")"
|
||||||
|
FILE_EXT="${FILE_NAME##*.}"
|
||||||
|
FILE_TITLE="${FILE_NAME%.*}"
|
||||||
|
# VIDEO TITLE
|
||||||
|
TITLE=$(zenity --entry --width 300 --title "Titre" --text "Indiquez le titre de la vidéo" --entry-text="${FILE_TITLE}")
|
||||||
|
[[ $TITLE == "" ]] && exit 1
|
||||||
|
TITLE=$(echo "${TITLE}" | sed "s/[(][^)]*[)]//g" | sed -e 's/;/_/g' ) # Clean TITLE (NO ;)
|
||||||
|
|
||||||
|
OUTPUT=$(zenity --forms --width ${large} --title="METADATA" --text="Ajouter des métadonnées" --separator=";" --add-entry="Sous titres" --add-entry="Hashtag(s)")
|
||||||
|
[[ $? != 0 ]] && echo "FAIL" && exit 1
|
||||||
|
|
||||||
|
DESCRIPTION=$(awk -F ';' '{print $1}' <<<$OUTPUT)
|
||||||
|
HASHTAG=$(awk -F ';' '{print $2}' <<<$OUTPUT)
|
||||||
|
|
||||||
|
## video_timestamp INDEX
|
||||||
|
MEDIAID="$(date -u +%s%N | cut -b1-13)"
|
||||||
|
mkdir -p ~/astroport/${CAT}/${MEDIAID}/
|
||||||
|
MEDIAKEY="VIDEO_${MEDIAID}"
|
||||||
|
|
||||||
|
## CREATE SIMPLE JSON
|
||||||
|
jq -n --arg ts "$MEDIAID" --arg title "$TITLE" --arg desc "$DESCRIPTION" --arg htag "$HASHTAG" '{"timestamp":$ts,"ipfs":"_IPFSREPFILEID_","ipns":"_IPNSKEY_","title":$title,"desc":$desc,"htag":$htag}' > ~/astroport/${CAT}/${MEDIAID}/video.json
|
||||||
|
## MOVE FILE TO IMPORT ZONE
|
||||||
|
mv -f "${FILE_PATH}/${FILE_NAME}" "$HOME/astroport/${CAT}/${MEDIAID}/${TITLE}.${FILE_EXT}"
|
||||||
|
FILE_NAME="${TITLE}.${FILE_EXT}"
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CASE ## DEFAULT
|
||||||
|
########################################################################
|
||||||
|
*)
|
||||||
|
|
||||||
|
zenity --warning --width ${large} --text "Impossible d'interpréter votre commande $CAT"
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
## Extract thumbnail
|
||||||
|
MIME=$(file --mime-type $HOME/astroport/${CAT}/${MEDIAID}/${TITLE}.${FILE_EXT} | cut -d ' ' -f 2)
|
||||||
|
|
||||||
|
[[ $(echo $MIME | grep video) ]] && ffmpeg -i $HOME/astroport/${CAT}/${MEDIAID}/${TITLE}.${FILE_EXT} -r 1/300 -vf scale=-1:120 -vcodec png $HOME/astroport/${CAT}/${MEDIAID}/${CAT}.png
|
||||||
|
[[ ! -f /astroport/${CAT}/${MEDIAID}/${CAT}.png ]] && echo "DEFAULT THUMBNAIL NEEDED"
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# ADD $FILE to IPFS / ASTROPORT / KODI
|
||||||
|
echo "new_file_in_astroport.sh \"$HOME/astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}\""
|
||||||
|
[[ -f ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt ]] && cat ~/astroport/${CAT}/${MEDIAID}/ajouter_video.txt
|
||||||
|
# LOG NOISE # [[ -f ~/astroport/${CAT}/${MEDIAID}/video.json ]] && cat ~/astroport/${CAT}/${MEDIAID}/video.json
|
||||||
|
########################################################################
|
||||||
|
## CREATION DU FICHIER ajouter_video.txt OK
|
||||||
|
########################################################################
|
||||||
|
### AJOUT DANS IPFS #######################################################
|
||||||
|
########################################################################
|
||||||
|
####################################new_file_in_astroport.sh##################
|
||||||
|
########################################################################
|
||||||
|
[[ "$CAT" == "film" || "$CAT" == "serie" ]] && CHOICE="TMDB"
|
||||||
|
|
||||||
|
timestamp=$(date -u +%s%N | cut -b1-13)
|
||||||
|
|
||||||
|
|
||||||
|
## AUTO DESTRUCTIVE ADD TO ASTROPORT IPFS SCRIPT
|
||||||
|
echo "MEDIAKEY=${MEDIAKEY}" > ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
[[ $CHOICE == "TMDB" ]] && echo "echo \"Encoder ${FILE_NAME} en h265 avant import ? Tapez sur ENTER.. Sinon saisissez qqch avant...\"
|
||||||
|
reponse=\$1
|
||||||
|
[[ ! \$reponse ]] && read reponse
|
||||||
|
if [[ ! \$reponse ]]; then
|
||||||
|
ffmpeg -i \"$HOME/astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" -vcodec libx265 -crf 28 $HOME/astroport/${MEDIAID}.mp4
|
||||||
|
mv \"$HOME/astroport/${CAT}/${MEDIAID}/${FILE_NAME}\" \"$HOME/astroport/${CAT}/${MEDIAID}/${FILE_NAME}.old\"
|
||||||
|
mv $HOME/astroport/${MEDIAID}.mp4 \"$HOME/astroport/${CAT}/${MEDIAID}/${FILE_NAME}.mp4\"
|
||||||
|
~/.zen/astrXbian/zen/new_file_in_astroport.sh \"$HOME/astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}.mp4\"
|
||||||
|
else" >> ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
|
||||||
|
echo "~/.zen/astrXbian/zen/new_file_in_astroport.sh \"$HOME/astroport/${CAT}/${MEDIAID}/\" \"${FILE_NAME}\" " >> ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
|
||||||
|
[[ $CHOICE == "TMDB" ]] && echo "fi" >> ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
|
||||||
|
echo "rm -f /tmp/\${MEDIAKEY}.pass
|
||||||
|
rm -f /tmp/\${MEDIAKEY}.dunikey ## REMOVE KEYS
|
||||||
|
echo 'Si tout est OK, appuyez dur ENTER, sinon ESC'
|
||||||
|
[[ ! \$1 ]] && read finish
|
||||||
|
rm ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
" >> ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
chmod +x ~/astroport/Add_${MEDIAKEY}_script.sh
|
||||||
|
|
||||||
|
## DELAYED IPFS ADD TO ASTROPORT ... COULD BE MANAGED BY CRON
|
||||||
|
|
||||||
|
# ~/.zen/astrXbian/zen/new_file_in_astroport.sh "$HOME/astroport/${CAT}/${MEDIAID}/" "${FILE_NAME}" > /tmp/${MEDIAKEY}.log 2>&1
|
||||||
|
# [ ! $? == 0 ] && zenity --warning --width 300 --text "Désolé une erreur est survenue... Signalez ce log /tmp/${MEDIAKEY}.log sur https://git.p2p.legal/axiom-team/astrXbian" && exit 1
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
MEDIAPUBKEY=$(cat $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/MEDIAPUBKEY)
|
||||||
|
|
||||||
|
#[ ! $2 ] && zenity --width=500 --height=500 --text-info \
|
||||||
|
# --title="QR CODE MEDIA ${MEDIAKEY} (PASS=$(cat /tmp/${MEDIAKEY}.pass))" \
|
||||||
|
# --html \
|
||||||
|
# --url="http://127.0.0.1:8080/ipns/${IPFSNODEID}/.${IPFSNODEID}/KEY/${MEDIAKEY}/QR.png" \
|
||||||
|
# --checkbox="Je m'engage à respecter les auteurs et promet d'offrir la Monnaie Libre collectée à qui de droit."
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
echo "# ZENBALANCE for ${MEDIAKEY} , WALLET $MEDIAPUBKEY"
|
||||||
|
########################################################################
|
||||||
|
FILE_BSIZE=$(du -b "$HOME/astroport/${CAT}/${MEDIAID}/${FILE_NAME}" | awk '{print $1}')
|
||||||
|
FILE_SIZE=$(echo "${FILE_BSIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
|
||||||
|
|
||||||
|
#G1BALANCE=$(~/.zen/astrXbian/zen/jaklis/jaklis.py balance -p $G1PUB) && [[ "$G1BALANCE" == "null" ]] && G1BALANCE=0 || G1BALANCE=$(echo "$G1BALANCE" | cut -d '.' -f 1)
|
||||||
|
#if [[ $G1BALANCE -gt 0 ]]; then
|
||||||
|
# [ ! $2 ] && G1AMOUNT=$(zenity --entry --width 400 --title "VIRER DE LA MONNAIE LIBRE AU MEDIAKEY (MAX $G1BALANCE)" --text "Combien de JUNE (G1) souhaitez-vous offrir à ce MEDIA ($FILE_SIZE)" --entry-text="")
|
||||||
|
# [[ ! "$G1AMOUNT" =~ ^[0-9]+$ ]] && G1AMOUNT=0
|
||||||
|
# ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey pay -p ${MEDIAPUBKEY} -a $G1AMOUNT -c "#ASTROPORT:${MEDIAKEY} DON"
|
||||||
|
# ZENBALANCE=$(echo "100 * $G1AMOUNT" | bc -l | cut -d '.' -f 1)
|
||||||
|
#else
|
||||||
|
ZENBALANCE=0
|
||||||
|
#fi
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
zenity --question --width 300 --text "OK! ~/astroport/Add_${MEDIAKEY}_script.sh ($FILE_SIZE). Voulez-vous lancer immédiatement l'ajout dans Astroport ?"; \
|
||||||
|
[ $? == 0 ] && bash ~/astroport/Add_${MEDIAKEY}_script.sh "noh265" \
|
||||||
|
&& zenity --warning --width 300 --text "Ajoutez ce media dans vos journaux public 'qo-op' ou administratif 'moa'" \
|
||||||
|
&& [[ $(cat ~/.zen/game/players/.current/.playerns 2>/dev/null) ]] \
|
||||||
|
&& xdg-open "http://127.0.0.1:8080/ipns/$(cat ~/.zen/game/players/.current/.playerns)" \
|
||||||
|
|| ( zenity --warning --width 300 --text "Désolé une erreur est survenue... /tmp/${MEDIAKEY}.log" && exit 1 )\
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
echo "${MEDIAKEY} = RECORDED TO IPFS."
|
||||||
|
cat /tmp/${MEDIAKEY}.log
|
|
@ -0,0 +1,511 @@
|
||||||
|
#!/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##*/}"
|
||||||
|
countMErunning=$(ps auxf --sort=+utime | grep -w $ME | grep -v -E 'color=auto|grep' | wc -l)
|
||||||
|
[[ $countMErunning -gt 2 ]] && echo "$ME already running $countMErunning time" && exit 0
|
||||||
|
start=`date +%s`
|
||||||
|
|
||||||
|
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1);
|
||||||
|
IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID)
|
||||||
|
[[ ! $IPFSNODEID ]] && echo 'ERROR missing IPFS Node id !! IPFS is not responding !?' && exit 1
|
||||||
|
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:8080/.$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"
|
||||||
|
|
||||||
|
if [[ "$path" == "" ]]; then
|
||||||
|
echo "## BATCH RUN. READ FIFO FILE."
|
||||||
|
fi
|
||||||
|
# Add trailing / if needed
|
||||||
|
length=${#path}
|
||||||
|
last_char=${path:length-1:1}
|
||||||
|
[[ $last_char != "/" ]] && path="$path/"; :
|
||||||
|
|
||||||
|
file="$2"
|
||||||
|
|
||||||
|
echo "~/.zen/astrXbian/zen/new_file_in_astroport.sh PATH/ \"$path\" FILE \"$file\""
|
||||||
|
|
||||||
|
extension="${file##*.}"
|
||||||
|
TITLE="${file%.*}"
|
||||||
|
|
||||||
|
# .part file false flag correcting (inotify mode)
|
||||||
|
[[ ! -f "${path}${file}" ]] && file="${TITLE%.*}" && extension="${TITLE##*.}" && [[ ! -f "${path}${file}" ]] && er="NO FILE" && echo "$er" && exit 1
|
||||||
|
|
||||||
|
# GET XZUID
|
||||||
|
[[ -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') ]] && er="Les fichiers sont à placer dans ~/astroport/ MERCI" && echo "$er" && exit 1
|
||||||
|
TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... TYPE(film, youtube, mp3, video, page)/ REFERENCE /
|
||||||
|
CAT=$(echo "$TYPE" | awk '{ print tolower($0) }')
|
||||||
|
|
||||||
|
echo $CAT
|
||||||
|
|
||||||
|
PREFIX=$(echo "$TYPE" | head -c 1 | awk '{ print toupper($0) }' ) # ex: F, Y, M ou Y
|
||||||
|
# File is placed in ROOT ~/astroport ?
|
||||||
|
if [[ $PREFIX == "" ]]
|
||||||
|
then
|
||||||
|
[[ "$USER" != "xbian" ]] && zenity --warning --width 300 --text "Désolé votre fichier ne peut pas être traité"
|
||||||
|
er="$er | WARNING. $TYPE is root file UNTREATED" && echo "$er" && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new )
|
||||||
|
########################################################################
|
||||||
|
case ${CAT} in
|
||||||
|
video)
|
||||||
|
INDEXPREFIX="VIDEO_"
|
||||||
|
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||||
|
TITLE="${file%.*}"
|
||||||
|
;;
|
||||||
|
youtube)
|
||||||
|
INDEXPREFIX="YOUTUBE_"
|
||||||
|
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||||
|
TITLE="${file%.*}"
|
||||||
|
;;
|
||||||
|
page)
|
||||||
|
## DIFFERENT TREATMENT
|
||||||
|
INDEXPREFIX="PAGE_"
|
||||||
|
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||||
|
TITLE="${file%.*}"
|
||||||
|
;;
|
||||||
|
mp3)
|
||||||
|
## DIFFERENT TREATMENT
|
||||||
|
INDEXPREFIX="MP3_"
|
||||||
|
REFERENCE=$(echo "$path" | cut -d '/' -f 6 )
|
||||||
|
TITLE=$(echo "$file" | cut -d "&" -f 2-)
|
||||||
|
er="$er | Please use new_mp3_in_astroport.sh ... EXIT"
|
||||||
|
echo "$er"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
film | serie)
|
||||||
|
INDEXPREFIX="TMDB_"
|
||||||
|
REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Path contains TMDB id
|
||||||
|
if ! [[ "$REFERENCE" =~ ^[0-9]+$ ]] # ${REFERENCE} NOT A NUMBER
|
||||||
|
then
|
||||||
|
er="$er | ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ or use your 06 phone number"
|
||||||
|
echo "$er"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
## TODO ADD "httrack" for website copying
|
||||||
|
## httrack "https://wiki.lowtechlab.org" -O "./wiki.lowtechlab.org" "+*.lowtechlab.org/*" -v -%l "fr"
|
||||||
|
##
|
||||||
|
*)
|
||||||
|
er="$CAT inconnu" && echo "$er" && exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
MEDIAKEY="${INDEXPREFIX}${REFERENCE}"
|
||||||
|
########################################################################
|
||||||
|
## CHECK if MEDIAKEY exists -> REFRESH DATA
|
||||||
|
########################################################################
|
||||||
|
echo "SEARCH for ;$REFERENCE; in ${PREFIX}ASTRXBIAN"
|
||||||
|
if [[ ${REFERENCE:0:1} != "0" ]]; then ## REFERENCE COULD BE A PHONE NUMBER (not in TMDB copy force)
|
||||||
|
isREFERENCEinINDEX=$(grep ";$REFERENCE;" ~/.zen/ipfs_swarm/.12D*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN )
|
||||||
|
if [[ ${isREFERENCEinINDEX} ]]
|
||||||
|
then
|
||||||
|
if [[ -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB} ]]
|
||||||
|
then
|
||||||
|
# FILE IS MINE, NEW VERSION?! replacing it in INDEX
|
||||||
|
ipnslink=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.link)
|
||||||
|
echo "FOUND IPNS ${MEDIAKEY} = $ipnslink"
|
||||||
|
|
||||||
|
# DELETING GCHANGE AD, WILL BE CREATED AGAIN
|
||||||
|
gchangeAD=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.gchange.ad)
|
||||||
|
~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" deleteoffer -i $gchangeAD
|
||||||
|
rm ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.gchange.ad
|
||||||
|
else
|
||||||
|
er="$er | FILE IS ALREADY EXISTING FROM ANOTHER FRIEND" && echo "$er"
|
||||||
|
## SEND messages to warn about need to Unify MEDIAKEY IPNS KEY
|
||||||
|
ipfsnodeid=$(echo ${isREFERENCEinINDEX} | tail -n 1 | cut -d '.' -f 3- | cut -d '/' -f 1)
|
||||||
|
destg1=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $ipfsnodeid)
|
||||||
|
[[ "$IPFSNODEID" != "$ipfsnodeid" ]] && ~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" send -d $destg1 -t "MEDIAKEY COLLISION ${MEDIAKEY}" -m "Conflit de MEDIAKEY. Choisir quelle clef IPNS conserver..."
|
||||||
|
##
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
echo "ADDING ${path}${file} to IPFS and create ${PREFIX}ASTRXBIAN INDEX"
|
||||||
|
echo "~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN"
|
||||||
|
echo "-----------------------------------------------------------------"
|
||||||
|
|
||||||
|
IPFS=$(ipfs add -wq "${path}${file}")
|
||||||
|
IPFSREPFILEID=$(echo $IPFS | cut -d ' ' -f 2)
|
||||||
|
IPFSID=$(echo $IPFS | cut -d ' ' -f 1)
|
||||||
|
[[ $IPFSREPFILEID == "" ]] && echo "ipfs add ERROR" && exit 1
|
||||||
|
echo "-----------------------------------------------------------------"
|
||||||
|
echo "IPFS $file DIRECTORY: ipfs ls /ipfs/$IPFSREPFILEID"
|
||||||
|
echo "-----------------------------------------------------------------"
|
||||||
|
echo "New $TYPE INDEX ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN "
|
||||||
|
|
||||||
|
URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri)
|
||||||
|
|
||||||
|
### MEDIAKEY FORGE
|
||||||
|
########################################################################
|
||||||
|
## CREATE NEW ipns KEY : ${MEDIAKEY}
|
||||||
|
########################################################################
|
||||||
|
## IPFS SELF IPNS DATA STORAGE
|
||||||
|
## ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/
|
||||||
|
########################################################################
|
||||||
|
if [[ ! $(ipfs key list | grep "${MEDIAKEY}") ]]; then
|
||||||
|
## IPNS KEY CREATION
|
||||||
|
mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}
|
||||||
|
KEY=$(ipfs key gen "${MEDIAKEY}")
|
||||||
|
# KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1) # get name of last created key (could be fooled during stargate exchange)
|
||||||
|
KEYFILE=$(~/.zen/astrXbian/zen/tools/give_me_keystore_filename.py "${MEDIAKEY}") # better method applied
|
||||||
|
fi
|
||||||
|
|
||||||
|
## IS IT NEW IPNS KEY?
|
||||||
|
if [[ $KEY ]]; then
|
||||||
|
echo "CREATING NEW IPNS MEDIAKEY"
|
||||||
|
# memorize IPNS key filename for easiest exchange
|
||||||
|
echo "$KEYFILE" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.key.keystore_filename
|
||||||
|
# Publishing IPNS key
|
||||||
|
echo "$KEY" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.link
|
||||||
|
# CREATE .zen = ZEN economic value
|
||||||
|
touch ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.zen
|
||||||
|
# CREATE other encrypted copies for friends depending DEFCON & stars
|
||||||
|
# > STARGATE 1 - 2 - 3 - 4 - 5 !!
|
||||||
|
################ ENCRYPT keystore/$KEYFILE
|
||||||
|
else
|
||||||
|
KEY=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.link)
|
||||||
|
KEYFILE=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.key.keystore_filename)
|
||||||
|
echo "## ALREADY EXISTING IPNS KEY $KEYFILE ($KEY)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ ! $KEY ]] && echo "FATAL ERROR" && exit 1
|
||||||
|
########################################################################
|
||||||
|
## add default metadata (TODO = use json file?)
|
||||||
|
########################################################################
|
||||||
|
FILE_BSIZE=$(du -b "${path}${file}" | awk '{print $1}')
|
||||||
|
echo "${FILE_BSIZE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.filesize
|
||||||
|
echo "${file}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipfs.filename
|
||||||
|
echo "${TITLE}" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.title
|
||||||
|
echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.timestamp
|
||||||
|
## INIT MEDIAKEY .views.counter
|
||||||
|
echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.views.counter
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Prepare IPFS links (then cyphered to manage exchange regulation)
|
||||||
|
########################################################################
|
||||||
|
echo "/ipfs/$IPFSREPFILEID/${file}" > /tmp/.ipfs.filelink
|
||||||
|
echo "$IPFSID" > /tmp/.ipfsid
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
################ ask autoPIN to one shuffle A_boostrap_nodes
|
||||||
|
########################################################################
|
||||||
|
PINIPFSnode=$(cat ~/.zen/astrXbian/A_boostrap_nodes.txt | grep -Ev "#" | shuf | tail -n 1)
|
||||||
|
nodeid=${PINIPFSnode##*/}
|
||||||
|
PINnode=$(~/.zen/astrXbian/zen/tools/ipfs_to_g1.py $nodeid)
|
||||||
|
|
||||||
|
echo "ASK AUTOPIN to $PINnode"
|
||||||
|
## CREATE $PINnode IPFS communication directory
|
||||||
|
if [[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode} && "$PINnode" != "$G1PUB" ]]; then
|
||||||
|
mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}
|
||||||
|
## ENCRYPT .ipfsid & .ipfs.filelink (THESE FILES ARE
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $PINnode -i /tmp/.ipfs.filelink -o "~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.ipfs.filelink.encrypt"
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $PINnode -i /tmp/.ipfsid -o "~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.ipfsid.encrypt"
|
||||||
|
# .ipfsid.encrypt is searched by each Station running ./zen/tools/autoPINfriends.sh
|
||||||
|
fi
|
||||||
|
########################################################################
|
||||||
|
## GREAT natools can convert IPNS MEDIAKEY into .dunikey file
|
||||||
|
########################################################################
|
||||||
|
# CREATING QRCODE
|
||||||
|
$MY_PATH/tools/natools.py privkey -f ipfs-keystore -k $HOME/.ipfs/keystore/$KEYFILE -F pubsec -o /tmp/${MEDIAKEY}.dunikey
|
||||||
|
# PubFromDunikey=$(cat /tmp/${MEDIAKEY}.dunikey | grep "sec" | cut -d ' ' -f2 | base58 -d | tail -c+33 | base58) ## HOWTO EXTRACT PUBKEY FROM SECKEY
|
||||||
|
PubFromDunikey=$(cat /tmp/${MEDIAKEY}.dunikey | grep "pub" | cut -d ' ' -f2)
|
||||||
|
qrencode -s 6 -o "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/QR.png" "$PubFromDunikey"
|
||||||
|
echo "$PubFromDunikey" > $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/MEDIAPUBKEY
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## MEDIAKEY => DUNIKEY + PASS 6 DIGITS openssl protection
|
||||||
|
########################################################################
|
||||||
|
PASS=$(echo "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" | tail -c-7) && echo "$PASS" > /tmp/${MEDIAKEY}.pass
|
||||||
|
openssl enc -aes-256-cbc -salt -in /tmp/${MEDIAKEY}.dunikey -out "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/dunikey.enc" -k $PASS
|
||||||
|
|
||||||
|
## STATION & BOOTSTRAP ACCESS TO PASS
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $G1PUB -i /tmp/${MEDIAKEY}.pass -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.pass.encrypt
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $PINnode -i /tmp/${MEDIAKEY}.pass -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.pass.encrypt
|
||||||
|
|
||||||
|
## DECODE MEDIAKEY.dunikey ##
|
||||||
|
# ~/.zen/astrXbian/zen/tools/natools.py decrypt -f pubsec -k "$HOME/.zen/secret.dunikey" -i "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.pass.encrypt" -o "/tmp/${MEDIAKEY}.pass"
|
||||||
|
# openssl enc -aes-256-cbc -d -in "$HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/dunikey.enc" -out "/tmp/${MEDIAKEY}.dunikey" -k $(cat "/tmp/${MEDIAKEY}.pass")
|
||||||
|
rm /tmp/${MEDIAKEY}.dunikey
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## GET .ipfs/keystore file MAHE .ipns.mediakey.encrypt
|
||||||
|
# used in ipns_TAG_refresh.sh & autoPINfriends.sh
|
||||||
|
########################################################################
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $G1PUB -i $HOME/.ipfs/keystore/$KEYFILE -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.mediakey.encrypt
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p $PINnode -i $HOME/.ipfs/keystore/$KEYFILE -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.ipns.mediakey.encrypt
|
||||||
|
|
||||||
|
## Init zen, views counters & visitor
|
||||||
|
echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.zen
|
||||||
|
echo "0" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.views.counter
|
||||||
|
echo "anonymous" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.visitor
|
||||||
|
########################################################################
|
||||||
|
# MEMORIZE my PIN
|
||||||
|
mkdir -p ~/.zen/PIN/${IPFSREPFILEID}/
|
||||||
|
touch ~/.zen/PIN/${IPFSREPFILEID}/${G1PUB}
|
||||||
|
# echo "$(ipfs key list -l | grep ${MEDIAKEY} | cut -d ' ' -f 1)" > ~/.zen/PIN/${ipfsrepidfile}/IPNSLINK # NO!! Would let PINing nodes change index.html///
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## encrypt links for myself
|
||||||
|
########################################################################
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipfs.filelink.natools.encrypt
|
||||||
|
$MY_PATH/tools/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfsid -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipfsid.encrypt
|
||||||
|
rm /tmp/.ipfs.filelink
|
||||||
|
rm /tmp/.ipfsid
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## ADD "ajouter_video.txt" and "video.json" will be SELF IPNS publish data
|
||||||
|
## ENCRYPT TO STOP CLEAR DATA LEAKING
|
||||||
|
[[ -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/
|
||||||
|
[[ -f ~/astroport/${TYPE}/${REFERENCE}/screen.png ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/screen.png ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/
|
||||||
|
[[ -f ~/astroport/${TYPE}/${REFERENCE}/video.json ]] &&\
|
||||||
|
cp -f ~/astroport/${TYPE}/${REFERENCE}/video.json ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/ &&\
|
||||||
|
cp -f ~/astroport/${TYPE}/${REFERENCE}/video.json ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## EXPLANATIONS
|
||||||
|
########################################################################
|
||||||
|
# What is being in ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/
|
||||||
|
# is published on http://127.0.0.1:8080/ipns/$KEY/ AND ipfs ls /ipns/$KEY/
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
# CONTRACTS, are small App (fulljs or jquery + nginx backend app server)
|
||||||
|
# They must decrypt IPFS after succeeding a chalenge (, +/- n zen, ...)
|
||||||
|
########################################################################
|
||||||
|
# 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 access to index.html
|
||||||
|
## Level 1 (not crypted) -> Redirect to ipfs streaming link
|
||||||
|
|
||||||
|
IPNSLINK=$(ipfs key list -l | grep ${MEDIAKEY} | cut -d ' ' -f 1)
|
||||||
|
## FIRST REDIRECT PAGE ${MEDIAKEY}/index.html
|
||||||
|
# https://tube.copylaradio.com/ipns/$IPNSLINK
|
||||||
|
#envsubst < ./www/boris/youtube_watch_step2.html > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/index.html
|
||||||
|
|
||||||
|
echo "=======> Mediakey Welcome index.html "
|
||||||
|
cat /home/$YOU/.zen/astrXbian/www/boris/youtube_watch_step2.html \
|
||||||
|
| sed "s/\${IPNSLINK}/$IPNSLINK/g" \
|
||||||
|
| sed "s/\${IPFSNODEID}/$IPFSNODEID/g" \
|
||||||
|
| sed "s/\${XZUID}/$XZUID/g" \
|
||||||
|
| sed "s/\${G1PUB}/$G1PUB/g" \
|
||||||
|
| sed "s/\${TITLE}/$TITLE/g" \
|
||||||
|
> ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/index.html
|
||||||
|
|
||||||
|
## SECOND REDIRECT PAGE ${MEDIAKEY}/${G1PUB}/index.html
|
||||||
|
# https://tube.copylaradio.com/ipns/$IPNSLINK/${G1PUB}/
|
||||||
|
|
||||||
|
#envsubst < ../www/boris/youtube_watch_step3.html > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/index.html
|
||||||
|
echo "=======> Mediakey Contract index.html "
|
||||||
|
cat /home/$YOU/.zen/astrXbian/www/boris/youtube_watch_step3.html \
|
||||||
|
| sed "s/\${TITLE}/$TITLE/g" \
|
||||||
|
| sed "s/\${IPFSNODEID}/$IPFSNODEID/g" \
|
||||||
|
| sed "s/\${XZUID}/$XZUID/g" \
|
||||||
|
| sed "s/\${IPFSREPFILEID}/$IPFSREPFILEID/g" \
|
||||||
|
| sed "s/\${URLENCODE_FILE_NAME}/$URLENCODE_FILE_NAME/g" \
|
||||||
|
> ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/index.html
|
||||||
|
|
||||||
|
|
||||||
|
# echo "<meta http-equiv=\"Refresh\" content=\"0;URL=http://127.0.0.1:8080/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME\">" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/index.html
|
||||||
|
########################################################################
|
||||||
|
## MODIFY INTO "./zen/ipns_TAG_refresh.sh" (add crypto/contracts there)
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
## PUBLISH new IPNS
|
||||||
|
########################################################################
|
||||||
|
echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/.timestamp
|
||||||
|
|
||||||
|
NEWIPFS=$(ipfs add -rHq ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/ | tail -n 1 )
|
||||||
|
[[ "$NEWIPFS" == "" ]] && echo "~~~ FAILURE ~~~ ipfs add -rHq ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/ | tail -n 1" && exit 1
|
||||||
|
|
||||||
|
## ADD CHAIN BLOCK ZERO (will be updated by ipns_TAG_refresh.sh)
|
||||||
|
echo $NEWIPFS > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/.chain
|
||||||
|
|
||||||
|
IPNS=$(ipfs name publish --quieter --key="${MEDIAKEY}" $NEWIPFS)
|
||||||
|
[[ "$IPNS" == "" ]] && echo "~~~ PROBLEM ~~~ ipfs name publish --quieter --key=${MEDIAKEY} $NEWIPFS" && IPNS="$(ipfs key list -l | grep -w ${MEDIAKEY} | cut -f 1 -d ' ')"
|
||||||
|
########################################################################
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# POST TRAITEMENTS
|
||||||
|
########################################################################
|
||||||
|
# film/serie PUBLISH "ajouter_video.txt" for KODI
|
||||||
|
########################################################################
|
||||||
|
if [[ "${CAT}" =~ ^(film|serie|youtube|page|video)$ ]]
|
||||||
|
then
|
||||||
|
## CREATE GCHANGE AD
|
||||||
|
if [[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.gchange.ad && ( "${CAT}" == "film" || "${CAT}" == "serie") ]]
|
||||||
|
then
|
||||||
|
|
||||||
|
GOFFER=$(~/.zen/astrXbian/zen/jaklis/jaklis.py -k ~/.zen/secret.dunikey -n "https://data.gchange.fr" setoffer -t "${TITLE} #astroport #${MEDIAKEY}" -d "${TITLE} https://tube.copylaradio.com/ipns/$IPNS/ Faites un don à son portefeuille pour le conserver dans le Mediacenter des Amis - https://CopyLaRadio.com - https://astroport.com" -p $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/QR.png)
|
||||||
|
echo $GOFFER > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.gchange.ad
|
||||||
|
NEWIPFS=$(ipfs add -rHq ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/ | tail -n 1 )
|
||||||
|
IPNS=$(ipfs name publish --quieter --key="${MEDIAKEY}" $NEWIPFS)
|
||||||
|
[[ "$IPNS" == "" ]] && IPNS="$(ipfs key list -l | grep -w ${MEDIAKEY} | cut -f 1 -d ' ')"
|
||||||
|
echo "Annonce gchange : $(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.gchange.ad)"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# CREATION DU FICHIER ${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:8080" > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
|
||||||
|
|
||||||
|
# ADD NEW LINE TO INDEX
|
||||||
|
if [[ -f ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/ajouter_video.txt ]]
|
||||||
|
then
|
||||||
|
line=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${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/${MEDIAKEY}/ajouter_video.txt"
|
||||||
|
echo "$line" > ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/ajouter_video.txt
|
||||||
|
## UPDATE SOURCE ajouter_video.txt FILE
|
||||||
|
cp -f ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/ajouter_video.txt ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
## TODO: ACTIVATE SUB DEFCON 4 MODE = encrypt/decrypt file in $G1DEST subdirectory
|
||||||
|
########################################################################
|
||||||
|
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
|
||||||
|
|
||||||
|
GENRE=$(cat ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/ajouter_video.txt | cut -d ';' -f 6 | sed 's/|/ /g' )
|
||||||
|
MIME=$(file --mime-type "$HOME/astroport/${TYPE}/${REFERENCE}/${file}" | cut -d ':' -f 2 | cut -d ' ' -f 2)
|
||||||
|
REAL=$MIME
|
||||||
|
if [[ $(echo "$MIME" | grep 'video') ]]; then
|
||||||
|
TEXT="<video controls><source src='/ipfs/"${IPFSID}"' type='"${MIME}"'></video><h1>"${TITLE}"</h1>"
|
||||||
|
MIME="text/vnd.tiddlywiki"
|
||||||
|
TAGS="${CAT} astroport $GENRE"
|
||||||
|
CANON=''
|
||||||
|
else
|
||||||
|
TEXT=''
|
||||||
|
TAGS='$:/isAttachment $:/isIpfs astroport '${CAT} $GENRE
|
||||||
|
CANON="/ipfs/"${IPFSID}
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Add screen
|
||||||
|
SCREENDIR=$(ipfs add -wq "$HOME/astroport/${TYPE}/${REFERENCE}/screen.png" | tail -n 1)
|
||||||
|
|
||||||
|
echo "## Creation json tiddler"
|
||||||
|
echo '[
|
||||||
|
{
|
||||||
|
"text": "'${TEXT}'",
|
||||||
|
"title": "'${TITLE}'",
|
||||||
|
"type": "'${MIME}'",
|
||||||
|
"mime": "'${REAL}'",
|
||||||
|
"cat": "'${CAT}'",
|
||||||
|
"screenshot": "'${SCREENDIR}/screen.png'",
|
||||||
|
"ipfsroot": "'${IPFSREPFILEID}'",
|
||||||
|
"file": "'${file}'",
|
||||||
|
"mediakey": "'${MEDIAKEY}'",
|
||||||
|
"ipns": "'${IPNS}'",
|
||||||
|
"tmdb": "'${REFERENCE}'",
|
||||||
|
"tags": "'${TAGS}'" ' > ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json
|
||||||
|
|
||||||
|
[[ ${CANON} != "" ]] && echo ',
|
||||||
|
"_canonical_uri": "'${CANON}'"' >> ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json
|
||||||
|
|
||||||
|
echo '
|
||||||
|
}
|
||||||
|
]
|
||||||
|
' >> ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json
|
||||||
|
|
||||||
|
# Will be used by caroussel.html template
|
||||||
|
# CAROUSSEL=$(ipfs add -wq ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json | head-n 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# COPY TIDDLER JSON TO DESKTOP Journal/${TYPE}
|
||||||
|
[[ "$USER" != "xbian" && -d ~/Bureau ]] && mkdir -p ~/Bureau/Journal/${TYPE} && cp ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json ~/Bureau/Journal/${TYPE}/${TITLE}.dragdrop.json && xdg-open "~/Bureau/Journal/${TYPE}/"
|
||||||
|
[[ "$USER" != "xbian" && -d ~/Desktop ]] && mkdir -p ~/Desktop/Journal/${TYPE} && cp ~/astroport/${TYPE}/${REFERENCE}/${MEDIAKEY}.dragdrop.json ~/Desktop/Journal/${TYPE}/${TITLE}.dragdrop.json && xdg-open "~/Desktop/Journal/${TYPE}/"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
## COPY LOCALHOST IPFS URL TO CLIPBOARD
|
||||||
|
[[ $(which xclip) ]] &&\
|
||||||
|
[[ $TEXT == "" ]] &&\
|
||||||
|
echo "http://127.0.0.1:8080/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME" | xclip -selection c ||\
|
||||||
|
echo "$TEXT" | xclip -selection c
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# PUBLISH GENERAL video
|
||||||
|
########################################################################
|
||||||
|
if [[ "${CAT}" == "video" ]]
|
||||||
|
then
|
||||||
|
## REPLACE IPFS / IPNS REFERENCE IN video.json (Maybe cyphered later)
|
||||||
|
cat ~/astroport/${CAT}/${MEDIAKEY}/video.json | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g" | sed "s/_IPNSKEY_/$IPNS/g" >> ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# PUBLISH YOUTUBE video to /astroport/wordpress/ DATA NOT USED ANY MORE... semaphore à régler
|
||||||
|
#########################################################################
|
||||||
|
if [[ "${CAT}" == "youtube" ]]
|
||||||
|
then
|
||||||
|
## CREATE astroport call to Astroport/Wordpress stations
|
||||||
|
if [[ ! -d ~/.zen/ipfs/.$IPFSNODEID/astroport/wordpress/${MEDIAKEY} ]]; then
|
||||||
|
mkdir -p ~/.zen/ipfs/.$IPFSNODEID/astroport/wordpress/${MEDIAKEY}
|
||||||
|
echo "1" > ~/.zen/ipfs/.$IPFSNODEID/astroport/wordpress/${MEDIAKEY}/do
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# REFRESH IPNS SELF PUBLISH
|
||||||
|
########################################################################
|
||||||
|
~/.zen/astrXbian/zen/ipns_self_publish.sh
|
||||||
|
########################################################################
|
||||||
|
echo "DUNIKEY PASS $PASS"
|
||||||
|
echo "NEW $TYPE ($file) ADDED. http://127.0.0.1:8080/ipfs/$IPFSREPFILEID/$URLENCODE_FILE_NAME"
|
||||||
|
echo "INDEX UPDATED : http://127.0.0.1:8080/ipns/${IPFSNODEID}/.${IPFSNODEID}/${PREFIX}ASTRXBIAN"
|
||||||
|
echo "VIDEO IPNS LINK : http://127.0.0.1:8080/ipns/$KEY/$G1PUB/"
|
||||||
|
echo "#### EXCECUTION TIME"
|
||||||
|
end=`date +%s`
|
||||||
|
echo Execution time was `expr $end - $start` seconds.
|
||||||
|
echo "########################################################################"
|
||||||
|
zenity --warning --width 300 --text "Votre MEDIA a rejoint ASTROPORT en `expr $end - $start` secondes"
|
||||||
|
exit 0
|
|
@ -23,6 +23,8 @@ else
|
||||||
RECDEVICE=$(pactl list short sources | grep input | cut -f 2)
|
RECDEVICE=$(pactl list short sources | grep input | cut -f 2)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mkdir -p ~/.zen/tmp/
|
||||||
|
|
||||||
echo "Voulez-vous enregistrer le bureau? ENTER sinon"
|
echo "Voulez-vous enregistrer le bureau? ENTER sinon"
|
||||||
read desktop
|
read desktop
|
||||||
[[ $desktop != "" ]] && screencapture
|
[[ $desktop != "" ]] && screencapture
|
||||||
|
@ -53,6 +55,7 @@ ffmpeg -i ~/.zen/tmp/output.mp4 -codec: copy -start_number 0 -hls_time 10 -hls_l
|
||||||
IPFSID=$(ipfs add -wrHq ~/.zen/tmp/output.mp4 | tail -n 1)
|
IPFSID=$(ipfs add -wrHq ~/.zen/tmp/output.mp4 | tail -n 1)
|
||||||
echo "NEW VIDEO FILE /ipfs/$IPFSID/output.mp4"
|
echo "NEW VIDEO FILE /ipfs/$IPFSID/output.mp4"
|
||||||
|
|
||||||
|
mkdir -p ~/.zen/game/players/.current/publish
|
||||||
|
|
||||||
## Creating new video chain index.html
|
## Creating new video chain index.html
|
||||||
PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null)
|
PSEUDO=$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null)
|
||||||
|
@ -64,16 +67,17 @@ else
|
||||||
sed s/_IPFSID_/$IPFSID/g ${MY_PATH}/../templates/video_first.html > /tmp/index.html
|
sed s/_IPFSID_/$IPFSID/g ${MY_PATH}/../templates/video_first.html > /tmp/index.html
|
||||||
fi
|
fi
|
||||||
sed -i s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g /tmp/index.html
|
sed -i s/_DATE_/$(date -u "+%Y-%m-%d#%H:%M:%S")/g /tmp/index.html
|
||||||
sed s/_PSEUDO_/$PSEUDO/g /tmp/index.html > ~/.zen/game/players/.current/public/index.html
|
sed s/_PSEUDO_/$PSEUDO/g /tmp/index.html > ~/.zen/game/players/.current/publish/index.html
|
||||||
|
|
||||||
# Copy style css
|
# Copy style & js
|
||||||
cp -R ${MY_PATH}/../templates/styles ~/.zen/game/players/.current/public/
|
cp -R ${MY_PATH}/../templates/styles ~/.zen/game/players/.current/publish/
|
||||||
|
cp -R ${MY_PATH}/../templates/js ~/.zen/game/players/.current/publish/
|
||||||
|
|
||||||
IPFSROOT=$(ipfs add -rHq ~/.zen/game/players/.current/public | tail -n 1)
|
IPFSROOT=$(ipfs add -rHq ~/.zen/game/players/.current/publish | tail -n 1)
|
||||||
echo $IPFSROOT > ~/.zen/game/players/.current/.vlog.index
|
echo $IPFSROOT > ~/.zen/game/players/.current/.vlog.index
|
||||||
# Change CSS path to
|
# Change CSS path to
|
||||||
sed s/_IPFSROOT_/$IPFSROOT/g /tmp/index.html > ~/.zen/game/players/.current/public/index.html
|
sed s/_IPFSROOT_/$IPFSROOT/g /tmp/index.html > ~/.zen/game/players/.current/publish/index.html
|
||||||
IPFSROOT=$(ipfs add -rHq ~/.zen/game/players/.current/public | tail -n 1)
|
IPFSROOT=$(ipfs add -rHq ~/.zen/game/players/.current/publish | tail -n 1)
|
||||||
|
|
||||||
|
|
||||||
echo "NEW VIDEO http://127.0.0.1:8080/ipfs/$IPFSROOT"
|
echo "NEW VIDEO http://127.0.0.1:8080/ipfs/$IPFSROOT"
|
||||||
|
|
Loading…
Reference in New Issue