Test / static /script.js
3v324v23's picture
Update Comic123 with local comic folder files
83e35a7
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");
// Background video removed; keep null to avoid errors
const bgVideo = null;
var selectedFile = null;
var selectedLink = "";
var linkInputVisible = false;
let currentItem = 0;
// 1. Background image carousel
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);
// 2. Box with title, description and (file uploader/link & submit button)
const box = document.querySelector(".box");
setTimeout(() => {
box.classList.add("visible");
}, 2000);
// 3. File uploader
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));
});
// 4. Link
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) {
// Regular expression to capture the video ID from the YouTube URL
const videoIdPattern = /(?:v=|\/)([0-9A-Za-z_-]{11}).*/;
const match = url.match(videoIdPattern);
if (!match) {
return null; // Return null if no video ID is found
}
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));
});
// 5. Submit button
// Add smart comic options to the UI
function addSmartComicOptions() {
const box = document.getElementById('box');
const submitButton = box.querySelector('.submit-button');
// Create options container
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>
`;
// Insert before submit button
box.insertBefore(optionsDiv, submitButton);
}
// Call on page load
document.addEventListener('DOMContentLoaded', addSmartComicOptions);
function submitForm() {
// Get smart comic options
const smartMode = document.getElementById('smart-mode').checked;
// If file is selected
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);
});
}
// If link is entered
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.";
}
}
// 6. Video preview
function showVideoPreview(url) {
hideIFramePreview();
videoPreview.src = url;
videoPreview.style.display = "block";
videoPreview.play();
// no-op: background video removed
}
function hideVideoPreview() {
videoPreview.src = "";
videoPreview.style.display = "none";
// no-op: background video removed
}
function showIFramePreview(url) {
hideVideoPreview();
iFramePreview.src = url;
iFramePreview.style.display = "block";
// no-op: background video removed
}
function hideIFramePreview() {
iFramePreview.src = "";
iFramePreview.style.display = "none";
// no-op: background video removed
}