Update index.html
Browse files- index.html +13 -15
index.html
CHANGED
|
@@ -104,13 +104,12 @@
|
|
| 104 |
<script type="module">
|
| 105 |
import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js";
|
| 106 |
|
| 107 |
-
// فرمتبندی تمامی پارامترها
|
| 108 |
const formSchema = [
|
| 109 |
// گروه: Resolution
|
| 110 |
{ group: "رزولوشن و ابعاد", id: "max_width", type: "number", val: 1120 },
|
| 111 |
{ group: "رزولوشن و ابعاد", id: "max_height", type: "number", val: 1344 },
|
| 112 |
{ group: "رزولوشن و ابعاد", id: "target_mp", type: "number", val: 1.15, step: 0.05 },
|
| 113 |
-
// توجه: castTo="number" اضافه شد تا "64" به عدد صحیح 64 تبدیل شود
|
| 114 |
{ group: "رزولوشن و ابعاد", id: "snap_multiple", type: "select", options: ["32", "64"], val: "64", castTo: "number" },
|
| 115 |
{ group: "رزولوشن و ابعاد", id: "custom_res_enabled", type: "checkbox", val: false },
|
| 116 |
|
|
@@ -173,7 +172,6 @@
|
|
| 173 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_ref3", type: "file", val: null },
|
| 174 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_ref4", type: "file", val: null },
|
| 175 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_background", type: "file", val: null },
|
| 176 |
-
// توجه: castTo="number" اضافه شد
|
| 177 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_frame_count", type: "select", options: ["17", "25", "33", "41"], val: "41", castTo: "number" },
|
| 178 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_guide_strength", type: "number", val: 1.0, step: 0.05 },
|
| 179 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_lora_strength", type: "number", val: 0.7, step: 0.05 },
|
|
@@ -289,7 +287,7 @@
|
|
| 289 |
try {
|
| 290 |
const client = await Client.connect("Fighterdan/LTX-2.3-10Eros_I2V", { hf_token: hfToken });
|
| 291 |
|
| 292 |
-
// گرفتن فایلهای MSR در صورت وجود
|
| 293 |
const getFile = (id) => document.getElementById(id) && document.getElementById(id).files.length ? document.getElementById(id).files[0] : null;
|
| 294 |
|
| 295 |
const enhanceParams = {
|
|
@@ -336,12 +334,12 @@
|
|
| 336 |
btn.disabled = true;
|
| 337 |
loader.style.display = "block";
|
| 338 |
videoRes.style.display = "none";
|
| 339 |
-
liveLogs.innerHTML = "";
|
| 340 |
statusText.innerText = "در حال اتصال...";
|
| 341 |
appendLog("شروع فرآیند اتصال به سرور...");
|
| 342 |
|
| 343 |
try {
|
| 344 |
-
// خواندن پارامترها و کست کردن مقادیر رشتهای به عددی
|
| 345 |
const params = {
|
| 346 |
image_path: imgInput.files[0],
|
| 347 |
prompt: promptInput,
|
|
@@ -361,22 +359,27 @@
|
|
| 361 |
params[field.id] = el.files[0];
|
| 362 |
}
|
| 363 |
} else if (field.type === "select") {
|
| 364 |
-
// تبدیل نوع دراپداونهایی که نیاز به عدد دارند
|
| 365 |
params[field.id] = field.castTo === "number" ? Number(el.value) : el.value;
|
| 366 |
} else {
|
| 367 |
params[field.id] = el.value;
|
| 368 |
}
|
| 369 |
});
|
| 370 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 371 |
appendLog("پارامترها آماده شد. اتصال به کلاینت Gradio...");
|
| 372 |
const client = await Client.connect("Fighterdan/LTX-2.3-10Eros_I2V", { hf_token: hfToken });
|
| 373 |
|
| 374 |
appendLog("متصل شد! ارسال درخواست تولید ویدیو (submit)...");
|
| 375 |
|
| 376 |
-
// استفاده از Submit به جای Predict برای دریافت رویدادهای زنده
|
| 377 |
const job = client.submit("/generate", params);
|
| 378 |
|
| 379 |
-
// گرفتن رویدادهای وضعیت (در صف، در حال اجرا و غیره)
|
| 380 |
job.on("status", (status) => {
|
| 381 |
if (status.stage === "pending") {
|
| 382 |
const queueInfo = status.queue_position !== undefined ? ` (جایگاه در صف: ${status.queue_position})` : "";
|
|
@@ -394,12 +397,10 @@
|
|
| 394 |
}
|
| 395 |
});
|
| 396 |
|
| 397 |
-
// گرفتن لاگهای زنده که توسط ��رور چاپ میشود (مثل خطاهای ComfyUI)
|
| 398 |
job.on("log", (logData) => {
|
| 399 |
appendLog("[سرور]: " + logData.log);
|
| 400 |
});
|
| 401 |
|
| 402 |
-
// گرفتن خروجی نهایی
|
| 403 |
job.on("data", (result) => {
|
| 404 |
appendLog("پاسخ نهایی دریافت شد.");
|
| 405 |
const data = result.data;
|
|
@@ -415,7 +416,6 @@
|
|
| 415 |
}
|
| 416 |
});
|
| 417 |
|
| 418 |
-
// در صورت بروز خطا در ارسال درخواست
|
| 419 |
job.on("error", (error) => {
|
| 420 |
console.error(error);
|
| 421 |
statusText.innerText = "خطای کلاینت: " + error.message;
|
|
@@ -427,12 +427,10 @@
|
|
| 427 |
statusText.innerText = "خطا در برقراری ارتباط اولیه: " + error.message;
|
| 428 |
appendLog("استثنای اتصال: " + error.message);
|
| 429 |
} finally {
|
| 430 |
-
// از آنجایی که job ناهمگام (Event-based) است، دکمه را در زمان پایان (داخل status) یا همینجا با تایمر موقت آزاد میکنیم.
|
| 431 |
-
// به صورت اصولی دکمه باید وقتی stage === complete شد فعال شود، اما برای اطمینان این تنظیمات را اینجا میگذاریم.
|
| 432 |
setTimeout(() => {
|
| 433 |
btn.disabled = false;
|
| 434 |
loader.style.display = "none";
|
| 435 |
-
}, 3000);
|
| 436 |
}
|
| 437 |
});
|
| 438 |
</script>
|
|
|
|
| 104 |
<script type="module">
|
| 105 |
import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js";
|
| 106 |
|
| 107 |
+
// فرمتبندی تمامی پارامترها
|
| 108 |
const formSchema = [
|
| 109 |
// گروه: Resolution
|
| 110 |
{ group: "رزولوشن و ابعاد", id: "max_width", type: "number", val: 1120 },
|
| 111 |
{ group: "رزولوشن و ابعاد", id: "max_height", type: "number", val: 1344 },
|
| 112 |
{ group: "رزولوشن و ابعاد", id: "target_mp", type: "number", val: 1.15, step: 0.05 },
|
|
|
|
| 113 |
{ group: "رزولوشن و ابعاد", id: "snap_multiple", type: "select", options: ["32", "64"], val: "64", castTo: "number" },
|
| 114 |
{ group: "رزولوشن و ابعاد", id: "custom_res_enabled", type: "checkbox", val: false },
|
| 115 |
|
|
|
|
| 172 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_ref3", type: "file", val: null },
|
| 173 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_ref4", type: "file", val: null },
|
| 174 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_background", type: "file", val: null },
|
|
|
|
| 175 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_frame_count", type: "select", options: ["17", "25", "33", "41"], val: "41", castTo: "number" },
|
| 176 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_guide_strength", type: "number", val: 1.0, step: 0.05 },
|
| 177 |
{ group: "حالت چند مرجعی (MSR)", id: "msr_lora_strength", type: "number", val: 0.7, step: 0.05 },
|
|
|
|
| 287 |
try {
|
| 288 |
const client = await Client.connect("Fighterdan/LTX-2.3-10Eros_I2V", { hf_token: hfToken });
|
| 289 |
|
| 290 |
+
// گرفتن فایلهای MSR در صورت وجود
|
| 291 |
const getFile = (id) => document.getElementById(id) && document.getElementById(id).files.length ? document.getElementById(id).files[0] : null;
|
| 292 |
|
| 293 |
const enhanceParams = {
|
|
|
|
| 334 |
btn.disabled = true;
|
| 335 |
loader.style.display = "block";
|
| 336 |
videoRes.style.display = "none";
|
| 337 |
+
liveLogs.innerHTML = "";
|
| 338 |
statusText.innerText = "در حال اتصال...";
|
| 339 |
appendLog("شروع فرآیند اتصال به سرور...");
|
| 340 |
|
| 341 |
try {
|
| 342 |
+
// خواندن پارامترها و کست کردن مقادیر رشتهای به عددی
|
| 343 |
const params = {
|
| 344 |
image_path: imgInput.files[0],
|
| 345 |
prompt: promptInput,
|
|
|
|
| 359 |
params[field.id] = el.files[0];
|
| 360 |
}
|
| 361 |
} else if (field.type === "select") {
|
|
|
|
| 362 |
params[field.id] = field.castTo === "number" ? Number(el.value) : el.value;
|
| 363 |
} else {
|
| 364 |
params[field.id] = el.value;
|
| 365 |
}
|
| 366 |
});
|
| 367 |
|
| 368 |
+
// ==========================================
|
| 369 |
+
// خط کلیدی برای رفع خطا:
|
| 370 |
+
// پارامتر enhance_budget مختص API بهینهسازی است و
|
| 371 |
+
// نباید در درخواست /generate ارسال شود!
|
| 372 |
+
// ==========================================
|
| 373 |
+
delete params.enhance_budget;
|
| 374 |
+
|
| 375 |
appendLog("پارامترها آماده شد. اتصال به کلاینت Gradio...");
|
| 376 |
const client = await Client.connect("Fighterdan/LTX-2.3-10Eros_I2V", { hf_token: hfToken });
|
| 377 |
|
| 378 |
appendLog("متصل شد! ارسال درخواست تولید ویدیو (submit)...");
|
| 379 |
|
| 380 |
+
// استفاده از Submit به جای Predict برای دریافت رویدادهای زنده
|
| 381 |
const job = client.submit("/generate", params);
|
| 382 |
|
|
|
|
| 383 |
job.on("status", (status) => {
|
| 384 |
if (status.stage === "pending") {
|
| 385 |
const queueInfo = status.queue_position !== undefined ? ` (جایگاه در صف: ${status.queue_position})` : "";
|
|
|
|
| 397 |
}
|
| 398 |
});
|
| 399 |
|
|
|
|
| 400 |
job.on("log", (logData) => {
|
| 401 |
appendLog("[سرور]: " + logData.log);
|
| 402 |
});
|
| 403 |
|
|
|
|
| 404 |
job.on("data", (result) => {
|
| 405 |
appendLog("پاسخ نهایی دریافت شد.");
|
| 406 |
const data = result.data;
|
|
|
|
| 416 |
}
|
| 417 |
});
|
| 418 |
|
|
|
|
| 419 |
job.on("error", (error) => {
|
| 420 |
console.error(error);
|
| 421 |
statusText.innerText = "خطای کلاینت: " + error.message;
|
|
|
|
| 427 |
statusText.innerText = "خطا در برقراری ارتباط اولیه: " + error.message;
|
| 428 |
appendLog("استثنای اتصال: " + error.message);
|
| 429 |
} finally {
|
|
|
|
|
|
|
| 430 |
setTimeout(() => {
|
| 431 |
btn.disabled = false;
|
| 432 |
loader.style.display = "none";
|
| 433 |
+
}, 3000);
|
| 434 |
}
|
| 435 |
});
|
| 436 |
</script>
|