|
const videoSubject = document.querySelector("#videoSubject"); |
|
const aiModel = document.querySelector("#aiModel"); |
|
const voice = document.querySelector("#voice"); |
|
const zipUrl = document.querySelector("#zipUrl"); |
|
const paragraphNumber = document.querySelector("#paragraphNumber"); |
|
const youtubeToggle = document.querySelector("#youtubeUploadToggle"); |
|
const useMusicToggle = document.querySelector("#useMusicToggle"); |
|
const customPrompt = document.querySelector("#customPrompt"); |
|
const generateButton = document.querySelector("#generateButton"); |
|
const cancelButton = document.querySelector("#cancelButton"); |
|
|
|
const advancedOptionsToggle = document.querySelector("#advancedOptionsToggle"); |
|
|
|
advancedOptionsToggle.addEventListener("click", () => { |
|
|
|
const emoji = advancedOptionsToggle.textContent; |
|
advancedOptionsToggle.textContent = emoji.includes("▼") |
|
? "Show less Options ▲" |
|
: "Show Advanced Options ▼"; |
|
const advancedOptions = document.querySelector("#advancedOptions"); |
|
advancedOptions.classList.toggle("hidden"); |
|
}); |
|
|
|
|
|
const cancelGeneration = () => { |
|
console.log("Canceling generation..."); |
|
|
|
fetch("http://localhost:8080/api/cancel", { |
|
method: "POST", |
|
headers: { |
|
"Content-Type": "application/json", |
|
Accept: "application/json", |
|
}, |
|
}) |
|
.then((response) => response.json()) |
|
.then((data) => { |
|
alert(data.message); |
|
console.log(data); |
|
}) |
|
.catch((error) => { |
|
alert("An error occurred. Please try again later."); |
|
console.log(error); |
|
}); |
|
|
|
|
|
cancelButton.classList.add("hidden"); |
|
|
|
|
|
generateButton.disabled = false; |
|
generateButton.classList.remove("hidden"); |
|
}; |
|
|
|
const generateVideo = () => { |
|
console.log("Generating video..."); |
|
|
|
generateButton.disabled = true; |
|
generateButton.classList.add("hidden"); |
|
|
|
|
|
cancelButton.classList.remove("hidden"); |
|
|
|
|
|
const videoSubjectValue = videoSubject.value; |
|
const aiModelValue = aiModel.value; |
|
const voiceValue = voice.value; |
|
const paragraphNumberValue = paragraphNumber.value; |
|
const youtubeUpload = youtubeToggle.checked; |
|
const useMusicToggleState = useMusicToggle.checked; |
|
const threads = document.querySelector("#threads").value; |
|
const zipUrlValue = zipUrl.value; |
|
const customPromptValue = customPrompt.value; |
|
const subtitlesPosition = document.querySelector("#subtitlesPosition").value; |
|
const colorHexCode = document.querySelector("#subtitlesColor").value; |
|
|
|
|
|
const url = "http://localhost:8080/api/generate"; |
|
|
|
|
|
const data = { |
|
videoSubject: videoSubjectValue, |
|
aiModel: aiModelValue, |
|
voice: voiceValue, |
|
paragraphNumber: paragraphNumberValue, |
|
automateYoutubeUpload: youtubeUpload, |
|
useMusic: useMusicToggleState, |
|
zipUrl: zipUrlValue, |
|
threads: threads, |
|
subtitlesPosition: subtitlesPosition, |
|
customPrompt: customPromptValue, |
|
color: colorHexCode, |
|
}; |
|
|
|
|
|
fetch(url, { |
|
method: "POST", |
|
body: JSON.stringify(data), |
|
headers: { |
|
"Content-Type": "application/json", |
|
Accept: "application/json", |
|
}, |
|
}) |
|
.then((response) => response.json()) |
|
.then((data) => { |
|
console.log(data); |
|
alert(data.message); |
|
|
|
generateButton.disabled = false; |
|
generateButton.classList.remove("hidden"); |
|
cancelButton.classList.add("hidden"); |
|
}) |
|
.catch((error) => { |
|
alert("An error occurred. Please try again later."); |
|
console.log(error); |
|
}); |
|
}; |
|
|
|
generateButton.addEventListener("click", generateVideo); |
|
cancelButton.addEventListener("click", cancelGeneration); |
|
|
|
videoSubject.addEventListener("keyup", (event) => { |
|
if (event.key === "Enter") { |
|
generateVideo(); |
|
} |
|
}); |
|
|
|
|
|
document.addEventListener("DOMContentLoaded", (event) => { |
|
const voiceSelect = document.getElementById("voice"); |
|
const storedVoiceValue = localStorage.getItem("voiceValue"); |
|
|
|
if (storedVoiceValue) { |
|
voiceSelect.value = storedVoiceValue; |
|
} |
|
}); |
|
|
|
|
|
toggles = ["youtubeUploadToggle", "useMusicToggle", "reuseChoicesToggle"]; |
|
fields = ["aiModel", "voice", "paragraphNumber", "videoSubject", "zipUrl", "customPrompt", "threads", "subtitlesPosition", "subtitlesColor"]; |
|
|
|
document.addEventListener("DOMContentLoaded", () => { |
|
toggles.forEach((id) => { |
|
const toggle = document.getElementById(id); |
|
const storedValue = localStorage.getItem(`${id}Value`); |
|
const storedReuseValue = localStorage.getItem("reuseChoicesToggleValue"); |
|
|
|
if (toggle && storedValue !== null && storedReuseValue === "true") { |
|
toggle.checked = storedValue === "true"; |
|
} |
|
|
|
toggle.addEventListener("change", (event) => { |
|
localStorage.setItem(`${id}Value`, event.target.checked); |
|
}); |
|
}); |
|
|
|
fields.forEach((id) => { |
|
const select = document.getElementById(id); |
|
const storedValue = localStorage.getItem(`${id}Value`); |
|
const storedReuseValue = localStorage.getItem("reuseChoicesToggleValue"); |
|
|
|
if (storedValue && storedReuseValue === "true") { |
|
select.value = storedValue; |
|
} |
|
|
|
select.addEventListener("change", (event) => { |
|
localStorage.setItem(`${id}Value`, event.target.value); |
|
}); |
|
}); |
|
}); |
|
|