commit 6051609dab3a919465e37aa01d563b29a405109e Author: Boris Paing Date: Fri Mar 12 19:41:24 2021 +0100 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e6459eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +astroport +astrXbian +me +swarm diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/ajouter_video_youtube.sh b/ajouter_video_youtube.sh new file mode 100755 index 0000000..4619013 --- /dev/null +++ b/ajouter_video_youtube.sh @@ -0,0 +1,89 @@ +#!/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, anime +# 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 et animes, 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: Permet de regrouper des films. (choix multiple) +# +# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films +######################################################################## +HOME=`cat conf/home_dir.txt` +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +######################################################################## + + +######################################################################## +IPFSNODEID=$(ipfs id -f='\n') +[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title) || XZUID=$(cat /etc/hostname) + + +######################################################################## +# CASE ## YOUTUBE +######################################################################## + +#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=$1 +[[ $YTURL == "" ]] && exit 1 + +# Create TEMP directory to copy $YID_$TITLE.$FILE_EXT +YTEMP="/tmp/$(date -u +%s%N | cut -b1-13)" +mkdir -p ${YTEMP} + +# youtube-dl $YTURL +echo "VIDEO $YTURL" +/usr/local/bin/youtube-dl -f '[height=720]/best' \ +--write-info-json --write-annotations \ +--no-mtime -o "${YTEMP}/%(id)s_%(title)s.%(ext)s" $YTURL + +# 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-) +TMDB="${YID}" + +FILE_PATH="$HOME/astroport/youtube/$YID" +echo "Creating directory $FILE_PATH" +mkdir -p -v --mode=775 $FILE_PATH || echo "Directory creation failed :-(" +echo "Moving files there..." +mv -f ${YTEMP}/* ${FILE_PATH}/ + +## CORRECT PARAMETERS to Make Kodi compatible YASTRXBIAN FILE +TITLE="${YNAME%.*}" +GENRES="[Youtube]" +GROUPES="_IPNSKEY_" +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}/${TMDB}/ajouter_video.txt" (with film CAT !!!) +URLENCODE_FILE_NAME=$(echo ${FILE_NAME} | jq -Rr @uri) +echo "film;${TMDB};${YEAR};${TITLE};${SAISON};${GENRES};${GROUPES};${RES};/ipfs/_IPFSREPFILEID_/$URLENCODE_FILE_NAME" > ~/astroport/youtube/${TMDB}/ajouter_video.txt +# _IPFSREPFILEID_ is replaced later + +rm -Rf ${YTEMP} + + +######################################################################## +# ADD $FILE to IPFS / ASTROPORT / KODI +######################################################################## +./new_youtube_video_in_astroport.sh "$HOME/astroport/youtube/${TMDB}/" "${FILE_NAME}" > /tmp/youtube_${TMDB}.log 2>&1 +######################################################################## +######################################################################## + +exit 0 diff --git a/cat.php b/cat.php new file mode 100644 index 0000000..b770b89 --- /dev/null +++ b/cat.php @@ -0,0 +1,5 @@ +'; print_r($files); echo ''; diff --git a/conf/conf.php b/conf/conf.php new file mode 100644 index 0000000..9a5d4a2 --- /dev/null +++ b/conf/conf.php @@ -0,0 +1,22 @@ +Astrobunker'); +define('USP', 'Votre caverne remplie des trésors que vous avez découverts sur le web, votre forteresse de contenu imprenable, votre palais informationnel.'); diff --git a/conf/home_dir.txt b/conf/home_dir.txt new file mode 100644 index 0000000..b3abcca --- /dev/null +++ b/conf/home_dir.txt @@ -0,0 +1 @@ +/home/boris diff --git a/erreurs/droits-d-ecriture.log b/erreurs/droits-d-ecriture.log new file mode 100644 index 0000000..ab279ae --- /dev/null +++ b/erreurs/droits-d-ecriture.log @@ -0,0 +1,13 @@ +$ ./ajouter_video_youtube.sh https://www.youtube.com/watch?v=2JYJF9L5YW4 +Error: error loading plugins: open /home/boris/.ipfs/config: permission denied +./ajouter_video_youtube.sh: ligne 31:  XZUID=boris-ThinkPad-T420 : commande introuvable +VIDEO https://www.youtube.com/watch?v=2JYJF9L5YW4 +[youtube] 2JYJF9L5YW4: Downloading webpage +WARNING: There are no annotations to write. +[info] Writing video description metadata as JSON to: /tmp/1615547666114/2JYJF9L5YW4_NPC rides his bike into the mayor.info.json +[download] Destination: /tmp/1615547666114/2JYJF9L5YW4_NPC rides his bike into the mayor.mp4 +[download] 100% of 988.39KiB in 00:00 +mkdir: impossible de créer le répertoire «~»: Permission non accordée +~/astroport/youtube/2JYJF9L5YW4/2JYJF9L5YW4_NPC rides his bike into the mayor.mp4: No such file or directory +./ajouter_video_youtube.sh: ligne 73: /home/boris/astroport/youtube/2JYJF9L5YW4/ajouter_video.txt: Aucun fichier ou dossier de ce type +./ajouter_video_youtube.sh: ligne 82: /tmp/youtube_2JYJF9L5YW4.log: Permission non accordée diff --git a/erreurs/permissions-2.log b/erreurs/permissions-2.log new file mode 100644 index 0000000..f1de3ff --- /dev/null +++ b/erreurs/permissions-2.log @@ -0,0 +1,10 @@ +Error: error loading plugins: open /home/boris/.ipfs/config: permission denied +cat: /home/boris/.zen/secret.dunikey: Permission denied +~/.zen/www/new_youtube_video_in_astroport.sh PATH/ "/home/boris/astroport/youtube/2JYJF9L5YW4/" FILE "2JYJF9L5YW4_NPC rides his bike into the mayor.mp4" +./new_youtube_video_in_astroport.sh: line 45: $'\302\240XZUID=boris-ThinkPad-T420': command not found +SEARCH for ;2JYJF9L5YW4; in YASTRXBIAN +ADDING /home/boris/astroport/youtube/2JYJF9L5YW4/2JYJF9L5YW4_NPC rides his bike into the mayor.mp4 to IPFS and create YASTRXBIAN INDEX +~/.zen/ipfs/./astroport/kodi/vstream/YASTRXBIAN +----------------------------------------------------------------- +Error: error loading plugins: open /home/boris/.ipfs/config: permission denied +ipfs add ERROR diff --git a/erreurs/permissions.log b/erreurs/permissions.log new file mode 100644 index 0000000..797abce --- /dev/null +++ b/erreurs/permissions.log @@ -0,0 +1,4 @@ +Error: error loading plugins: open /home/boris/.ipfs/config: permission denied +cat: /home/boris/.zen/secret.dunikey: Permission denied +./astrXbian/zen/new_file_in_astroport.sh PATH/ "/home/boris/astroport/youtube/KaqC5FnvAEc/" FILE "KaqC5FnvAEc_Trolling Saruman.mp4" +NO FILE diff --git a/erreurs/succes.log b/erreurs/succes.log new file mode 100644 index 0000000..5a8a9ec --- /dev/null +++ b/erreurs/succes.log @@ -0,0 +1,50 @@ +Checking if the file exists at : +/home/boris/astroport/youtube/hpjV962DLWs/hpjV962DLWs_Vladimir Cauchemar - Aulos (Official Music Video).mp4 +in ~/.zen/www/new_youtube_video_in_astroport.sh +SEARCH for ;hpjV962DLWs; in YASTRXBIAN +ADDING /home/boris/astroport/youtube/hpjV962DLWs/hpjV962DLWs_Vladimir Cauchemar - Aulos (Official Music Video).mp4 to IPFS and create YASTRXBIAN INDEX +~/.zen/ipfs/.12D3KooWHLLohhFqwTs3Ccego51w1Q2WUQ8JmhSMWtsZnQpMigHY/astroport/kodi/vstream/YASTRXBIAN +----------------------------------------------------------------- +----------------------------------------------------------------- +IPFS: hpjV962DLWs_Vladimir Cauchemar - Aulos (Official Music Video).mp4 : ipfs ls /ipfs/QmZMTghrSQgi45Xm8Pt7Vg2ShigdsCYvCurVqY7fUU7qGS +----------------------------------------------------------------- +New youtube INDEX ~/.zen/ipfs/.12D3KooWHLLohhFqwTs3Ccego51w1Q2WUQ8JmhSMWtsZnQpMigHY/astroport/kodi/vstream/YASTRXBIAN +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv62juoffwws2yo5rwuqi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv66tlkrtdatdniryuwsi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6v3rnnhdowdenrgvkui': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv64kbmjsgsnbznfguqsi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_krguiqs7gy4dm': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_krguiqs7gezdomi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6ntjkryvi6bwpblxmui': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6wskkntvg6kxne3dc3y': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6qjslf5ewv3vivexq4y': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6wldn5jxunbrpfmukma': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6ykvgbxgc6svkvjuiqi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv65rtjrsgw33sinbwuti': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6sligfghk3swnjreizy': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6msgorrs2r2xjjdtcvi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv632wgjnfavjnnbvtgwi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6ucrjbifszlmofzdari': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv62lviy3eg4cnjqzusui': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv633bozgxivkxirbfiti': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6r3kii3ggy2wonyfena': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv633ige2davkonrbucma': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6njzom2fm5trkbrequi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6v2ggm2e4ndhjjauwri': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6nrtjm2xmtl2pfwge3y': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_pbrgsylo': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv62dqnjldsnrsirgfo4y': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv62keo5yuorzq': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv643pgjbfqljynz3fqzy': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6tbzizvucytxmfxw6qi': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6mdso5shatkvn54tqzy': Permission denied +ls: cannot access '/home/boris/.ipfs/keystore/key_lfhvkvcvijcv6odflbvdsn3torreooa': Permission denied +./new_youtube_video_in_astroport.sh: line 149: /home/boris/.zen/webui/tools/natools.py: No such file or directory +./new_youtube_video_in_astroport.sh: line 158: /home/boris/.zen/webui/tools/natools.py: No such file or directory +-------------------- UPDATE MY INDEX ----------------------------- +film;hpjV962DLWs;;Vladimir Cauchemar - Aulos (Official Music Video);;[Youtube];k51qzi5uqu5dk28g6cg9s58eesfg0r94zupduir4hsme7dyc4x793w0kfluqdm;360p;/ipfs/QmZMTghrSQgi45Xm8Pt7Vg2ShigdsCYvCurVqY7fUU7qGS/hpjV962DLWs_Vladimir%20Cauchemar%20-%20Aulos%20(Official%20Music%20Video).mp4 +----------------- REFRESH GLOBAL KODI INDEX ---------------------- +PUBLISHING ~/.zen/ipfs SELF /ipns/12D3KooWHLLohhFqwTs3Ccego51w1Q2WUQ8JmhSMWtsZnQpMigHY +NEW youtube (hpjV962DLWs_Vladimir Cauchemar - Aulos (Official Music Video).mp4) ADDED. +INDEX UPDATED : http://127.0.0.1:8181/ipns/12D3KooWHLLohhFqwTs3Ccego51w1Q2WUQ8JmhSMWtsZnQpMigHY/.12D3KooWHLLohhFqwTs3Ccego51w1Q2WUQ8JmhSMWtsZnQpMigHY/YASTRXBIAN +VIDEO IPNS LINK : http://127.0.0.1:8181/ipns/k51qzi5uqu5dk28g6cg9s58eesfg0r94zupduir4hsme7dyc4x793w0kfluqdm/8WydxZg8kZbYnj9GAUGbEbwfz55fk1MsZJWYQRfTpjZc/ diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..578aa54 --- /dev/null +++ b/functions.php @@ -0,0 +1,66 @@ +=200 && $httpcode<300); +} + +function guessTypeFromFilename ($filename) { + + $ext = substr($filename, (strrpos($filename, '.') + 1)); + + switch ($ext) { + + case 'mkv': + $type = 'video/mkv'; + break; + + case 'flv': + $type = 'video/flv'; + break; + + case 'avi': + $type = 'video/x-msvideo'; + break; + + case 'webm': + $type = 'video/webm'; + break; + + case 'mkv': + $type = 'video/x-matroska'; + break; + + case '3gp': + $type = 'video/3gp'; + break; + + case 'ogv': + $type = 'video/ogv'; + break; + + default: + $type = 'video/mp4'; + break; + } + + return $type; +} diff --git a/get_youtube_videos.sh b/get_youtube_videos.sh new file mode 100755 index 0000000..a206864 --- /dev/null +++ b/get_youtube_videos.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +HOME=`cat conf/home_dir.txt` +cat $HOME/.zen/ipfs*/.*/astroport/kodi/vstream/YASTRXBIAN | sort | uniq | tail -n +2 diff --git a/index.php b/index.php new file mode 100644 index 0000000..cba55aa --- /dev/null +++ b/index.php @@ -0,0 +1,2 @@ +\n') + +######################################################################## +echo "PUBLISHING ~/.zen/ipfs SELF /ipns/$IPFSNODEID" +MIPFS=$(ipfs add -rHq ~/.zen/ipfs | tail -n 1) +OLDCHAIN=$(cat ~/.zen/ipfs/.${IPFSNODEID}/.chain) +if [[ "$OLDCHAIN" != "$MIPFS" ]] # MODIFY CHAIN only if something was changed +then + echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/ipfs/.${IPFSNODEID}/.timestamp + echo $MIPFS > ~/.zen/ipfs/.${IPFSNODEID}/.chain +fi +NODEIPNS=$(ipfs name publish --quieter /ipfs/$MIPFS) +######################################################################## diff --git a/new_youtube_video_in_astroport.sh b/new_youtube_video_in_astroport.sh new file mode 100755 index 0000000..60ad10a --- /dev/null +++ b/new_youtube_video_in_astroport.sh @@ -0,0 +1,230 @@ +#!/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 +######## #### ### ## # +HOME=`cat conf/home_dir.txt` +######################################################################## +MY_PATH="`dirname \"$0\"`" # relative +MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized +ME="${0##*/}" +YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1); +IPFSNODEID=$(ipfs id -f='\n') +G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) +# ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN +# Astropot/Kodi/Vstream source reads ${PREFIX}ASTRXBIAN from http://127.0.0.1:8181/.$IPFNODEID/ +# Index File Format (could be enhanced) is using Kodi TMDB enhancement +# https://github.com/Kodi-vStream/venom-xbmc-addons/wiki/Voir-et-partager-sa-biblioth%C3%A8que-priv%C3%A9e#d%C3%A9clarer-des-films +######################################################################## +## RUN inotifywait process ~/astroport/ NEW FILE DETECT +# /usr/bin/inotifywait -r -e close_write -m /home/$YOU/astroport | while read dir flags file; do ~/.zen/astrXbian/zen/new_file_in_astroport.sh "$dir" "$file"; done & +# mkdir -p ~/astroport/youtube +# mkdir -p ~/astroport/mp3 +######################################################################## +path="$1" +# Add trailing / if needed +length=${#path} +last_char=${path:length-1:1} +[[ $last_char != "/" ]] && path="$path/"; : + +file="$2" + +extension="${file##*.}" +TITLE="${file%.*}" + + +#echo "~/.zen/www/new_youtube_video_in_astroport.sh PATH/ \"$path\" FILE \"$file\"" +echo "Checking if the file exists at :" +echo "$path$file" +echo "in ~/.zen/www/new_youtube_video_in_astroport.sh" +# .part file false flag correcting (inotify mode) +[[ ! -f "${path}${file}" ]] && file="${TITLE%.*}" && extension="${TITLE##*.}" && [[ ! -f "${path}${file}" ]] && echo "NO FILE" && exit 1 + +# GET XZUID +[[ -f ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title ]] && XZUID=$(cat ~/.zen/ipfs/.$IPFSNODEID/G1SSB/_g1.gchange_title) || XZUID=$(cat /etc/hostname) +[[ ! $(echo "$path" | cut -d '/' -f 4 | grep 'astroport') ]] && echo "Les fichiers sont à placer dans ~/astroport/ MERCI" && exit 1 +TYPE=$(echo "$path" | cut -d '/' -f 5 ) # ex: /home/$YOU/astroport/... TYPE(film, youtube, mp3)/ REFERENCE / +CAT=$(echo "$TYPE" | awk '{ print tolower($0) }') + +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é" + echo "WARNING. $TYPE is root file UNTREATED" && exit 1 +fi + +######################################################################## +# EXTRACT INDEX REFERENCE : TMDB or YOUTUBE (can be extended with new ) +######################################################################## +case ${CAT} in + youtube) + INDEXPREFIX="YOUTUBE_" + REFERENCE=$(echo "$file" | cut -d "_" -f 1) # Youtube filename starts with ID_ + TITLE=$(echo "$TITLE" | cut -d "_" -f 2-) + ;; + mp3) + ## DIFFERENT TREATMENT + INDEXPREFIX="MP3_" + REFERENCE=$(echo "$file" | cut -d "_" -f 1) # Youtube filename starts with ID_ + echo "Please use new_mp3_in_astroport.sh ... EXIT" + exit 1 + ;; + film | serie | anime) + INDEXPREFIX="TMDB_" + REFERENCE=$(echo "$path" | cut -d '/' -f 6 ) # Path contains TMDB id + if ! [[ "$REFERENCE" =~ ^[0-9]+$ ]] # ${REFERENCE} NOT A NUMBER + then + echo "ERROR: $path BAD TMDB code. Get it from https://www.themoviedb.org/ " + exit 1 + fi + ;; + *) + echo "$CAT inconnu" && exit 1 + ;; +esac + +######################################################################## +## CHECK if ${INDEXPREFIX}${REFERENCE} KEY exists +######################################################################## +echo "SEARCH for ;$REFERENCE; in ${PREFIX}ASTRXBIAN" +isREFERENCEinINDEX=$(grep ";$REFERENCE;" ~/.zen/ipfs*/.*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN) +if [[ ${isREFERENCEinINDEX} ]] +then + if [[ -d ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] + then + # FILE IS MINE, NEW VERSION?! replacing it in INDEX + ipnslink=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) + echo "FOUND IPNS ${INDEXPREFIX}${REFERENCE} = $ipnslink" + + # DELETING GCHANGE AD, WILL BE CREATED AGAIN + gchangeAD=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad) + ~/.zen/astrXbian/zen/jaklis/jaklis.py deleteoffer -i $gchangeAD + rm ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad + else + echo "FILE IS ALREADY EXISTING FROM ANOTHER FRIEND" + echo ${isREFERENCEinINDEX} | head -n 1 | cut -d ":" -f 2- + # I could send message to my friend, PIN, exchange contract... WHAT IS BEST TODO ?? + fi + + # DELETING OLD LINE FROM INDEX + sed -i "/;$REFERENCE;/d" ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN + + # [[ "$USER" != "xbian" ]] && zenity --warning --width 300 --text "DOUBLON ${isREFERENCEinINDEX}" +fi + +######################################################################## +echo "ADDING ${path}${file} to IPFS and create ${PREFIX}ASTRXBIAN INDEX" +echo "~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN" +echo "-----------------------------------------------------------------" + +IPFSREPFILEID=$(ipfs add -wq "${path}${file}" | tail -n 1) +[[ $IPFSREPFILEID == "" ]] && echo "ipfs add ERROR" && exit 1 +echo "-----------------------------------------------------------------" +echo "IPFS: $file : ipfs ls /ipfs/$IPFSREPFILEID" +echo "-----------------------------------------------------------------" +echo "New $TYPE INDEX ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN " +[[ ! -d ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ ]] && mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/ + +URLENCODE_FILE_NAME=$(echo ${file} | jq -Rr @uri) + +######################################################################## +## CREATE NEW ipns KEY : ${INDEXPREFIX}${REFERENCE} +######################################################################## +######################################################################## +[[ ! -d ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} ]] && mkdir -p ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB} && KEY=$(ipfs key gen "${INDEXPREFIX}${REFERENCE}") && KEYFILE=$(ls -t ~/.ipfs/keystore/ | head -n 1) +## INIT ipns +if [[ $KEY ]]; then + # memorize IPNS key filename for easiest exchange + echo "$KEYFILE" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename + # Publishing IPNS key + echo "$KEY" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link + # .zen could contain ZEN for economic value + touch ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.zen + ################ ENCRYPT keystore/$KEYFILE + $MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.ipfs/keystore/$KEYFILE -o ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.natools.encrypt +else + KEY=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.link) + KEYFILE=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipns.key.keystore_filename) +fi + +# CLEAR ipfs link (is then cyphered to manage exchange regulation) +echo "/ipfs/$IPFSREPFILEID/${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink +################ ENCRYPT .ipfs.filelink +$MY_PATH/tools/natools.py encrypt -p $G1PUB -i ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink -o ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink.natools.encrypt +rm ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filelink + +echo "${file}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.ipfs.filename +echo "${TITLE}" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.title +echo "$(date -u +%s%N | cut -b1-13)" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.timestamp + +# COPY "ajouter_video.txt" later used +[[ -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ]] && cp -f ~/astroport/${TYPE}/${REFERENCE}/ajouter_video.txt ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ + +# IPNS index.html Redirect to ipfs streaming link (could be contract or anything else !!) +echo "" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/index.html + +IPNSLINK=$(ipfs key list -l | grep ${INDEXPREFIX}${REFERENCE} | cut -d ' ' -f 1) +echo " +

ASTROPORT/KODI

+Pour regarder ${TITLE}, rejoignez notre video-club et devenons amis...

+Installez astrXbian" > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/index.html + +NEWIPFS=$(ipfs add -rHq ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/ | tail -n 1 ) +IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) +######################################################################## + +######################################################################## +# PUBLISH GCHANGE AD for TMDB film/serie/anime ONLY +######################################################################## +if [[ "${CAT}" =~ ^(film|serie|anime)$ ]] +then + if [[ ! -f ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad ]] + then + GOFFER=$(~/.zen/astrXbian/zen/jaklis/jaklis.py setoffer -t "${TITLE} #astroport #${INDEXPREFIX}${REFERENCE}" -d "https://aries.copylaradio.com/ipns/$IPNS/" -p ~/.zen/astrXbian/disk.png) + echo $GOFFER > ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad + NEWIPFS=$(ipfs add -rHq ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/ | tail -n 1 ) + IPNS=$(ipfs name publish --quieter --key="${INDEXPREFIX}${REFERENCE}" $NEWIPFS) + fi + echo "Annonce gchange : $(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/.gchange.ad)" +fi + +######################################################################## +# NEW ${PREFIX}ASTRXBIAN FILE : Add header +[[ ! -f ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ]] \ +&& echo "CAT;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://127.0.0.1:8181" > ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN + +# MEMORIZE NEW PIN +mkdir -p ~/.zen/ipfs/.${IPFSNODEID}/PIN/${IPFSREPFILEID}/ +touch ~/.zen/ipfs/.${IPFSNODEID}/PIN/${IPFSREPFILEID}/${G1PUB} + +# ADD NEW LINE TO INDEX +if [[ -f ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt ]] +then + line=$(cat ~/.zen/KEY/${INDEXPREFIX}${REFERENCE}/${G1PUB}/ajouter_video.txt | sed "s/_IPFSREPFILEID_/$IPFSREPFILEID/g" | 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 "----------------- REFRESH GLOBAL KODI INDEX ----------------------" +cat ~/.zen/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ~/.zen/ipfs_swarm/.*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN | sort | uniq > ~/.zen/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN + +######################################################################## +# REFRESH IPNS SELF PUBLISH +######################################################################## +./ipns_self_publish.sh +######################################################################## + +echo "NEW $TYPE ($file) ADDED." +echo "INDEX UPDATED : http://127.0.0.1:8181/ipns/${IPFSNODEID}/.${IPFSNODEID}/${PREFIX}ASTRXBIAN" +echo "VIDEO IPNS LINK : http://127.0.0.1:8181/ipns/$KEY/$G1PUB/" +exit 0 diff --git a/styles/crowdbunker/astrobunker.png b/styles/crowdbunker/astrobunker.png new file mode 100644 index 0000000..21e530d Binary files /dev/null and b/styles/crowdbunker/astrobunker.png differ diff --git a/styles/crowdbunker/crowdbunker.css b/styles/crowdbunker/crowdbunker.css new file mode 100644 index 0000000..d925234 --- /dev/null +++ b/styles/crowdbunker/crowdbunker.css @@ -0,0 +1,133 @@ +:root { + + --pink: hsl(338.5, 72.8%, 36.1%); + --light-pink: hsl(338.5, 72.8%, 56.1%); + --canard: hsl(200.8, 100%, 9.6%); +} + +body { + + background: #121212; + color: white; + margin: 0; + padding: 0; + font-family: Roboto,sans-serif; +} + +header { + + background: var(--canard); + overflow: hidden; + padding: 1rem 0.666rem 1.333rem; + margin-bottom: 2rem; + +} + +header a, +header a:visited { + + color: white; + text-decoration: none; +} + +header a:active { + + outline: 0; +} + +header > * { + + font-size: 1.5rem; + margin: 0; + padding: 0; +} + +header > .sitetitle { + + margin-bottom: 0.25rem; +} + +header > .sitetitle span { + + border-bottom: 0.125rem solid var(--pink); +} + +header .usp { + color: white; + font-size: 0.95rem; +} + +header .usp strong { + + font-size: 1em; + font-weight: inherit; + color: var(--light-pink); +} + +main { + + width: 95%; + margin: auto; +} + +#videosList { + + display: grid; + grid-gap: 1rem 1rem; + grid-auto-flow: row; + grid-template-columns: 322px 322px 322px; + + list-style: none; + margin: 0; + padding: 0; + justify-content: center; +} + +#videosList li { + + background: var(--canard); + border-color: var(--pink); + border-radius: 0.25rem; + border-width: 1px; + border-style: solid; + overflow: hidden; +} + +#videosList .video-title { + + padding: 0.5rem 1rem; +} + +.video-title, +.video-title a, +.video-title a:visited { + + color: white; + font-weight: bold; + text-decoration: none; +} + +article { + + border-radius: 0.25rem; + background: hsl(200.8, 100%, 9.6%); + width: 58.3%; + margin: auto; + overflow: hidden; + +} + +article video { + + width: 100%; + max-height: calc(100vh - 14rem); + background: black; +} + +article .video-title { + + font-weight: bold; + padding: 1rem 1rem; + font-size: 1.25rem; + margin: 0; +} diff --git a/swarm_files.php b/swarm_files.php new file mode 100644 index 0000000..b751ea5 --- /dev/null +++ b/swarm_files.php @@ -0,0 +1,79 @@ +'; print_r($dir); echo ''; +array_pop($dir); // . +array_pop($dir); // .. +// echo '
'; print_r($dir); echo '
'; + +$swarm = array(); + +foreach ($dir as $d) { + + $fst = substr($d, 0, 1); + + if ($fst == '.') { + + $swarm[] = $d; + } +} + + + +foreach ($swarm as $peer) { + + $peerName = file_get_contents('swarm/' . $peer . '/G1SSB/_g1.astroport_title'); + + echo '

'. $peerName . ' ['. substr($peer, 0, 5) . '…' . substr($peer, -4) . ']

'; + + $files = scandir('swarm/' . $peer . '/astroport/kodi/vstream', SCANDIR_SORT_DESCENDING); + array_pop($files); // . + array_pop($files); // .. + + foreach ($files as $f) { + + echo '

' . getCollectionType($f) . '

'; + + $collection = file_get_contents('swarm/' . $peer . '/astroport/kodi/vstream/' . $f); + $collection = trim($collection); + + $videos = explode("\n", $collection); + $videos = array_reverse($videos); + array_pop($videos); + + echo '
    '; + + foreach ($videos as $v) { + + list($a, $b, $c, $videoName, $e, $g, $h, $m, $videoURI) = explode(";", $v); + + + $videoURL = 'http://'. HOST. $videoURI; + $mimeType = guessTypeFromFilename($videoURL); + + if ($mimeType == 'video/mp4') { + + echo '
  • '; + echo ' + ' . $videoName . '
    + ('. $mimeType . ')
    + + '; + + echo '
  • '; + } + } + + echo ' + +
'; + + } +} diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..28d0af9 --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +coucou diff --git a/youtube.php b/youtube.php new file mode 100644 index 0000000..bb4ee88 --- /dev/null +++ b/youtube.php @@ -0,0 +1,90 @@ + $mimeType, + 'url' => $videoURL, + 'uri' => $videoURI, + 'name' => $videoName, + 'youtubeID' => $youtubeID + ]; + } + +} + + +?> + + + Astrobunker + + + + + +
+

+ +

+

+ +

+
+ +
+ + +
+ + +
+ +'; + +foreach ($videosList as $video) { + + echo '
  • '; + + $href = 'youtube_watch.php?uri='. urlencode($video['uri']) . '&name='. urlencode($video['name']) .'&mime='. $video['mime']; + + echo ' + + + '. $video['name'] . ' + + +

    + + ' . $video['name'] . ' + +

    '; + + echo '
  • '; +} + +echo ''; +?> +
    + + + + diff --git a/youtube_add_video.php b/youtube_add_video.php new file mode 100644 index 0000000..486c2f3 --- /dev/null +++ b/youtube_add_video.php @@ -0,0 +1,44 @@ + + + + Astrobunker + + + + + +
    +

    + +

    +

    + +

    +
    + +
    +
    + Votre vidéo est en cours de téléchargement. +
    +
    + + + + + + diff --git a/youtube_add_video_aux.php b/youtube_add_video_aux.php new file mode 100644 index 0000000..373b834 --- /dev/null +++ b/youtube_add_video_aux.php @@ -0,0 +1,16 @@ +'; print_r($output); echo ''; diff --git a/youtube_watch.php b/youtube_watch.php new file mode 100644 index 0000000..6c22dee --- /dev/null +++ b/youtube_watch.php @@ -0,0 +1,57 @@ + + + + Astrobunker + + + + + +
    +
    + +
    +

    + +

    +
    + +
    + + + +

    + ' . $videoName . ' +

    +

    + Télécharger +

    + '; +?> +
    + + + + +