CHANNEL history

This commit is contained in:
fred 2022-04-08 18:02:23 +02:00
parent 3db9b35073
commit b66568739a
3 changed files with 89 additions and 27 deletions

View File

@ -60,7 +60,22 @@ https://ipfs.io/ipns/k51qzi5uqu5djt17zonkpg1cb8hrxhahpesybusz8q57j4ocqm0qlc6s99z
3. Ajoute le lecteur videojs dans index.html et met à jour history.json
4. Publie localement, sur la clef IPNS 'qo-op' ou au travers du TestNet 'astrXbian'
Pour revenir en mode "debug", effacez le fichier ~/.zen/bunkerbox/choice
#
# Participation
**IPFS est encore vierge. Venez y tracer vos chaines vidéos!**
- Familier avec les outils en ligne de commande?
Ce sont principalement curl, jq, sed, cut et ipfs qui sont mis à l'oeuvre.
La méthode employée dans ce programme est extensible à l'infini !!
Les média sont "encapsulés" avec une page de présentation (html, js, css, json) puis utilise jQuery pour créer l'interface.
Le tout est inscrit dans IPFS, la mémoire de ces inscriptions est conservées au travers de fichiers history.json statiques et/ou dynamiques (mode 'qo-op' et publication IPNS).
Des connaissances en html, css, jQuery, ou d'autres bibliothèques javascript que je ne connais pas (vue.js?) vous permettra de prendre en main ce code.
Forkez moi.
**Envoyez un email à support@qo-op.com pour obtenir de l'aide**

View File

@ -50,7 +50,8 @@ for VUID in $(tac /tmp/vuid.list); do
LIVE=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .video.isLiveActive) && [[ "$LIVE" == "true" ]] && echo "STREAMING... Bypassing..." && echo && continue
DURATION=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .video.duration) && [[ $DURATION == 0 ]] && echo "NOT STARTED YET" && echo && continue
TITLE=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .video.title | sed "s/'/ /g" | sed 's/"/ /g') # Remove quote
CHANNEL=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .channel.name)
CHANNEL=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .channel.organization.uid)
## GET MORE DATA... CORRECT IT for each JSON
ORGUID=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .organization.uid)
ORGNAME=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .organization.name)
ORGBANNER=$(cat ~/.zen/bunkerbox/$VUID/media/$VUID.json | jq -r .organization.banner.url)
@ -135,6 +136,9 @@ echo "##########################################################################
IPNSL="./"
fi
# Add previous CHANNEL History
[[ -f ~/.zen/bunkerbox/history.${CHANNEL}.json ]] && cp ~/.zen/bunkerbox/history.${CHANNEL}.json ~/.zen/bunkerbox/$VUID/media/
# Add current/latest reversed history to media
echo '{ "Videos":' > ~/.zen/bunkerbox/$VUID/media/history.json
cat ~/.zen/bunkerbox/history.json | jq '.[] | reverse' >> ~/.zen/bunkerbox/$VUID/media/history.json
@ -150,8 +154,33 @@ echo "##########################################################################
echo ">>>>> ADDING MEDIA TO IPFS : ipfs add -rwH ~/.zen/bunkerbox/$VUID/media/* "
echo
#################################################################
# IPFS WRITING. All that is prepared above in ~/.zen/bunkerbox/$VUID/media/ will become permanent !
#################################################################
IPFSROOT=$(ipfs add -rwHq ~/.zen/bunkerbox/$VUID/media/* | tail -n 1)
INDEX="/ipfs/$IPFSROOT"
#################################################################
# IPFS WRITING DONE. Doing after is to UPDATE local history(s).json in ~/.zen/bunkerbox/
# Then publishing on IPNS 'qo-op' all dynamic data needed by above 'index.html'
#################################################################
# Take care about CHANNEL history
echo "++ MANAGE $CHANNEL HISTORY"
[[ ! -f ~/.zen/bunkerbox/history.${CHANNEL}.json || $(cat ~/.zen/bunkerbox/history.${CHANNEL}.json 2>/dev/null) == "" ]] && cp ${MY_PATH}/templates/data/history.json ~/.zen/bunkerbox/history.${CHANNEL}.json
if [[ ! $(cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq .Videos[].link | grep $VUID) ]]; then
echo "ADD ~/.zen/bunkerbox/history.${CHANNEL}.json"
# Bad characters breaks this command !! # cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq --arg INDEX "$INDEX" --arg TITLE "$TITLE" --arg VUID "$VUID" --arg TSVUID "TSVUID" '.Videos += [{"link": "<a id='''$TSVUID''' href='''$INDEX'''><img src='''$INDEX/$VUID.jpg''' height=80 ></a><br>'''$TITLE''' "}]' > ~/.zen/tmp/history.${CHANNEL}.json
cat ~/.zen/bunkerbox/history.${CHANNEL}.json | jq '.Videos += [{"link": "<a id='"'_TS_'"' href='"'_INDEX_'"'><img src='"'_INDEX_/_VUID_.jpg'"' height=80 ></a><br>'"'_TITLE_'"'"}]' > ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json
sed -i "s~_INDEX_~$INDEX~g" ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json
sed -i "s~_VUID_~$VUID~g" ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json
sed -i "s~_TITLE_~$TITLE~g" ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json
[[ "$(cat ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json)" == "" ]] && echo "NO history.${CHANNEL}.json FATAL ERROR" && exit 1
cp ~/.zen/bunkerbox/$VUID/media/history.${CHANNEL}.json ~/.zen/bunkerbox/history.${CHANNEL}.json
fi
VMAIN="/ipfs/$IPFSROOT/$VUID.m3u8"
# UPDATING original JSON - TODO inform crowdbunker that IPFS copy is available.
@ -172,7 +201,7 @@ echo "##########################################################################
# COULD BE DONE LIKE THAT
# cat ~/.zen/bunkerbox/$VUID/media/history.json | jq --arg INDEX "$INDEX" --arg TITLE "$TITLE" '.Videos += [{"link": "<a href='''$INDEX''' >'''$TITLE'''</a>"}]' > ~/.zen/bunkerbox/history.json
echo "MISE A JOUR ~/.zen/bunkerbox/history.json"
[[ "$(cat ~/.zen/bunkerbox/$VUID/media/history.json)" == "" ]] && echo "FATAL ERROR" && exit 1
[[ "$(cat ~/.zen/bunkerbox/$VUID/media/history.json)" == "" ]] && echo "NO $VUID/media/history.json FATAL ERROR" && exit 1
# Upgrade local history.json with reverse new one
if [[ -f ~/.zen/bunkerbox/$VUID/media/history.json ]]; then
echo '{ "Videos":' > ~/.zen/bunkerbox/history.json
@ -197,7 +226,7 @@ echo "##########################################################################
continue
;;
"astrXbian")
echo "MODE 'astrXbian'"
echo "MODE 'astrXbian' (DEV ZONE)"
[[ ! -d ~/.zen/astrXbian ]] && echo "DEV ZONE - Installez astrXbian SVP ... P2P VideoClub DEMO - DEV ZONE !" && exit 1
[[ ! $IPFSNODEID ]] && echo "Missing IPFSNODEID. Exit" && exit 1
echo 'astrXbian' > ~/.zen/bunkerbox/choice
@ -220,24 +249,27 @@ echo "##########################################################################
echo "Envoyez un email pour obtenir assistance. (Contact support@qo-op.com) ? HELP !"
sleep 1
echo
echo "Utiliser la clef 'qo-op' de DEV ? ENTRER pour OUI. Saisissez un caractère avant si NON."
echo "Utiliser la clef 'qo-op' par défaut ? ENTRER pour OUI. Saisissez un caractère avant si NON."
read KDEV
if [[ "$KDEV" != "" ]]; then
echo "La confiance est dans la CLEF (Confidence is in the KEY)."
echo "Voici la votre (here is yours): "
echo "Génération de la votre (here is yours): "
publishkey=$(ipfs key gen qo-op)
echo "~/.ipfs/keystore/key_ofxs233q"
echo "Partagez cette clef avec vos amis pour créer une chaine video en commun..."
echo "Partagez cette clef avec vos amis pour créer votre chaine video en commun..."
echo "$IPFSNGW/ipns/$publishkey"
echo
echo "$publishkey" > ~/.zen/bunkerbox/qo-op
echo 'qo-op' > ~/.zen/bunkerbox/choice
else
## USE DEV KEY
echo "Activation clef 'qo-op' par défaut."
echo "k51qzi5uqu5djt17zonkpg1cb8hrxhahpesybusz8q57j4ocqm0qlc6s99z60x" > ~/.zen/bunkerbox/qo-op
cp ${MY_PATH}/key_ofxs233q ~/.ipfs/keystore/
fi
else
## qo-op KEY IS ALREADY THERE. WRITE 'qo-op' IPNS key
# Refreshing actual 'qo-op' key
ipfs key list -l | grep 'qo-op' | cut -f 1 -d ' ' > ~/.zen/bunkerbox/qo-op
fi
echo 'qo-op' > ~/.zen/bunkerbox/choice
@ -248,28 +280,28 @@ echo "##########################################################################
InHere=$(cat ~/.zen/bunkerbox/history.qo-op.json | jq .Videos[].link | grep $VUID)
if [[ ! $InHere ]]; then
echo "BunkerBOX - NOUVELLE VIDEO - Mise à jour homepage.html & history.json"
mkdir -p /tmp/$VUID
echo "BunkerBOX - NOUVELLE VIDEO - Mise à jour homepage & dynamic history(s).json"
mkdir -p ~/.zen/bunkerbox/qo-op/
## This is the welcome page of your qo-op channel.
# Could be redirect, or ... Your homepage is introduced there !!
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > /tmp/$VUID/index.html
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > /tmp/$VUID/index.html
cp -R ${MY_PATH}/templates/styles /tmp/$VUID/
cp -R ${MY_PATH}/templates/js /tmp/$VUID/
cp ${MY_PATH}/templates/homepage.html /tmp/$VUID/index.html
cp ${MY_PATH}/templates/crowbunkerbox.png /tmp/$VUID/
sed -i "s~_IPNSL_~$IPNSL~g" /tmp/$VUID/index.html
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > ~/.zen/bunkerbox/qo-op/index.html
# echo "<meta http-equiv=\"refresh\" content=\"0;URL=$INDEX\">" > ~/.zen/bunkerbox/qo-op/index.html
cp -R ${MY_PATH}/templates/styles ~/.zen/bunkerbox/qo-op/
cp -R ${MY_PATH}/templates/js ~/.zen/bunkerbox/qo-op/
cp ${MY_PATH}/templates/homepage.html ~/.zen/bunkerbox/qo-op/index.html
cp ${MY_PATH}/templates/crowbunkerbox.png ~/.zen/bunkerbox/qo-op/
sed -i "s~_IPNSL_~$IPNSL~g" ~/.zen/bunkerbox/qo-op/index.html
cp ~/.zen/bunkerbox/history.json /tmp/$VUID/history.json
echo "$TS" > /tmp/$VUID/ts # TimeStamping
echo "Adding /tmp/$VUID/* to IPFS "
VROOT=$(ipfs add -rwHq /tmp/$VUID/* | tail -n 1)
cp ~/.zen/bunkerbox/history.json ~/.zen/bunkerbox/qo-op/history.json
cp ~/.zen/bunkerbox/history.${CHANNEL}.json ~/.zen/bunkerbox/qo-op/history.${CHANNEL}.json
echo "$TS" > ~/.zen/bunkerbox/qo-op/ts # TimeStamping
echo "Adding ~/.zen/bunkerbox/qo-op/* to IPFS "
VROOT=$(ipfs add -rwHq ~/.zen/bunkerbox/qo-op/* | tail -n 1)
echo "'qo-op' update with /ipfs/$VROOT"
ipfs name publish --key=qo-op /ipfs/$VROOT
echo "HOME : $IPFSNGW/ipns/$IPNS/"
echo "HISTORY : $IPFSNGW/ipns/$IPNS/history.json"
fi
[[ $VUID != "" ]] && rm -Rf /tmp/$VUID # Cleaning
continue
;;
"debug")

View File

@ -37,7 +37,7 @@
</center>
<article>
<h1 class="video-title">
_CHANNEL_ : _TITLE_
__TITLE_
</h1>
</article>
@ -45,6 +45,10 @@
<div id="videosList"><div class="wrapper"></div></div>
</center>
<center>
<div id="videosChan"><div class="wrapper"></div></div>
</center>
<center>
<h6>
<a href="_IPNSL_"> _\/_ </a> powered by <a href="https://astroport.com"><span>"</span>Astroport<span>"</span></a>
@ -60,25 +64,36 @@
<link rel="stylesheet" href="_IPFSROOT_/styles/pagination.css" />
<script>
var player = videojs('vbunk', {
autoplay: 'muted'
});
</script>
<script>
$.getJSON('_IPNSL_/history.json', function (json) {
$.getJSON('_IPNSL_history.json', function (json) {
$('#videosList').pagination({
dataSource: json.Videos,
pageSize: 1,
callback: function(data, pagination) {
var wrapper = $('#videosList .wrapper').empty();
$.each(data, function (i, f) {
$('#videosList .wrapper').append('<ul><li>div class="snippet-block">' + f.link + '</div></li></ul>');
$('#videosList .wrapper').append('<ul><li><div class="snippet-block">' + f.link + '</div></li></ul>');
});
}
});
});
$.getJSON('_IPNSL_history._CHANNEL_.json', function (json) {
$('#videosList').pagination({
dataSource: json.Videos,
pageSize: 1,
callback: function(data, pagination) {
var wrapper = $('#videosList .wrapper').empty();
$.each(data, function (i, f) {
$('#videosList .wrapper').append('<ul><li><div class="snippet-block">' + f.link + '</div></li></ul>');
});
}
});
});
</script>
</html>