This commit is contained in:
fred 2022-11-21 18:58:03 +01:00
parent 5c8fe7ac4e
commit c49ee81b0e
6 changed files with 94 additions and 51 deletions

View File

@ -62,6 +62,8 @@ while true; do
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
## CHANGE NEXT PORT (HERE YOU CREATE A SOCKET QUEUE)
[ ${PORT} -le 12345 ] && PORT=$((PORT+${RANDOM:0:2})) || PORT=$((PORT-${RANDOM:0:2}))
## CHECK PORT IS FREE
pidportinuse=$(ps axf --sort=+utime | grep -w "nc -l -p ${PORT}" | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 2)
[[ $pidportinuse ]] && kill -9 $pidportinuse && echo "KILLING $portinuse " && continue
## RANDOM PORT SWAPPINESS AVOIDING COLLISION
@ -87,9 +89,6 @@ while true; do
# RESET VARIABLES
SALT=""; PEPPER=""; APPNAME=""
echo "************************************************************************* "
echo "ASTROPORT 1234 UP & RUNNING.......................... http://$myIP:1234 PORT"
echo "${MOATS} NEXT COMMAND DELIVERY PAGE http://$myIP:${PORT}"
############### ############### ############### ############### templates/index.http
# REPLACE myIP in http response template (fixing next API meeting point)
@ -102,21 +101,31 @@ while true; do
############################################################################
## SERVE LANDING REDIRECT PAGE ~/.zen/tmp/coucou/${MOATS}.myIP.http on PORT 1234 (LOOP BLOCKING POINT)
############################################################################
URL=$(cat $HOME/.zen/tmp/coucou/${MOATS}.myIP.http | nc -l -p 1234 -q 1 | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
REQ=$(cat $HOME/.zen/tmp/coucou/${MOATS}.myIP.http | nc -l -p 1234 -q 1) ## # WAIT FOR 1234 CONTACT
URL=$(echo "$REQ" | grep '^GET' | cut -d ' ' -f2 | cut -d '?' -f2)
HOSTP=$(echo "$REQ" | grep '^Host:' | cut -d ' ' -f2 | cut -d '?' -f2)
HOST=$(echo "$HOSTP" | cut -d ':' -f 1)
############################################################################
[[ $URL == "/test" ]] && continue
echo "************************************************************************* "
echo "ASTROPORT 1234 UP & RUNNING.......................... http://$HOST:1234 PORT"
echo "${MOATS} NEXT COMMAND DELIVERY PAGE http://$HOST:${PORT}"
espeak "Ding" > /dev/null 2>&1
echo "URL" > ~/.zen/tmp/coucou/${MOATS}.url ## LOGGING URL
############################################################################
start=`date +%s`
############################################################################
## / CONTACT - PUBLISH HTML HOMEPAGE (ADD HTTP HEADER)
if [[ $URL == "/" ]]; then
echo "/ CONTACT : http://$myIP:1234"
echo "/ CONTACT : http://$HOST:1234"
echo "___________________________ Preparing register.html"
echo "$HTTPCORS" > ~/.zen/tmp/coucou/${MOATS}.index.redirect ## HTTP 1.1 HEADER + HTML BODY
sed "s~127.0.0.1~$myIP~g" $HOME/.zen/Astroport.ONE/templates/register.html >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
sed "s~127.0.0.1~$HOST~g" $HOME/.zen/Astroport.ONE/templates/register.html >> ~/.zen/tmp/coucou/${MOATS}.index.redirect
sed -i "s~_IPFSNODEID_~${IPFSNODEID}~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
sed -i "s~_HOSTNAME_~$(hostname)~g" ~/.zen/tmp/coucou/${MOATS}.index.redirect
@ -175,7 +184,7 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
rm -f ~/.zen/tmp/coucou/${MOATS}.${G1PUB}.ipns.key
${MY_PATH}/tools/keygen -t ipfs -o ~/.zen/tmp/coucou/${MOATS}.${G1PUB}.ipns.key "$SALT" "$PEPPER"
ASTRONAUTENS=$(ipfs key import ${G1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/coucou/${MOATS}.${G1PUB}.ipns.key )
echo "ASTRONAUTE TW : http://$myIP:8080/ipns/${ASTRONAUTENS}"
echo "ASTRONAUTE TW : http://$HOST:8080/ipns/${ASTRONAUTENS}"
echo
################### KEY GEN ###################################
# Get PLAYER wallet amount
@ -226,7 +235,7 @@ sed -i "s~.000.~.$(printf '%03d' $(echo ${RANDOM} % 18 | bc)).~g" ~/.zen/tmp/cou
### REPONSE=$(cat ~/.zen/tmp/coucou/${MOATS}.messaging.json | ipfs add -q)
### ipfs name publish --allow-offline --key=${PORT} /ipfs/$REPONSE
### echo "SESSION http://$myIP:8080/ipns/$SESSIONNS "
### echo "SESSION http://$HOST:8080/ipns/$SESSIONNS "
cat ~/.zen/tmp/coucou/${MOATS}.index.redirect | nc -l -p ${PORT} -q 1 > /dev/null 2>&1 &
end=`date +%s`
@ -399,8 +408,8 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
echo "SEARCHING FOR OFFICIAL TW GW... $LIBRA/ipns/${ASTRONAUTENS} ($YOU)"
## GETTING LAST TW via IPFS or HTTP GW
[[ $YOU ]] && echo "http://$myIP:8080/ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/coucou/${MOATS}.astroindex.html
[[ ! -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]] && echo "$LIBRA/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/coucou/${MOATS}.astroindex.html "$LIBRA/ipns/${ASTRONAUTENS}"
[[ $YOU ]] && echo "ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} ($YOU)" && ipfs --timeout 12s cat /ipns/${ASTRONAUTENS} > ~/.zen/tmp/coucou/${MOATS}.astroindex.html
[[ ! -s ~/.zen/tmp/coucou/${MOATS}.astroindex.html ]] && echo "$HOST/ipns/${ASTRONAUTENS}" && curl -m 12 -so ~/.zen/tmp/coucou/${MOATS}.astroindex.html "$HOST/ipns/${ASTRONAUTENS}"
# DEBUG
# echo "tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html --output ~/.zen/tmp --render '.' 'MadeInZion.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' 'MadeInZion'"
@ -417,7 +426,7 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
$MY_PATH/tools/natools.py decrypt -f pubsec -k ~/.zen/tmp/coucou/${MOATS}.secret.key -i ~/.zen/tmp/myIP.$G1PUB.enc.2 -o ~/.zen/tmp/myIP.$G1PUB > /dev/null 2>&1
GWIP=$(cat ~/.zen/tmp/myIP.$G1PUB > /dev/null 2>&1)
[[ ! $GWIP ]] && GWIP=$myIP ## CLEAR
[[ ! $GWIP ]] && GWIP=$HOST ## CLEAR
#
echo "TW is on $GWIP"
@ -433,8 +442,8 @@ echo "" > ~/.zen/tmp/.ipfsgw.bad.twt # TODO move in 20h12.sh
###########################
# Modification Tiddlers de contrôle de GW & API
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://'$myIP':5001"}]' > ~/.zen/tmp/5001.json
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://'$myIP':8080"}]' > ~/.zen/tmp/8080.json
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://'$HOST':5001"}]' > ~/.zen/tmp/5001.json
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://'$HOST':8080"}]' > ~/.zen/tmp/8080.json
tiddlywiki --load ~/.zen/tmp/coucou/${MOATS}.astroindex.html \
--import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \

View File

@ -144,11 +144,11 @@ isLAN=$(echo $myIP | grep -E "/(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(
###########################
# Modification Tiddlers de contrôle de GW & API
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http://'$TUBE':5001"}]' > ~/.zen/tmp/5001.json
echo '[{"title":"$:/ipfs/saver/api/http/localhost/5001","tags":"$:/ipfs/core $:/ipfs/saver/api","text":"http:/ipfs.localhost:5001"}]' > ~/.zen/tmp/5001.json
echo '[{"title":"$:/ipfs/saver/gateway/http/localhost","tags":"$:/ipfs/core $:/ipfs/saver/gateway","text":"http://'$TUBE':8080"}]' > ~/.zen/tmp/8080.json
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/${PLAYER}/index.html \
--import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \
--import "$HOME/.zen/tmp/MadeInZion.json" "application/json" \
--import "$HOME/.zen/tmp/5001.json" "application/json" \
--import "$HOME/.zen/tmp/8080.json" "application/json" \
--output ~/.zen/tmp/${IPFSNODEID}/${PLAYER} --render "$:/core/save/all" "newindex.html" "text/plain"

View File

@ -1,7 +1,14 @@
# CONTAINS Address of 1st Bootstrap Stations (24/24 Public IP) - DO NOT EDIT MANUALY -
# http://libra.copylaradio.com:8080 tube.copylaradio.com
# http://tube.copylaradio.com:8080 ipfs.copylaradio.com
#################################################################
# libra.astroport.com
/ip4/149.102.158.67/udp/4001/quic/p2p/12D3KooWL2FcDJ41U9SyLuvDmA5qGzyoaj2RoEHiJPpCvY8jvx9u
# cancer.astroport.com
/ip4/185.202.238.69/tcp/4001/p2p/12D3KooWSnxRBuoeCZGdXBbSKiW8qM4HxLp3RLypW9dg82o41ZqM
# aries.copylaradio.com
/ip4/37.187.127.175/tcp/4001/p2p/12D3KooWSQYTxeoZZ39SNosEKxi7RUdGTtAQAqpKeZJxjzqqrZTx
#################################################################
###### WISHING TO ADD YOUR NODE TO OFFICIAL ASTROPORT BOOSTRAP LIST ?
###### ===> CONTACT support@qo-op.com
#################################################################

View File

@ -106,7 +106,7 @@ echo
ASTRONAUTENS=$(ipfs key list -l | grep -w "$PLAYER" | cut -d ' ' -f 1)
echo "$(cat ~/.zen/game/players/.current/.pseudo 2>/dev/null) TW/Moa"
echo "http://127.0.0.1:8080/ipns/$ASTRONAUTENS"
echo "http://$myIP:8080/ipns/$ASTRONAUTENS"
echo "Activation Réseau P2P Astroport !"
echo

View File

@ -168,7 +168,7 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
### INITALISATION WIKI dans leurs répertoires de publication IPFS
############ TODO améliorer templates, sed, ajouter index.html, etc...
MOATS=$(date -u +"%Y%m%d%H%M%S%4N")
echo
echo "***** Gestion du Canal TW Astronaute $PLAYER *****"
mkdir -p ~/.zen/game/players/$PLAYER/ipfs/moa/
@ -242,13 +242,17 @@ G1PUB=$(cat /tmp/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
IASTRO=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ID.png | tail -n 1)
sed -i "s~bafybeidhghlcx3zdzdah2pzddhoicywmydintj4mosgtygr6f2dlfwmg7a~${IASTRO}~g" ~/.zen/game/players/$PLAYER/ipfs/moa/index.html
echo "## PUBLISHING ${PLAYER} /ipns/${ASTRONAUTENS}/"
echo
echo "## PUBLISHING ${PLAYER}"
echo "/ipns/${ASTRONAUTENS}/"
IPUSH=$(ipfs add -Hq ~/.zen/game/players/$PLAYER/ipfs/moa/index.html | tail -n 1)
echo $IPUSH > ~/.zen/game/players/$PLAYER/ipfs/moa/.chain # Contains last IPFS backup PLAYER KEY
echo "/ipfs/$IPUSH"
echo $MOATS > ~/.zen/game/players/$PLAYER/ipfs/moa/.moats
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH 2>/dev/null
(
ipfs name publish --key=${PLAYER} /ipfs/$IPUSH >/dev/null 2>&1
) &
## MEMORISE PLAYER Ŋ1 ZONE
echo "$PLAYER" > ~/.zen/game/players/$PLAYER/.player
@ -272,9 +276,9 @@ qrencode -s 12 -o "$HOME/.zen/game/players/$PLAYER/QR.ASTRONAUTENS.png" "http://
echo; echo "Création de votre clef et QR codes de votre réseau Astroport Ŋ1"; sleep 1
echo; echo "*** Astronaute GW : ~/.zen/game/players/$PLAYER/"; sleep 1
echo; echo "*** TW Ŋ1 : $PLAYER";
echo; echo "http://$myIP:8080/ipns/${ASTRONAUTENS}"; sleep 2
echo; echo "*** HOME : ~/.zen/game/players/$PLAYER/"; sleep 1
echo "*** IPNS Ŋ0 KEY : $PLAYER";
echo; echo "GW : http://$myIP:8080/ipns/${ASTRONAUTENS}"; sleep 1
# PASS CRYPTING KEY
echo; echo "Sécurisation de vos clefs par chiffrage SSL... "; sleep 1
@ -283,6 +287,7 @@ openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/secret.dunik
openssl enc -aes-256-cbc -salt -in "$HOME/.zen/game/players/$PLAYER/$KEYFILE -out" "$HOME/.zen/game/players/$PLAYER/enc.$KEYFILE" -k $PASS 2>/dev/null
## TODO MORE SECURE ?! USE opengpg, natools, etc ...
# ${MY_PATH}/natools.py encrypt -p $G1PUB -i ~/.zen/game/players/$PLAYER/secret.dunikey -o "$HOME/.zen/game/players/$PLAYER/enc.secret.dunikey"
echo
#################################################
# !! TODO !! # DEMO MODE. REMOVE FOR PRODUCTION - RECALCULATE AND RENEW AFTER EACH NEW KEY DELEGATION
@ -299,17 +304,21 @@ ln -s ~/.zen/game/players/$PLAYER ~/.zen/game/players/.current
## MANAGE GCHANGE+ & Ŋ1 EXPLORATION
${MY_PATH}/Connect_PLAYER_To_Gchange.sh "$PLAYER"
## INIT FRIENDSHIP CAPTAIN/ASTRONAUTS (LATER THROUGH GCHANGE)
## ${MY_PATH}/FRIENDS.init.sh
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
echo "Bienvenue 'Astronaute' $PSEUDO ($PLAYER)"
echo "Retenez votre PASS : $PASS"; sleep 2
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to start.sh
echo "cool $(${MY_PATH}/face.sh cool)"
echo "$PASS"
### IF PRINTER -> PRINT VISA
LP=$(ls /dev/usb/lp*)
[[ $LP ]] && ${MY_PATH}/VISA.print.sh &
## INIT FRIENDSHIP CAPTAIN/ASTRONAUTS (LATER THROUGH GCHANGE)
## ${MY_PATH}/FRIENDS.init.sh
## NO. GCHANGE+ IS THE MAIN INTERFACE, astrXbian manage
echo "$(${MY_PATH}/face.sh cool)"
echo "Bienvenue 'Astronaute' $PSEUDO ($PLAYER)"
echo "Votre PASS"; sleep 1
echo $PSEUDO > ~/.zen/tmp/PSEUDO ## Return data to start.sh
echo "$PASS"
exit 0

View File

@ -42,6 +42,7 @@ path="$1"
if [[ "$path" == "" ]]; then
echo "## BATCH RUN. READ FIFO FILE."
fi
# Add trailing / if needed
length=${#path}
last_char=${path:length-1:1}
@ -58,6 +59,9 @@ echo "$MY_PATH/new_file_in_astroport.sh PATH/ \"$path\" FILE \"$file\" G1PUB \"$
## FILE ANALYSE & IDENTIFICATION TAGGINGS
extension="${file##*.}"
TITLE="${file%.*}"
# CapitalGluedTitle
CapitalGluedTitle=$(echo "${TITLE}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
# .part file false flag correcting (in case inotify has launched script)
[[ ! -f "${path}${file}" ]] && file="${TITLE%.*}" && extension="${TITLE##*.}" && [[ ! -f "${path}${file}" ]] && er="NO FILE" && echo "$er" && exit 1
@ -65,12 +69,23 @@ MIME=$(file --mime-type -b "${path}${file}")
############# EXTEND MEDIAKEY IDENTIFATORS https://github.com/NapoleonWils0n/ffmpeg-scripts
if [[ $(echo "$MIME" | grep 'video') ]]; then
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
DURATION=$(ffprobe -i "${path}${file}" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1)
DUREE=$(ffprobe -i "${path}${file}" -show_entries format=duration -sexagesimal -v quiet -of csv="p=0"| cut -d '.' -f 1)
PROBETIME=$(echo "0.618 * $DURATION" | bc -l | cut -d '.' -f 1)
[[ ! $PROBETIME ]] && PROBETIME="1.0"
## Create gifanime ## TODO Search for similarities BEFORE ADD
echo "(✜‿‿✜) GIFANIME (✜‿‿✜)"
rm -f ~/.zen/tmp/screen.gif
ffmpeg -loglevel quiet -ss 1.0 -t 1.6 -loglevel quiet -i "${path}${file}" ~/.zen/tmp/screen.gif
ffmpeg -loglevel quiet -ss $PROBETIME -t 1.6 -loglevel quiet -i "${path}${file}" ~/.zen/tmp/screen.gif
ANIMH=$(ipfs add -q ~/.zen/tmp/screen.gif)
echo "/ipfs/$ANIMH"
echo "GIFANIM $PROBETIME : /ipfs/$ANIMH"
fi
# GET PLAYER
@ -146,9 +161,6 @@ esac
MEDIAKEY="${INDEXPREFIX}${REFERENCE}"
echo ">>>>>>>>>> $MEDIAKEY ($MIME) <<<<<<<<<<<<<<<"
# CapitalGluedTitle
CapitalGluedTitle=$(echo "${TITLE}" | sed -r 's/\<./\U&/g' | sed 's/ //g')
######################### Decimal convert
rm ~/.zen/tmp/decimal
echo "$CapitalGluedTitle" > ~/.zen/tmp/convert
@ -234,10 +246,13 @@ fi
########################################################################
# POST TRAITEMENTS
if [[ "${type}" == 'page' ]]; then
echo "PDF ??"
fi
########################################################################
# film/serie PUBLISH
########################################################################
if [[ "${type}" =~ ^(film|serie|youtube|page|video)$ ]]
if [[ "${type}" =~ ^(film|serie|youtube|video)$ ]]
then
## CREATE GCHANGE AD
## STOP PUBLISHING TO GCHANGE, NOW PLAYER TW ONLY
@ -260,9 +275,6 @@ then
#~ [[ ! -f ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN ]] \
#~ && echo "type;TMDB;YEAR;TITLE;SAISON;GENRES;GROUPES;RES;URLS=http://${myIP}:8080" > ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/astroport/kodi/vstream/${PREFIX}ASTRXBIAN
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
# REFRESH ${MOATS}_ajouter_video.txt FILE
if [[ -f ~/astroport/${TyPE}/${REFERENCE}/ajouter_video.txt ]]
then
@ -282,15 +294,18 @@ then
# echo "----------------- REFRESH LOCAL KODI INDEX ----------------------"
# cat ~/.zen/game/players/$PLAYER/ipfs*/.*/astroport/kodi/vstream/${PREFIX}ASTRXBIAN | sort | uniq > ~/.zen/game/players/$PLAYER/ipfs/.${IPFSNODEID}/${PREFIX}ASTRXBIAN
echo "----------------- PREPARING TIDDLER ----------------------"
CAT=$(echo "$type" | sed -r 's/\<./\U&/g' | sed 's/ //g') # CapitalGluedWords
## Adapt TMDB url
[[ $CAT == "Film" ]] && tdb="movie"
[[ $CAT == "Serie" ]] && tdb="tv"
GENRE=$(cat ~/astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt | cut -d ';' -f 6 | sed 's/|/ /g' | jq -r '@csv' | sed 's/ /_/g' | sed 's/,/ /g' | sed 's/\"//g' )
SAISON=$(cat ~/astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt | cut -d ';' -f 5)
## Adapt TMDB url for season & tag naming
[[ $CAT == "Film" ]] && tdb="movie"\
&& FILETAG="$CapitalGluedTitle"
[[ $CAT == "Serie" ]] && tdb="tv" \
&& SAISON=$(cat ~/astroport/${TyPE}/${REFERENCE}/${MOATS}_ajouter_video.txt | cut -d ';' -f 5 | cut -d '_' -f 2) \
&& FILETAG=$(echo "$CapitalGluedTitle" | cut -d '_' -f 1)
echo $GENRE $SAISON
## ASK FOR EXTRA METADATA
@ -318,7 +333,7 @@ then
Afficher tous les G1${CAT}
</\$button>"
TidType="text/vnd.tiddlywiki" ## MAYBE REAL ONCE TW CAN SHOW ATTACHED IPFS VIDEO (TODO: TESTINGS)
TAGS="G1${CAT} ${PLAYER} ${CapitalGluedTitle} $GENRE ipfs ${HASHTAG}"
TAGS="G1${CAT} ${PLAYER} ${FILETAG} $GENRE ipfs ${HASHTAG}"
# TyPE="$MIME"
# CANON="/ipfs/"${IPFSID}
CANON=''
@ -338,9 +353,12 @@ then
{
"text": "'${TEXT}'",
"title": "'${CapitalGluedTitle}'",
"season": "'${SAISON}'",
"created": "'${MOATS}'",
"resolution": "'${RES}'",
"season": "'${SAISON}'",
"duree": "'${DUREE}'",
"duration": "'${DURATION}'",
"giftime": "'${PROBETIME}'",
"gifanime": "'/ipfs/${ANIMH}'",
"type": "'${TidType}'",
"mime": "'${MIME}'",