diff --git a/tools/CHANNELS.populate.sh b/tools/CHANNELS.populate.sh index 4342cdd6..48bf77ff 100755 --- a/tools/CHANNELS.populate.sh +++ b/tools/CHANNELS.populate.sh @@ -26,6 +26,7 @@ source ~/.zen/ipfs.sync; echo "CAPTAIN is $CAPTAIN" [[ $PLAYER != $CAPTAIN ]] && echo "CAPTAIN RUN ONLY. EXIT" && exit 1 MOANS=$(ipfs key list -l | grep -w moa | cut -d ' ' -f 1) ## GET CAPTAIN PLAYER NS PUBKEY +[[ $MOANS == "" ]] && echo "NO MOA KEY EXIT" && exit 1 CAPTAINNS=$(ipfs key list -l | grep -w $CAPTAIN | cut -d ' ' -f 1) ## GET CAPTAIN PLAYER NS PUBKEY CAPTAINMOANS=$(ipfs key list -l | grep -w moa_$CAPTAIN | cut -d ' ' -f 1) @@ -48,28 +49,40 @@ CAPTAINQOOPNS=$(ipfs key list -l | grep -w qo-op_$CAPTAIN | cut -d ' ' -f 1) ipfs name publish --key=${CAPTAIN} /ipfs/$IPUSH 2>/dev/null echo "http://127.0.0.1:8080/ipns/$CAPTAINNS/slick.html" +echo - +# CHECK tokenring +# Indicate who is next. +# If it is my turn... # UPDATE TW UPDATE CHAIN -for player in $(ls ~/.zen/game/players/); do - - moans=$(cat ~/.zen/game/players/$player/.moans) +for astronaut in $(ls ~/.zen/game/players/); do + [[ $astronaut == $CAPTAIN ]] && continue + moans=$(cat ~/.zen/game/players/$astronaut/.moans) # CHECK DIFFERENCES FROM LATEST TIME CHECK ## GETTING LAST 'player_moa' ONLINE VERSION - echo "Getting $player/.moans /ipns/$moans" - ipfs --timeout=10s get -o ~/.zen/game/players/$player/moa/ /ipns/$moans || continue - IPUSH=$(ipfs add -Hq ~/.zen/game/players/$player/moa/index.html | tail -n 1) + echo "Getting $astronaut/.moans /ipns/$moans" + cp ~/.zen/game/players/$astronaut/moa/index.html ~/.zen/tmp/index.html + ipfs --timeout=10s get -o ~/.zen/game/players/$astronaut/moa/ /ipns/$moans + IPUSH=$(ipfs add -Hq ~/.zen/game/players/$astronaut/moa/index.html | tail -n 1) - # Avance la blockchain CAPTAIN pour archiver les '$player.moa.chain' des Etats modifiés - [[ $(cat ~/.zen/game/players/$CAPTAIN/moa/$player.moa.chain 2>/dev/null) != "$IPUSH" ]] &&\ - echo $IPUSH > ~/.zen/game/players/$CAPTAIN/moa/$player.moa.chain && \ - echo $MOATS > ~/.zen/game/players/$CAPTAIN/moa/$player.moa.ts && \ - echo "$player 'moa' UPDATE : $MOATS $IPUSH" && \ - echo "

$player

" >> ~/.zen/game/players/$CAPTAIN/moa/slick.div -# echo "

$player

" >> ~/.zen/game/players/$CAPTAIN/moa/slick.div && \ + if [[ $IPUSH != "Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ" ]]; then + # Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ = VIDE !! + echo $IPUSH > ~/.zen/game/players/$astronaut/moa/$astronaut.moa.chain + echo $MOATS > ~/.zen/game/players/$astronaut/moa/$astronaut.moa.ts + num=$(cat ~/.zen/game/players/$astronaut/moa/$astronaut.moa.n 2>/dev/null) || num=0 + echo $(expr $num + 1) > ~/.zen/game/players/$astronaut/moa/$astronaut.moa.n + ipfs name publish --key=moa_${astronaut} /ipfs/$IPUSH 2>/dev/null + # Avance la blockchain CAPTAIN pour archiver les '$astronaut.moa.chain' des Etats modifiés + [[ $(cat ~/.zen/game/players/$CAPTAIN/moa/$astronaut.moa.chain 2>/dev/null) != "$IPUSH" ]] &&\ + echo $IPUSH > ~/.zen/game/players/$CAPTAIN/moa/$astronaut.moa.chain && \ + echo $MOATS > ~/.zen/game/players/$CAPTAIN/moa/$astronaut.moa.ts && \ + echo "$astronaut 'moa' UPDATE : $MOATS $IPUSH" && \ + diff ~/.zen/tmp/index.html ~/.zen/game/players/$astronaut/moa/index.html | sed -n -e 's/^> //p' +# echo "

$astronaut

" >> ~/.zen/game/players/$CAPTAIN/moa/slick.div + + fi done - exit 0 diff --git a/tools/FRIENDS.manage.sh b/tools/FRIENDS.manage.sh index c9faf2c4..e977d39a 100755 --- a/tools/FRIENDS.manage.sh +++ b/tools/FRIENDS.manage.sh @@ -51,3 +51,4 @@ for player in $(ls ~/.zen/game/players/); do done +# TODO USE WEB INTERFACE diff --git a/tools/PLAYER.entrance.sh b/tools/PLAYER.entrance.sh index 6754562b..19cd32ce 100755 --- a/tools/PLAYER.entrance.sh +++ b/tools/PLAYER.entrance.sh @@ -105,17 +105,34 @@ echo "==== qo-op & moa Captain/Station keystore ===="; sleep 2 ################################################################################### echo echo "===== Connect captain IPFS datadir to Station (balise junction) ====="; sleep 2 + ## TODO MAKE FUNCTIONS + echo + echo "=== Switching ~/.ipfs/config ==="; sleep 2 - [[ ! -d ~/.zen/ipfs.astrXbian ]] && mv ~/.zen/ipfs ~/.zen/ipfs.astrXbian && echo "BACKUP ~/.zen/ipfs.astrXbian" || rm ~/.zen/ipfs; sleep 2 - mv ~/.zen/ipfs ~/.zen/ipfs.astrXbian && echo "BACKUP current ~/.zen/ipfs"; sleep 2 + [[ ! -f ~/.ipfs/config.astrXbian ]] && mv ~/.ipfs/config ~/.ipfs/config.astrXbian && echo "BACKUP OLD ipfs config" || rm ~/.ipfs/config + ln -s ~/.zen/game/players/$PLAYER/ipfs.config ~/.ipfs/config && echo "Installing $PLAYER 'G1' ipfs config"; sleep 2 + IPFSNODEID=$(cat ~/.ipfs/config | jq -r .Identity.PeerID); echo $IPFSNODEID - # Linking ~/.zen/ipfs - # ~/.zen/secret.dunikey - [[ ! -f ~/.zen/secret.dunikey.astrXbian ]] && mv ~/.zen/secret.dunikey ~/.zen/secret.dunikey.astrXbian && echo "BACKUP ~/.zen/secret.dunikey.astrXbian" || rm ~/.zen/secret.dunikey; sleep 2 + echo + echo "==== Astronaute keystore switch ===="; sleep 2 - echo "CAPITAINE VOUS PRENEZ POSSESSION DE LA STATION ET SES CANAUX 'qo-op', 'moa', etc ..." - ln -s ~/.zen/game/players/$PLAYER/ipfs ~/.zen/ipfs && echo "$PLAYER become IPFS 'self'" && sleep 1 - ln -s ~/.zen/game/players/$PLAYER/secret.dunikey ~/.zen/secret.dunikey && echo "Linking your ~/.zen/secret.dunikey to Station" && sleep 1 + [[ ! -d ~/.ipfs/keystore.astrXbian ]] && mv ~/.ipfs/keystore ~/.ipfs/keystore.astrXbian || rm ~/.ipfs/keystore + ln -s ~/.zen/game/players/$PLAYER/keystore ~/.ipfs/keystore + + + echo "==== linking G1 Libre ID and Station ~/.zen/ipfs ===="; sleep 2 + + [[ ! -f ~/.zen/secret.dunikey.astrXbian ]] && mv ~/.zen/secret.dunikey ~/.zen/secret.dunikey.astrXbian || rm ~/.zen/secret.dunikey + ln -s ~/.zen/game/players/$PLAYER/secret.dunikey ~/.zen/secret.dunikey + + [[ ! -f ~/.zen/secret.june.astrXbian ]] && mv ~/.zen/secret.june ~/.zen/secret.june.astrXbian || rm ~/.zen/secret.june + ln -s ~/.zen/game/players/$PLAYER/secret.june ~/.zen/secret.june + + [[ ! -d ~/.zen/ipfs.astrXbian ]] && mv ~/.zen/ipfs ~/.zen/ipfs.astrXbian && echo "BACKUP ~/.zen/ipfs.astrXbian" || rm ~/.zen/ipfs + ln -s ~/.zen/game/players/$PLAYER/ipfs ~/.zen/ipfs && echo "$PLAYER ~/.zen/ipfs " + + + echo "VOUS ETES CAPITAINE DE LA STATION ET SES CANAUX 'qo-op', 'moa', etc ..." echo "##################################################### OK" echo "Identité 'self' Balise IPFS"; sleep 1 @@ -146,18 +163,13 @@ echo "==== linking G1 Libre ID and Station ~/.zen/ipfs ===="; sleep 2 [[ ! -f ~/.zen/secret.dunikey.astrXbian ]] && mv ~/.zen/secret.dunikey ~/.zen/secret.dunikey.astrXbian || rm ~/.zen/secret.dunikey ln -s ~/.zen/game/players/$PLAYER/secret.dunikey ~/.zen/secret.dunikey + [[ ! -f ~/.zen/secret.june.astrXbian ]] && mv ~/.zen/secret.june ~/.zen/secret.june.astrXbian || rm ~/.zen/secret.june + ln -s ~/.zen/game/players/$PLAYER/secret.june ~/.zen/secret.june + [[ ! -d ~/.zen/ipfs.astrXbian ]] && mv ~/.zen/ipfs ~/.zen/ipfs.astrXbian && echo "BACKUP ~/.zen/ipfs.astrXbian" || rm ~/.zen/ipfs ln -s ~/.zen/game/players/$PLAYER/ipfs ~/.zen/ipfs && echo "$PLAYER ~/.zen/ipfs " - echo - echo "** Restart IPFS DAEMON **" - sudo service ipfs start - YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); - [[ ! $YOU ]] && ipfs daemon --writable & - #----------------------------------- - echo "#-----------------------------------" - if [[ $CAPTAIN == "$PLAYER" ]]; then ## THE CAPTAIN IS LOGGED IN echo "Bienvenue CAPITAINE !"; sleep 2 @@ -181,8 +193,8 @@ echo "==== linking G1 Libre ID and Station ~/.zen/ipfs ===="; sleep 2 fi -echo -echo "** Restart IPFS DAEMON **" + echo + echo "** Restart IPFS DAEMON **" sudo service ipfs start YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); [[ ! $YOU ]] && ipfs daemon --writable & diff --git a/tools/ajouter_media.sh b/tools/ajouter_media.sh deleted file mode 100755 index 2edf708c..00000000 --- a/tools/ajouter_media.sh +++ /dev/null @@ -1,615 +0,0 @@ -#!/bin/bash -######################################################################## -# Author: Fred (support@qo-op.com) -# Version: 0.2 -# 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) -XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/_xbian.zuid 2>/dev/null) || XZUID="noplayer" - -######################################################################## -## 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 - ## TODO REWRITE, Now init_friends.sh populated swarm bootstrapping - [[ $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 "${MY_PATH}/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 diff --git a/tools/get_tagcloud_data.sh b/tools/get_tagcloud_data.sh index 600fa85d..21cb05ff 100755 --- a/tools/get_tagcloud_data.sh +++ b/tools/get_tagcloud_data.sh @@ -24,7 +24,7 @@ for player in $(ls ~/.zen/game/players/); do pseudo=$(cat ~/.zen/game/players/$player/.pseudo) echo "$player 'moa' UPDATE : $MOATS $IPUSH" && \ - DATA="$DATA { name: '"${pseudo}"', link: '"/ipns/${moans}"', weight: "$(cat ~/.zen/game/players/$CAPTAIN/moa/$player.moa.n)", tooltip: '"${player}"' }," + DATA="$DATA { name: '"${pseudo}"', link: '"/ipns/${moans}"', weight: "$(cat ~/.zen/game/players/$player/moa/$player.moa.n)", tooltip: '"${player}"' }," done echo 'data: [ '$DATA' ]' diff --git a/tools/new_file_in_astroport.sh b/tools/new_file_in_astroport.sh deleted file mode 100755 index bdaeeb4f..00000000 --- a/tools/new_file_in_astroport.sh +++ /dev/null @@ -1,511 +0,0 @@ -#!/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 "${MY_PATH}/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 -XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/_xbian.zuid) || 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/natools.py encrypt -p $PINnode -i /tmp/.ipfs.filelink -o "~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/${PINnode}/.ipfs.filelink.encrypt" - $MY_PATH/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/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/natools.py encrypt -p $G1PUB -i /tmp/${MEDIAKEY}.pass -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.pass.encrypt -$MY_PATH/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/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/natools.py encrypt -p $G1PUB -i $HOME/.ipfs/keystore/$KEYFILE -o $HOME/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipns.mediakey.encrypt -$MY_PATH/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/natools.py encrypt -p ${G1PUB} -i /tmp/.ipfs.filelink -o ~/.zen/ipfs/.${IPFSNODEID}/KEY/${MEDIAKEY}/${G1PUB}/.ipfs.filelink.natools.encrypt -$MY_PATH/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 "" > ~/.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="

"${TITLE}"

" - MIME="text/vnd.tiddlywiki" - TAGS="${CAT} astroport $GENRE" - CANON='' - else - TEXT='${MEDIAKEY}' - 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