|
|
const carousel = document.querySelector(".carousel"); |
|
|
const carouselItems = carousel ? carousel.querySelectorAll(".carousel-item") : []; |
|
|
const submissionResult = document.getElementById("submissionResult"); |
|
|
const linkInput = document.getElementById("link-input"); |
|
|
const filePicker = document.getElementById("fileInput"); |
|
|
const videoPreview = document.getElementById("video-preview"); |
|
|
const iFramePreview = document.getElementById("iframe-preview"); |
|
|
|
|
|
const bgVideo = null; |
|
|
|
|
|
var selectedFile = null; |
|
|
var selectedLink = ""; |
|
|
var linkInputVisible = false; |
|
|
let currentItem = 0; |
|
|
|
|
|
|
|
|
function changeImage() { |
|
|
if (!carouselItems || carouselItems.length === 0) return; |
|
|
carouselItems.forEach((item, index) => { |
|
|
if (index === currentItem) { |
|
|
item.classList.add("active"); |
|
|
} else { |
|
|
item.classList.remove("active"); |
|
|
} |
|
|
}); |
|
|
currentItem = (currentItem + 1) % carouselItems.length; |
|
|
} |
|
|
setInterval(changeImage, 3000); |
|
|
|
|
|
|
|
|
const box = document.querySelector(".box"); |
|
|
setTimeout(() => { |
|
|
box.classList.add("visible"); |
|
|
}, 2000); |
|
|
|
|
|
|
|
|
function openFilePicker() { |
|
|
hideLinkInput(); |
|
|
filePicker.click(); |
|
|
} |
|
|
|
|
|
filePicker.addEventListener("change", function () { |
|
|
selectedFile = this.files[0]; |
|
|
document.getElementById("fileName").textContent = |
|
|
"Selected File: " + selectedFile.name; |
|
|
hideLinkInput(); |
|
|
showVideoPreview(URL.createObjectURL(selectedFile)); |
|
|
}); |
|
|
|
|
|
|
|
|
function toggleLinkInput() { |
|
|
hideVideoPreview(); |
|
|
var linkInputContainer = document.getElementById("linkInputContainer"); |
|
|
linkInputVisible = !linkInputVisible; |
|
|
if (linkInputVisible) { |
|
|
linkInputContainer.style.display = "block"; |
|
|
} else { |
|
|
hideLinkInput(); |
|
|
} |
|
|
} |
|
|
|
|
|
function hideLinkInput() { |
|
|
document.getElementById("linkInputContainer").style.display = "none"; |
|
|
linkInput.value = ""; |
|
|
selectedLink = ""; |
|
|
hideIFramePreview(); |
|
|
} |
|
|
|
|
|
|
|
|
function convertToEmbed(url) { |
|
|
|
|
|
const videoIdPattern = /(?:v=|\/)([0-9A-Za-z_-]{11}).*/; |
|
|
const match = url.match(videoIdPattern); |
|
|
|
|
|
if (!match) { |
|
|
return null; |
|
|
} |
|
|
|
|
|
const videoId = match[1]; |
|
|
const embedUrl = `https://www.youtube.com/embed/${videoId}`; |
|
|
return embedUrl; |
|
|
} |
|
|
|
|
|
linkInput.addEventListener("input", function () { |
|
|
selectedLink = this.value; |
|
|
selectedFile = null; |
|
|
document.getElementById("fileName").textContent = ""; |
|
|
showIFramePreview(convertToEmbed(selectedLink)); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
function addSmartComicOptions() { |
|
|
const box = document.getElementById('box'); |
|
|
const submitButton = box.querySelector('.submit-button'); |
|
|
|
|
|
|
|
|
const optionsDiv = document.createElement('div'); |
|
|
optionsDiv.id = 'smart-options'; |
|
|
optionsDiv.style.cssText = 'margin: 20px 0; padding: 15px; background: rgba(255,255,255,0.1); border-radius: 10px;'; |
|
|
optionsDiv.innerHTML = ` |
|
|
<h3 style="margin: 0 0 10px 0; font-size: 18px;">✨ Enhanced Comic Options</h3> |
|
|
<label style="display: block; margin: 5px 0; text-align: left; cursor: pointer;"> |
|
|
<input type="checkbox" id="smart-mode" checked style="margin-right: 8px;"> |
|
|
<span style="font-weight: bold;">Smart Frame Selection</span> |
|
|
<br> |
|
|
<span style="font-size: 12px; color: #aaa; margin-left: 25px;"> |
|
|
Automatically selects the most engaging frames with perfect expressions |
|
|
</span> |
|
|
</label> |
|
|
`; |
|
|
|
|
|
|
|
|
box.insertBefore(optionsDiv, submitButton); |
|
|
} |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', addSmartComicOptions); |
|
|
|
|
|
function submitForm() { |
|
|
|
|
|
const smartMode = document.getElementById('smart-mode').checked; |
|
|
|
|
|
|
|
|
if (selectedFile !== null && selectedLink === "") { |
|
|
submissionResult.textContent = "Your comic is being created"; |
|
|
var formdata = new FormData(); |
|
|
formdata.append("file", selectedFile); |
|
|
formdata.append("smart_mode", smartMode); |
|
|
|
|
|
var requestOptions = { |
|
|
method: "POST", |
|
|
body: formdata, |
|
|
redirect: "follow", |
|
|
}; |
|
|
|
|
|
fetch("/uploader", requestOptions) |
|
|
.then((response) => response.text()) |
|
|
.then((result) => { |
|
|
console.log(result); |
|
|
submissionResult.textContent = result; |
|
|
}) |
|
|
.catch((error) => { |
|
|
console.log("error", error); |
|
|
alert(error); |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
else if (selectedLink !== "" && selectedFile === null) { |
|
|
submissionResult.textContent = "Your comic is being created"; |
|
|
|
|
|
var formdata = new FormData(); |
|
|
formdata.append("link", linkInput.value); |
|
|
formdata.append("smart_mode", smartMode); |
|
|
|
|
|
var requestOptions = { |
|
|
method: "POST", |
|
|
body: formdata, |
|
|
redirect: "follow", |
|
|
}; |
|
|
|
|
|
fetch("/handle_link", requestOptions) |
|
|
.then((response) => response.text()) |
|
|
.then((result) => { |
|
|
console.log(result); |
|
|
submissionResult.textContent = result; |
|
|
}) |
|
|
.catch((error) => { |
|
|
console.log("error", error); |
|
|
submissionResult.textContent = "An error has occurred"; |
|
|
}); |
|
|
} else { |
|
|
document.getElementById("submissionResult").textContent = |
|
|
"Please select either a file or enter a link."; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function showVideoPreview(url) { |
|
|
hideIFramePreview(); |
|
|
videoPreview.src = url; |
|
|
videoPreview.style.display = "block"; |
|
|
videoPreview.play(); |
|
|
|
|
|
} |
|
|
|
|
|
function hideVideoPreview() { |
|
|
videoPreview.src = ""; |
|
|
videoPreview.style.display = "none"; |
|
|
|
|
|
} |
|
|
|
|
|
function showIFramePreview(url) { |
|
|
hideVideoPreview(); |
|
|
iFramePreview.src = url; |
|
|
iFramePreview.style.display = "block"; |
|
|
|
|
|
} |
|
|
|
|
|
function hideIFramePreview() { |
|
|
iFramePreview.src = ""; |
|
|
iFramePreview.style.display = "none"; |
|
|
|
|
|
} |
|
|
|