diff --git a/ASTROBOT/G1Kodi.sh b/ASTROBOT/G1Kodi.sh
new file mode 100755
index 00000000..50fa408d
--- /dev/null
+++ b/ASTROBOT/G1Kodi.sh
@@ -0,0 +1,301 @@
+#!/bin/bash
+########################################################################
+# Version: 0.5
+# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
+########################################################################
+# PAD COCODING : https://pad.p2p.legal/s/G1Kodi
+# KODI SERVICE : Publish and Merge Friends Kodi Movies into RSS Stream
+########################################################################
+########################################################################
+MY_PATH="`dirname \"$0\"`" # relative
+MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
+ME="${0##*/}"
+
+. "${MY_PATH}/../tools/my.sh"
+
+echo "(✜‿‿✜) G1Kodi : Get Kodi database from ~/.kodi/userdata/Database/MyVideos116.db
+export movie to RSS (ex : http://ipfs.localhost:8080/ipfs/QmSJYf4uTj3NmqovSFZpBZuUhSS8j9FXKKnAjUMuVE896k)"
+echo "$ME RUNNING"
+
+## EXTRACT MOVIES FROM KODI
+[[ ! -s ~/.kodi/userdata/Database/MyVideos116.db ]] && echo "KODI MOVIE SQLITE DB MISSING - EXIT -" && exit 1
+## CREATE 1ST ONLY TIDDLER INTO TW
+
+########################################################################
+########################################################################
+INDEX="$1"
+[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
+[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
+[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
+ORIGININDEX=${INDEX}
+
+PLAYER="$2"
+[[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
+[[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
+
+ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
+[[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
+
+G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
+[[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
+
+# Extract tag=tube from TW
+MOATS="$3"
+[[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
+
+echo "${PLAYER} ${INDEX} ${ASTRONAUTENS} ${G1PUB} "
+#~ ###################################################################
+#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
+#~ ###################################################################
+mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1Kodi/${PLAYER}/
+mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
+mkdir -p $HOME/.zen/game/players/${PLAYER}/G1Kodi/
+
+echo "EXPORT Kodi Wish for ${PLAYER}"
+rm -f ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json
+tiddlywiki --load ${INDEX} \
+ --output ~/.zen/game/players/${PLAYER}/G1Kodi \
+ --render '.' 'Kodi.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Kodi'
+
+[[ $(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json ) == "[]" ]] \
+ && echo "AUCUN VOEU G1KODI" \
+ && echo "EXIT" && exit 0
+
+WISH=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wish')
+WISHNS=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wishns')
+echo "G1KODI: $WISH ${myIPFS}$WISHNS"
+
+## Export already in TW movies
+rm -f ~/.zen/game/players/${PLAYER}/G1Kodi/TWmovies.json
+
+tiddlywiki --load ${INDEX} \
+ --output ~/.zen/game/players/${PLAYER}/G1Kodi \
+ --render '.' 'TWmovies.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Kodi]!tag[G1Voeu]]'
+
+[[ $(cat ~/.zen/game/players/${PLAYER}/G1Kodi/TWmovies.json) == "[]" ]] && echo "AUCUN FILM G1KODI"
+
+echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
+
+## EXTRACT MOVIE FILES LIST TO CSV
+echo "\"titre\",\"desc\",\"sub\",\"source\",\"cat\",\"extrait\",\"prem\"" > ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv
+sqlite3 -csv ~/.kodi/userdata/Database/MyVideos116.db 'select c00, c01, c03, c22, c14, c19, premiered from movie' >> ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv
+[[ ! -s ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv ]] && echo "EMPTY KODI MOVIE DATABASE - EXIT -" && exit 0
+#################################
+
+### CONVERT TO JSON
+## Use "miller" to convert csv into json
+mlr --c2j --jlistwrap cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv > ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json
+
+## INDEX TITRE LIST
+cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq -r .[].titre > ~/.zen/tmp/${MOATS}/${PLAYER}.movie.id
+
+boucle=0
+
+while read TITRE; do
+
+ DESC=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .desc')
+ SUB=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .sub')
+ SOURCE=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .source')
+ CAT=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .cat' | tail -n 1)
+ YID=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .extrait' | rev | cut -d '=' -f 1 | rev)
+
+ PREM=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .prem')
+ MIME=$(file --mime-type -b "$SOURCE" )
+
+ YEAR=$(echo "${PREM}" | cut -f1 -d '-' )
+ TITLE=$(echo "${TITRE}" | detox --inline ) ## TITLE SANITY
+ TAGS="${YEAR} G1Kodi ${TITLE} ${PLAYER} $(echo "${CAT}" | detox --inline | sed 's~_~\ ~g')"
+
+ echo "${YID} > ${TITLE}"
+ echo "($MIME)" "$SOURCE"
+
+ ## ADD MOVIE TO IPFS
+ #~ -
+ #~ Delicatessen
+ #~ La vie des étranges habitants d'un immeuble de banlieue qui se dresse dans un immense terrain vague et qui tous vont se fournir chez le boucher-charcutier, à l'enseigne « Delicatessen ».
+ #~ http://ipfs.localhost:8080/ipfs/QmfVuhDo4kEk5eh5EULfZGxiWqrrCcHBehojgPF6kiq8r3/Delicatessen.mp4
+ #~ Sun, 6 Sep 2022 16:20:00 +0000
+ #~
+
+ ## CHECK IN TW
+ if [[ ! -s ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json ]]; then
+ tiddlywiki --load ${ORIGININDEX} \
+ --output ~/.zen/game/players/${PLAYER}/G1Kodi \
+ --render '.' "${TITLE}.dragdrop.json" 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "'"Kodi_${TITLE}"'"
+ fi
+ ## CHECK PLAYER G1KODI CACHE. QUICKER.
+
+ if [[ $(cat ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json) == "[]" ]]; then
+ echo "NOT IN TW either IN CACHE"
+
+
+ if [[ $MIME == "video/mp4" ]]; then
+ echo "$MIME. GOOD. RECORDING TO TW"
+
+
+ echo "## Creation json tiddler"
+ echo '[
+ {
+ "text": "'${DESC}'",
+ "title": "'Kodi_${TITLE}'",
+ "created": "'${MOATS}'",
+ "year": "'${YEAR}'",
+ "mime": "'${MIME}'",
+ "prem": "'${PREM}'",
+ "sub": "'${SUB}'",
+ "desc": "'${DESC}'",
+ "yid": "'${YID}'",
+ "cat": "'${CAT}'",
+ "g1pub": "'${G1PUB}'",
+ "source": "'${SOURCE}'",
+ "ipfs_one": "''",
+ "titre": "'${TITRE}'",
+ "modified": "'${MOATS}'",
+ "tags": "'${TAGS}'"
+ }
+ ]
+ ' > ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json
+
+
+ echo "ADD G1KODI IN TW ${PLAYER} : $myIPFS/ipns/$ASTRONAUTENS"
+ rm -f ~/.zen/tmp/newindex.html
+ tiddlywiki --load ${INDEX} \
+ --import ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json "application/json" \
+ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
+
+ if [[ -s ~/.zen/tmp/newindex.html ]]; then
+
+ cp -f ~/.zen/tmp/newindex.html ~/.zen/tmp/${MOATS}/index.html
+
+ INDEX="$HOME/.zen/tmp/${MOATS}/index.html"
+ echo "NEWINDEX : ${INDEX}"
+
+ else
+
+ echo "CANNOT UPDATE TW - FATAL ERROR -"
+ exit 1
+
+ fi
+
+ else
+
+ echo "MOVIE NO COMPATIBLE. PLEASE CONVERT TO MP4"
+
+ fi
+
+ else
+
+ echo "## TIDDLER WITHOUT ipfs_one"
+ ## MANAGING TIDDLER UPDATE
+ IPFSONE=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json | jq -r .[].ipfs_one)
+ SOURCE=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json | jq -r .[].source)
+
+ if [[ ${IPFSONE} == "" ]]; then
+
+ ## RUN NO IPFS_ONE STEP
+ echo "${SOURCE}"
+ [[ ${boucle} == 1 ]] && echo "IPFS ADD DONE ONCE TODAY" && continue
+
+ $IPFSMOVIE=$(ipfs add -q "$SOURCE")
+ echo "/ipfs/${IPFSMOVIE}" > ~/.zen/tmp/${MOATS}/source
+
+ ~/.zen/Astroport.ONE/tools/natools.py encrypt -p ${G1PUB} -i ~/.zen/tmp/${MOATS}/source -o ~/.zen/tmp/${MOATS}/source.enc
+ ENCODING=$(cat ~/.zen/tmp/${MOATS}/source.enc | base16)
+ echo "MOVIE ADDED /ipfs/${IPFSMOVIE} :NATOOLS16: ${ENCODING}"
+
+ ## UPDATE ipfs_one in JSON
+ cat ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json | jq --arg v "${ENCODING}" '.[].ipfs_one = "$v"' \
+ > ~/.zen/game/players/${PLAYER}/G1Kodi/ipfs_one.json
+
+ ## INSERT NEW TIDDLER
+ tiddlywiki --load ${INDEX} \
+ --import ~/.zen/game/players/${PLAYER}/G1Kodi/ipfs_one.json "application/json" \
+ --output ~/.zen/tmp --render "$:/core/save/all" "newindex.html" "text/plain"
+
+ [[ -s ~/.zen/tmp/newindex.html ]] \
+ && cp -f ~/.zen/tmp/newindex.html ~/.zen/tmp/${MOATS}/index.html
+
+ boucle=$((boucle+1)) ## COUNT HOW MANY MOVIES GOING TO IPFS
+
+ else
+
+ ## ipfs_one STEP OK
+ echo "ipfs_one NATOOLS DECRYPTING"
+ echo "${IPFSONE}" | base16 -d > ~/.zen/tmp/${MOATS}/source.one.enc
+ ~/.zen/Astroport.ONE/tools/natools.py decrypt -f pubsec \
+ -k ~/.zen/game/players/${PLAYER}/secret.dunikey \
+ -i ~/.zen/tmp/${MOATS}/source.one.enc -o $HOME/.zen/tmp/${MOATS}/source.one
+
+ cat $HOME/.zen/tmp/${MOATS}/source.one
+
+ ## TODO
+ ## ADD FIELDS ipfs_AG1PUB for my FRIENDS
+ #~ cat ~/.zen/game/players/${PLAYER}/G1Kodi/${TITLE}.dragdrop.json | jq --arg a "${AG1PUB}" --arg v "${ACODING}" '.[] |= .+ {"ipfs_$a":"$v"}'
+
+
+
+ fi
+
+
+ YID=$(cat ~/.zen/tmp/${MOATS}/${PLAYER}.movie.json | jq --arg v "${TITRE}" -r '.[] | select(.titre==$v) | .extrait' | rev | cut -d '=' -f 1 | rev)
+
+ echo "MOVIE ALREADY IN TW"
+
+ fi
+
+ echo "~~~~~~~~"
+
+done < ~/.zen/tmp/${MOATS}/${PLAYER}.movie.id
+
+if [[ $(diff ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html ${INDEX}) ]]; then
+
+ ################################################
+ ## UPDATE TW CHAIN WITH PREVIOUSLY RECORDED CHAIN
+ tiddlywiki --load ${INDEX} \
+ --output ~/.zen/tmp/${MOATS} \
+ --render '.' 'Astroport.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Astroport'
+ ASTROPORT=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].astroport)
+ [[ $ASTROPORT == "" ]] && echo "INCOMPATIBLE TW - ADD Astroport TIDDLER - CORRECTION NEEDED -" && exit 1
+
+ CURCHAIN=$(cat ~/.zen/tmp/${MOATS}/Astroport.json | jq -r .[].chain | rev | cut -f 1 -d '/' | rev) # Remove "/ipfs/" part
+ [[ $CURCHAIN == "" || $CURCHAIN == "null" ]] && CURCHAIN="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # AVOID EMPTY
+ echo "CURCHAIN=$CURCHAIN"
+ [[ -s ~/.zen/game/players/$PLAYER/ipfs/moa/.chain ]] \
+ && ZCHAIN=$(cat ~/.zen/game/players/$PLAYER/ipfs/moa/.chain) \
+ && echo "# CHAIN : $CURCHAIN -> $ZCHAIN" \
+ && sed -i "s~$CURCHAIN~$ZCHAIN~g" ${INDEX}
+ ################################################
+
+ espeak "I P N S Publishing. Please wait..."
+ cp ${INDEX} ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html
+
+ cp ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain \
+ ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain.$(cat ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats)
+
+ TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1)
+ ipfs name publish --key=${PLAYER} /ipfs/$TW
+
+ echo $TW > ~/.zen/game/players/${PLAYER}/ipfs/moa/.chain
+ echo ${MOATS} > ~/.zen/game/players/${PLAYER}/ipfs/moa/.moats
+
+ echo "================================================"
+ echo "${PLAYER} : $myIPFS/ipns/$ASTRONAUTENS"
+ echo "================================================"
+ echo
+
+ [[ $XDG_SESSION_TYPE == 'x11' ]] && xdg-open "http://ipfs.localhost:8080/ipns/$ASTRONAUTENS"
+
+else
+
+ echo "UNCHANGED TW"
+
+fi
+
+echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
+
+ls -al $HOME/.zen/tmp/${MOATS}
+
+exit 0
+
+## ./userdata/mediasources.xml
+## ./userdata/sources.xml
diff --git a/ASTROBOT/_G1Kodi.sh b/ASTROBOT/_G1Kodi.sh
deleted file mode 100755
index 0f6702a3..00000000
--- a/ASTROBOT/_G1Kodi.sh
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/bin/bash
-########################################################################
-# Version: 0.5
-# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
-########################################################################
-# PAD COCODING : https://pad.p2p.legal/s/G1Kodi
-########################################################################
-MY_PATH="`dirname \"$0\"`" # relative
-MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
-ME="${0##*/}"
-
-. "${MY_PATH}/../tools/my.sh"
-
-echo "(✜‿‿✜) G1Kodi : Get Kodi database from ~/.kodi/userdata/Database/MyVideos116.db
-export movie to RSS (ex : http://ipfs.localhost:8080/ipfs/QmSJYf4uTj3NmqovSFZpBZuUhSS8j9FXKKnAjUMuVE896k)"
-echo "$ME RUNNING"
-
-########################################################################
-# KODI SERVICE
-########################################################################
-########################################################################
-INDEX="$1"
-[[ ! ${INDEX} ]] && INDEX="$HOME/.zen/game/players/.current/ipfs/moa/index.html"
-[[ ! -s ${INDEX} ]] && echo "ERROR - Please provide path to source TW index.html" && exit 1
-[[ ! -s ${INDEX} ]] && echo "ERROR - Fichier TW absent. ${INDEX}" && exit 1
-
-#~ PLAYER="$2"
-#~ [[ ! ${PLAYER} ]] && PLAYER="$(cat ~/.zen/game/players/.current/.player 2>/dev/null)"
-#~ [[ ! ${PLAYER} ]] && echo "ERROR - Please provide PLAYER" && exit 1
-
-#~ ASTRONAUTENS=$(ipfs key list -l | grep -w ${PLAYER} | cut -d ' ' -f1)
-#~ [[ ! ${ASTRONAUTENS} ]] && echo "ERROR - Clef IPNS ${PLAYER} introuvable!" && exit 1
-
-#~ G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub)
-#~ [[ ! $G1PUB ]] && echo "ERROR - G1PUB ${PLAYER} VIDE" && exit 1
-
-#~ # Extract tag=tube from TW
-#~ MOATS="$3"
-#~ [[ ! ${MOATS} ]] && MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
-
-#~ ###################################################################
-#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
-#~ ###################################################################
-#~ mkdir -p $HOME/.zen/tmp/${IPFSNODEID}/G1Kodi/${PLAYER}/
-#~ mkdir -p $HOME/.zen/game/players/${PLAYER}/G1Kodi/
-#~ mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
-
-#~ echo "EXPORT Kodi Wish for ${PLAYER}"
-#~ rm -f ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json
-#~ tiddlywiki --load ${INDEX} \
- #~ --output ~/.zen/game/players/${PLAYER}/G1Kodi \
- #~ --render '.' 'Kodi.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'Kodi'
-
-#~ ## Second export try
-#~ if [[ ! -s ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json ]] ; then
- #~ tiddlywiki --load ${INDEX} \
- #~ --output ~/.zen/game/players/${PLAYER}/G1Kodi \
- #~ --render '.' 'Kodi.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Kodi]]'
-
- #~ fi
-
-#~ [[ ! -s ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json ]] && echo "AUCUN VOEU G1KODI - EXIT -" && exit 0
-
-
-#~ WISH=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wish')
-#~ WISHNS=$(cat ~/.zen/game/players/${PLAYER}/G1Kodi/Kodi.json | jq -r '.[].wishns')
-
-MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
-
-#~ ###################################################################
-#~ ## CREATE APP NODE PLAYER PUBLICATION DIRECTORY
-#~ ###################################################################
-mkdir -p $HOME/.zen/tmp/${MOATS} && echo $HOME/.zen/tmp/${MOATS}
-
-#~ echo ${myIPFS}${WISHNS}
-echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
-
-## EXTRACT MOVIE FILES LIST
-sqlite3 -csv ~/.kodi/userdata/Database/MyVideos116.db 'select c00, c01, c22, c14 from movie' > ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv
-[[ ! -s ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv ]] && echo "EMPTY KODI MOVIE DATABASE - EXIT -" && exit 0
-#################################
-
-## PREPARE RSS XML
-echo '
-
-
- Astroport Kodi
- Astroport Kodi Movies RSS feed
- http://astroport.copylaradio.com
- 2020 Astroport.com All rights reserved
- Mon, 6 Sep 2020 00:01:00 +0000
- Sun, 6 Sep 2020 16:20:00 +0000
- 1800' > $HOME/.zen/tmp/${MOATS}/movie.rss
-
-while read LINE
-do
- TITLE=$(echo $LINE | csvcut -c 1)
- DESC=$(echo $LINE | csvcut -c 2)
- SOURCE=$(echo $LINE | csvcut -c 3)
- CAT=$(echo $LINE | csvcut -c 4 | sed "s~\/~~g")
- echo "$TITLE ($CAT)"
- echo "$SOURCE"
- ## ADD MOVIE TO IPFS
- #~ -
- #~ Delicatessen
- #~ La vie des étranges habitants d'un immeuble de banlieue qui se dresse dans un immense terrain vague et qui tous vont se fournir chez le boucher-charcutier, à l'enseigne « Delicatessen ».
- #~ http://ipfs.localhost:8080/ipfs/QmfVuhDo4kEk5eh5EULfZGxiWqrrCcHBehojgPF6kiq8r3/Delicatessen.mp4
- #~ Sun, 6 Sep 2022 16:20:00 +0000
- #~
-
- if [[ ! $(echo $SOURCE | grep ipfs) ]]; then
-
- MIME=$(file --mime-type -b "$SOURCE" )
- echo "$MIME"
-
- FILE=$(basename $SOURCE )
- EXT=$(echo $FILE | rev | cut -d '.' -f1 | rev )
- #~ PATH=$(echo $SOURCE | rev | cut -d / -f2- | rev )
- echo "FILE : $FILE ($EXT)"
-
- tiddlywiki --load ${INDEX} \
- --output ~/.zen/tmp/${MOATS} \
- --render '.' 'inTW.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' "$FILE"
-
- [[ -s ~/.zen/tmp/${MOATS}/inTW.json ]] \
- && echo "FOUND IN TW" && continue \
- || echo "NOT IN TW"
-
- #~ # [[ $MIME == "video/mp4" ]] && ${MY_PATH}/../tools/make_video_gifanim_ipfs.sh "$PATH" "$FILE"
-
- #~ else
-
- #~ echo "IPFS FILE : '$SOURCE"
- #~ echo '
- #~ -
- #~ '$TITLE'
- #~ '$DESC'
- #~ '$SOURCE'
- #~ Sun, 1 Sep 2020 20:12:00 +0000
- #~
- #~ ' >> $HOME/.zen/tmp/${MOATS}/movie.rss
-
- fi
-
- echo "~~~~~~~~"
-
-
-done < ~/.zen/tmp/${MOATS}/${PLAYER}.movie.csv
-
-echo '
-' >> $HOME/.zen/tmp/${MOATS}/movie.rss
-
-#~ IPRSS=$(ipfs add -q $HOME/.zen/tmp/${MOATS}/movie.rss)
-
-#~ ipfs name publish -k $WISH /ipfs/$IPRSS
-
-echo "=========== ( ◕‿◕) (◕‿◕ ) =============="
-
-ll $HOME/.zen/tmp/${MOATS}
-
-exit 0
diff --git a/RUNTIME/VOEUX.refresh.sh b/RUNTIME/VOEUX.refresh.sh
index 98f3d7b6..9cf157f0 100755
--- a/RUNTIME/VOEUX.refresh.sh
+++ b/RUNTIME/VOEUX.refresh.sh
@@ -125,7 +125,8 @@ do
rm -f ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json
echo "$floop / ${#FINDEX[@]} TRY EXPORT [tag[G1${WISHNAME}]] FROM $APLAYER TW"
tiddlywiki --load $FRIENDTW \
- --output ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME} --render '.' _${APLAYER}'.tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
+ --output ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME} \
+ --render '.' _${APLAYER}'.tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1'${WISHNAME}']!tag[G1Voeu]!sort[modified]limit[30]]'
[[ ! -s ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME}/_${APLAYER}.tiddlers.json ]] \
&& echo "NO ${WISHNAME} - CONTINUE -" \
@@ -214,6 +215,16 @@ do
### PREPARE WISHNAME index.html
##################################
+ ## RUN N1Program ASTROBOT PROGRAM (like G1CopierYoutube.sh)
+ if [[ -s $MY_PATH/N1${WISHNAME}.sh ]]; then
+ echo "........................ Astrobot N1${WISHNAME}.sh program found !"
+ echo "________________________________ Running it *****"
+ ${MY_PATH}/N1${WISHNAME}.sh "$INDEX" "${PLAYER}" "$MOATS"
+ echo "________________________________ Finished ******"
+ else
+ echo "......................... N1${WISHNAME} REGULAR Ŋ1 RSS JSON"
+ fi
+
### ADD TO IPFS
echo "++WISH PUBLISHING++ ipfs add -qHwr ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME}/*"
ls ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/g1voeu/${WISHNAME}/
diff --git a/ajouter_media.sh b/ajouter_media.sh
index 051bef19..d2382543 100755
--- a/ajouter_media.sh
+++ b/ajouter_media.sh
@@ -114,14 +114,7 @@ fi
COINS=$($MY_PATH/tools/COINScheck.sh $G1PUB | tail -n 1)
echo "$PLAYER wallet = $COINS G1"
-###
-# 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))
-###
+
########################################################################
## EXCEPTION COPIE PRIVE
diff --git a/install.sh b/install.sh
index 3b0b37ca..d9499b90 100755
--- a/install.sh
+++ b/install.sh
@@ -44,7 +44,7 @@ echo "#############################################"
echo "######### INSTALL BASE & PYTHON3 PACKAGE ####"
echo "#############################################"
-for i in git make cmake fail2ban npm netcat-traditional ncdu chromium csvkit inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
+for i in git make cmake fail2ban npm netcat-traditional ncdu chromium miller inotify-tools curl net-tools libsodium* libcurl4-openssl-dev python3-pip python3-setuptools python3-wheel python3-dotenv python3-gpg python3-jwcrypto python3-brotli mpack; do
if [ $(dpkg-query -W -f='${Status}' $i 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
echo ">>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Installation $i <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
sudo apt install -y $i
diff --git a/templates/_sandbox/kodi.rss b/templates/_sandbox/kodi.rss
new file mode 100644
index 00000000..18d6cd08
--- /dev/null
+++ b/templates/_sandbox/kodi.rss
@@ -0,0 +1,35 @@
+
+
+
+ RSS MOVIE
+ Astroport Kodi RSS feed
+ http://astroport.copylaradio.com
+ 2020 Astroport.com All rights reserved
+ Mon, 6 Sep 2020 00:01:00 +0000
+ Sun, 6 Sep 2020 16:20:00 +0000
+ 1800
+
+ -
+ Delicatessen
+ Un festin comique et funeste.
+ http://ipfs.localhost:8080/ipfs/QmfVuhDo4kEk5eh5EULfZGxiWqrrCcHBehojgPF6kiq8r3/Delicatessen.mp4
+ Sun, 6 Sep 2022 16:20:00 +0000
+
+
+ -
+ Le Petit Prince
+ Histoire à lire
+ http://ipfs.localhost:8080/ipfs/QmQwYpoHX6Fw26nd3KFfLj71Uv34riT4F5X2RFy2rmHekW
+ Sun, 6 Sep 2022 16:20:00 +0000
+
+
+ -
+ Le Roi des Ronces
+ coucou
+ http://ipfs.localhost:8080/ipfs/QmXMrgJ5YfVaXxQCaMdD6i87HKjJ8sX9iZKPthuMfTewGy
+ Sun, 6 Sep 2022 16:20:00 +0000
+
+
+
+
+
diff --git a/tools/my.sh b/tools/my.sh
index 421709e2..e780fca4 100755
--- a/tools/my.sh
+++ b/tools/my.sh
@@ -427,3 +427,15 @@ myASTROTUBE="https://$(myAstroTube)"
&& myIP="$(zIp)" \
&& myIPFSGW="$(zIp):8080" \
|| true
+
+
+###
+if [[ $XDG_SESSION_TYPE == 'x11' ]]; then
+# 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))
+###
+fi