| | 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); |
| | }); |
| | }); |
| | }); |
| |
|