0xab368307…603fsent to0x7c3ea2b7…0b18·#19,250,048·view on Etherscan
function fisherYatesShuffle(seed, array) {
let currentIndex = array.length;
let temporaryValue, randomIndex;
while (currentIndex !== 0) {
randomIndex = (seed + currentIndex) % currentIndex;
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
function generateIndices(seed, totalImages) {
const array = Array.from({ length: totalImages }, (_, i) => i + 1);
return fisherYatesShuffle(seed, array);
}
function selectImage(tokenId, totalImages = 100) {
const seed = 824716;
const indices = generateIndices(seed, totalImages);
console.log(`tokenId: ${tokenId}`)
console.log(`Selection: ${indices[tokenId % totalImages]}`)
return indices[tokenId % totalImages];
}
const selectedImage = selectImage(tokenData.tokenId);
let CID = "QmPAH58UXYahSoZDdgLFGYWNnnfLTLWF5ThRXn54dTRt9F"
function initVideoPlayer() {
const videoElement = document.createElement('video');
videoElement.style.display = 'none';
videoElement.style.position = 'absolute';
videoElement.style.top = '50%';
videoElement.style.left = '50%';
videoElement.style.transform = 'translate(-50%, -50%)';
videoElement.style.objectFit = 'contain';
videoElement.style.maxWidth = '100vw';
videoElement.style.maxHeight = '100vh';
function blobToBase64(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(blob);
});
}
function loadVideo() {
const videoURL = `https://ipfs.brightmoments.io/ipfs/${CID}/${selectedImage}.mp4`;
videoElement.src = videoURL;
}
async function loadVideoHeadless() {
const videoURL = `https://ipfs.brightmoments.io/ipfs/${CID}/${selectedImage}.mp4`;
const res = await fetch(videoURL);
const videoBlob = await res.blob();
const base64Data = await blobToBase64(videoBlob);
videoElement.src = base64Data;
}
videoElement.oncanplaythrough = function() {
videoElement.style.display = 'block';
};
if (!/\bHeadlessChrome/.test(navigator.userAgent)) {
videoElement.setAttribute('preload', 'auto');
loadVideo();
document.body.appendChild(videoElement);
document.onclick = function() {
videoElement.setAttribute('loop', '');
videoElement.play();
document.onclick = null;
};
} else {
console.log("in headless context");
document.body.appendChild(videoElement);
loadVideoHeadless();
document.onclick = function() {
videoElement.setAttribute('loop', '');
videoElement.play();
document.onclick = null;
};
}
}
document.addEventListener('DOMContentLoaded', initVideoPlayer);