Update templates/index.html
Browse files- templates/index.html +21 -19
templates/index.html
CHANGED
|
@@ -495,24 +495,23 @@
|
|
| 495 |
const outputSection = document.getElementById('outputSection');
|
| 496 |
const btnRestart = document.getElementById('btnRestart');
|
| 497 |
const btnDownloadVideo = document.getElementById('btnDownloadVideo');
|
| 498 |
-
// المانهای اسلایدر اضافه شد
|
| 499 |
const durationSlider = document.getElementById('durationSlider');
|
| 500 |
const durationValueDisplay = document.getElementById('durationValue');
|
| 501 |
|
| 502 |
-
// آدرس اسپیس ت
|
| 503 |
const VIDEO_SPACE_NAME = "mrbui1990/wan2-2-fp8da-aoti-faster";
|
| 504 |
const TRANSLATOR_SPACE_URL_BASE = "https://hamed744-translate-tts-aloha.hf.space/gradio_api";
|
| 505 |
const FN_INDEX_TRANSLATE_SPEAK = 1;
|
| 506 |
const DEFAULT_TTS_VOICE_TRANSLATOR = "انگلیسی (آمریکا) - جنی (زن)";
|
| 507 |
-
|
|
|
|
|
|
|
| 508 |
const DEFAULT_PROMPT_TEXT = "";
|
| 509 |
const TRANSPARENT_PIXEL_SRC = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
|
| 510 |
-
// مقدار پیشفرض زمان ویدیو اضافه شد
|
| 511 |
const DEFAULT_VIDEO_DURATION = 4.3;
|
| 512 |
|
| 513 |
let lastAttemptedVideoPayload = null;
|
| 514 |
|
| 515 |
-
// تابع کمکی برای استایل اسلایدر اضافه شد
|
| 516 |
function updateSliderStyle(slider) {
|
| 517 |
const percentage = ((slider.value - slider.min) / (slider.max - slider.min)) * 100;
|
| 518 |
const colorStops = `var(--accent-primary), var(--accent-secondary)`;
|
|
@@ -596,7 +595,6 @@
|
|
| 596 |
imageDropZone.classList.remove('has-image');
|
| 597 |
promptInput.value = DEFAULT_PROMPT_TEXT;
|
| 598 |
generateButton.disabled = false;
|
| 599 |
-
// مقداردهی اولیه اسلایدر اضافه شد
|
| 600 |
durationSlider.value = DEFAULT_VIDEO_DURATION;
|
| 601 |
durationValueDisplay.textContent = `${parseFloat(DEFAULT_VIDEO_DURATION).toFixed(1)} ثانیه`;
|
| 602 |
updateSliderStyle(durationSlider);
|
|
@@ -678,7 +676,6 @@
|
|
| 678 |
updateSliderStyle(durationSlider);
|
| 679 |
});
|
| 680 |
|
| 681 |
-
// Event listener برای اسلایدر اضافه شد
|
| 682 |
durationSlider.addEventListener('input', () => {
|
| 683 |
const value = parseFloat(durationSlider.value).toFixed(1);
|
| 684 |
durationValueDisplay.textContent = `${value} ثانیه`;
|
|
@@ -712,7 +709,7 @@
|
|
| 712 |
const proceedWithVideoGeneration = async () => {
|
| 713 |
const persianPrompt = promptInput.value.trim();
|
| 714 |
const imageFile = imageFileInput.files[0];
|
| 715 |
-
const duration = parseFloat(durationSlider.value);
|
| 716 |
|
| 717 |
if (!persianPrompt) { addStatusMessage('لطفاً توضیحات را وارد کنید.', 'error'); return; }
|
| 718 |
if (!imageFile) { addStatusMessage('لطفاً تصویر انتخاب کنید.', 'error'); return; }
|
|
@@ -735,17 +732,22 @@
|
|
| 735 |
setAiLoaderText("در حال ساخت ویدیو...");
|
| 736 |
|
| 737 |
const client = await Client.connect(VIDEO_SPACE_NAME);
|
| 738 |
-
|
| 739 |
-
|
| 740 |
-
|
| 741 |
-
|
| 742 |
-
|
| 743 |
-
|
| 744 |
-
|
| 745 |
-
|
| 746 |
-
|
| 747 |
-
|
| 748 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 749 |
|
| 750 |
await handleSuccessfulVideoGeneration(result);
|
| 751 |
|
|
|
|
| 495 |
const outputSection = document.getElementById('outputSection');
|
| 496 |
const btnRestart = document.getElementById('btnRestart');
|
| 497 |
const btnDownloadVideo = document.getElementById('btnDownloadVideo');
|
|
|
|
| 498 |
const durationSlider = document.getElementById('durationSlider');
|
| 499 |
const durationValueDisplay = document.getElementById('durationValue');
|
| 500 |
|
| 501 |
+
// آدرس اسپیس و پارامترها بروزرسانی شد
|
| 502 |
const VIDEO_SPACE_NAME = "mrbui1990/wan2-2-fp8da-aoti-faster";
|
| 503 |
const TRANSLATOR_SPACE_URL_BASE = "https://hamed744-translate-tts-aloha.hf.space/gradio_api";
|
| 504 |
const FN_INDEX_TRANSLATE_SPEAK = 1;
|
| 505 |
const DEFAULT_TTS_VOICE_TRANSLATOR = "انگلیسی (آمریکا) - جنی (زن)";
|
| 506 |
+
// --- START: UPDATED --- پرامپت منفی جدید جایگزین شد
|
| 507 |
+
const DEFAULT_NEGATIVE_PROMPT = "色调艳丽, 过曝, 静态, 细节模糊不清, 字幕, 风格, 作品, 画作, 画面, 静止, 整体发灰, 最差质量, 低质量, JPEG压缩残留, 丑陋的, 残缺的, 多余的手指, 画得不好的手部, 画得不好的脸部, 畸形的, 毁容的, 形态畸形的肢体, 手指融合, 静止不动的画面, 杂乱的背景, 三条腿, 背景人很多, 倒着走";
|
| 508 |
+
// --- END: UPDATED ---
|
| 509 |
const DEFAULT_PROMPT_TEXT = "";
|
| 510 |
const TRANSPARENT_PIXEL_SRC = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
|
|
|
|
| 511 |
const DEFAULT_VIDEO_DURATION = 4.3;
|
| 512 |
|
| 513 |
let lastAttemptedVideoPayload = null;
|
| 514 |
|
|
|
|
| 515 |
function updateSliderStyle(slider) {
|
| 516 |
const percentage = ((slider.value - slider.min) / (slider.max - slider.min)) * 100;
|
| 517 |
const colorStops = `var(--accent-primary), var(--accent-secondary)`;
|
|
|
|
| 595 |
imageDropZone.classList.remove('has-image');
|
| 596 |
promptInput.value = DEFAULT_PROMPT_TEXT;
|
| 597 |
generateButton.disabled = false;
|
|
|
|
| 598 |
durationSlider.value = DEFAULT_VIDEO_DURATION;
|
| 599 |
durationValueDisplay.textContent = `${parseFloat(DEFAULT_VIDEO_DURATION).toFixed(1)} ثانیه`;
|
| 600 |
updateSliderStyle(durationSlider);
|
|
|
|
| 676 |
updateSliderStyle(durationSlider);
|
| 677 |
});
|
| 678 |
|
|
|
|
| 679 |
durationSlider.addEventListener('input', () => {
|
| 680 |
const value = parseFloat(durationSlider.value).toFixed(1);
|
| 681 |
durationValueDisplay.textContent = `${value} ثانیه`;
|
|
|
|
| 709 |
const proceedWithVideoGeneration = async () => {
|
| 710 |
const persianPrompt = promptInput.value.trim();
|
| 711 |
const imageFile = imageFileInput.files[0];
|
| 712 |
+
const duration = parseFloat(durationSlider.value);
|
| 713 |
|
| 714 |
if (!persianPrompt) { addStatusMessage('لطفاً توضیحات را وارد کنید.', 'error'); return; }
|
| 715 |
if (!imageFile) { addStatusMessage('لطفاً تصویر انتخاب کنید.', 'error'); return; }
|
|
|
|
| 732 |
setAiLoaderText("در حال ساخت ویدیو...");
|
| 733 |
|
| 734 |
const client = await Client.connect(VIDEO_SPACE_NAME);
|
| 735 |
+
|
| 736 |
+
// --- START: UPDATED ---
|
| 737 |
+
// ساختار فراخوانی API بر اساس اطلاعات جدید بروزرسانی شد
|
| 738 |
+
// از fn_index: 0 و یک آرایه به جای آبجکت پارامتر استفاده میشود
|
| 739 |
+
const result = await client.predict(0, [
|
| 740 |
+
imageFile, // 0: input_image (File Object)
|
| 741 |
+
englishPrompt, // 1: prompt (String)
|
| 742 |
+
6, // 2: steps (Number)
|
| 743 |
+
DEFAULT_NEGATIVE_PROMPT,// 3: negative_prompt (String)
|
| 744 |
+
duration, // 4: duration_seconds (Number)
|
| 745 |
+
1, // 5: guidance_scale (Number)
|
| 746 |
+
1, // 6: guidance_scale_2 (Number)
|
| 747 |
+
0, // 7: seed (Number, 0 for random)
|
| 748 |
+
true // 8: randomize_seed (Boolean)
|
| 749 |
+
]);
|
| 750 |
+
// --- END: UPDATED ---
|
| 751 |
|
| 752 |
await handleSuccessfulVideoGeneration(result);
|
| 753 |
|