xvai-loi 0.1.60 → 0.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/co.txt +1 -1
  2. package/package.json +1 -1
  3. package/xvai-loi.js +46 -6
package/co.txt CHANGED
@@ -1 +1 @@
1
- xvaiLoi111139
1
+ xvaiLoi111249
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xvai-loi",
3
- "version": "0.1.60",
3
+ "version": "0.1.63",
4
4
  "description": "Loi dung video (Edit Video Tu Dong) nap vao tool Google Flow qua o cam engine/oCam.ts",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
package/xvai-loi.js CHANGED
@@ -10773,7 +10773,7 @@ dangKy("cmAnh", (g, d, tuoi, W4, H2, _n, _s, dai2) => {
10773
10773
  }
10774
10774
  return t ? n / t : 1;
10775
10775
  };
10776
- const yB = [0.66, 0.6, 0.14, 0.72].map((y) => [y, ph(y)]).sort((a2, b) => a2[1] - b[1])[0][0];
10776
+ const yB = [0.6, 0.55, 0.14, 0.66, 0.5].filter((y) => y + hK <= 0.82).map((y) => [y, ph(y)]).sort((a2, b) => a2[1] - b[1])[0][0];
10777
10777
  yK = (yB + 0.575 * 112 / 1920) * H2;
10778
10778
  xK = W4 / 2;
10779
10779
  wK2 = 0.76 * W4;
@@ -10795,7 +10795,7 @@ dangKy("cmAnh", (g, d, tuoi, W4, H2, _n, _s, dai2) => {
10795
10795
  g.shadowColor = "transparent";
10796
10796
  bo(g, bx, by, bw, bh, 0.04 * W4);
10797
10797
  g.clip();
10798
- g.translate(Math.min(bx, Math.max(bx + bw - W4 * s, bx + bw / 2 - cx * W4 * s)), Math.min(by, Math.max(by + bh - H2 * s, 0.54 * bh / (Math.max(0.08, cam - top) * H2) < Math.max(bw / W4, bh / H2) * 0.97 ? by + 0.52 * bh - (top + cam) / 2 * H2 * s : by + 0.2 * bh - top * H2 * s)));
10798
+ g.translate(Math.min(bx, Math.max(bx + bw - W4 * s, bx + bw / 2 - cx * W4 * s)), Math.min(by, Math.max(by + bh - H2 * s, 0.54 * bh / (Math.max(0.08, cam - top) * H2) < Math.max(bw / W4, bh / H2) * 0.97 ? by + 0.52 * bh - (top + cam) / 2 * H2 * s : by + 0.24 * bh - top * H2 * s)));
10799
10799
  g.scale(s, s);
10800
10800
  g.drawImage(_n, 0, 0, W4, H2);
10801
10801
  g.restore();
@@ -11694,7 +11694,10 @@ function lapCuongMe(o) {
11694
11694
  ghiL("bo", { bo: x.kieu || "chu", f: f2, d: 0 }, "trung CTA: canh AI vung CTA lap dung chu CTA may (comment / luu / tai lieu / tang): " + String(x.tu || ""));
11695
11695
  return;
11696
11696
  }
11697
- const ten2 = x.kieu + ":" + String(x.tu || "").toLocaleLowerCase("vi"), im0 = taiSan(ten2), co = !!im0 && !daAnh.has(im0) && !!daAnh.add(im0), chuK = hoa3(suaChu(sach2(x.chu || ""))).split(" ").slice(0, 4).join(" "), chu22 = hoa3(suaChu(sach2(x.chu2 || ""))).split(" ").slice(0, 4).join(" ");
11697
+ const ten2 = x.kieu + ":" + String(x.tu || "").toLocaleLowerCase("vi"), im0 = taiSan(ten2), co = !!im0 && !daAnh.has(im0) && !!daAnh.add(im0), chuK = hoa3(suaChu(sach2(x.chu || (x.kieu === "anh" || x.kieu === "vat" ? (() => {
11698
+ const v = String(x.tu || "").split(/\s+/).map((w) => sach2(w)).filter((w) => w && !/^(và|với|là|thì|mà|nhưng|rồi|cái|những|các|một|này|đó|chúng|ta|tôi|mình|bạn|em|anh|chị|của|cho|để|nên|vì|cũng|đã|đang|sẽ|có|không|được|rất|ạ|nhé|nha|à|ơi|lại|ra|vào|đi|nó|họ|hãy|chỉ|cần|phải|mới|khi|nếu|vậy|thế|như|từ|trong|về|bị|hết|luôn|sau|trước)$/i.test(w)).slice(0, 3);
11699
+ return v.length >= 2 ? v.join(" ") : "";
11700
+ })() : "")))).split(" ").slice(0, 4).join(" "), chu22 = hoa3(suaChu(sach2(x.chu2 || ""))).split(" ").slice(0, 4).join(" ");
11698
11701
  const n0 = ung.length, n1 = loai.length, dV = co && im0.laVideo ? Math.min(2.8, Math.max(2, +im0.dai || 2.4)) : 0;
11699
11702
  if (x.kieu === "anh" && dV) {
11700
11703
  de(f2, dV, { uuTien: UT.so + 5, bo: "anh", ten: ten2, chu: chuK, chu2: chu22, keu: "whoosh", video: 1 }, 3, datAnh);
@@ -17524,7 +17527,7 @@ async function nhanAI(ws, onStatus) {
17524
17527
  var ganNhan = (ws, nh) => nh ? ws.map((w, i) => ({ ...w, n: w.n || (nh.k.indexOf(i) >= 0 ? 1 : 0) })) : ws;
17525
17528
 
17526
17529
  // flow-src/engine/deAI.ts
17527
- var DE_CM = 'B\u1EA1n l\xE0 \u0111\u1EA1o di\u1EC5n h\xECnh cho video d\u1ECDc ng\u1EAFn ti\u1EBFng Vi\u1EC7t, ng\u01B0\u1EDDi n\xF3i tr\u01B0\u1EDBc m\xE1y, m\u1ECDi th\u1EC3 lo\u1EA1i. \u0110\u1ECDc l\u1EDDi r\u1ED3i tr\u1EA3 \u0110\xDANG M\u1ED8T JSON, kh\xF4ng gi\u1EA3i th\xEDch: {"the_loai":"liet-ke|ke-chuyen|lap-luan|ban-hang|huong-dan|khac","co_liet_ke":true/false (true CH\u1EC8 khi ng\u01B0\u1EDDi n\xF3i l\u1EA7n l\u01B0\u1EE3t k\u1EC3 t\u1EEB 3 m\u1EE5c/b\u01B0\u1EDBc tr\u1EDF l\xEAn),"moc":"2-5 t\u1EEB NGUY\xCAN V\u0102N c\xE2u \u0111\u1EA7u n\xEAu ch\u1EE7 \u0111\u1EC1","chot":"l\u1EDDi ch\u1ED1t 3-6 t\u1EEB","nhom":"t\xEAn lo\u1EA1i m\u1EE5c (vd M\u1EB8O, B\u01AF\u1EDAC, C\xD4NG C\u1EE4) ho\u1EB7c r\u1ED7ng","muc":[{"tu":"2-4 t\u1EEB NGUY\xCAN V\u0102N n\u01A1i b\u1EAFt \u0111\u1EA7u n\xF3i m\u1EE5c","ten":"t\xEAn m\u1EE5c \u0111\xFAng ch\xEDnh t\u1EA3, \u0111\u1EE7 ch\u1EEF nh\u01B0 ng\u01B0\u1EDDi n\xF3i; t\xEAn n\u01B0\u1EDBc ngo\xE0i b\u1ECB phi\xEAn \xE2m th\xEC ghi t\xEAn g\u1ED1c","mo":"vi\u1EC7c n\xF3 l\xE0m \u2264 5 t\u1EEB","url":"https trang ch\xEDnh th\u1EE9c CH\u1EC8 khi ch\u1EAFc ch\u1EAFn, kh\xF4ng th\xEC r\u1ED7ng","kq":["\u2264 3 k\u1EBFt qu\u1EA3, m\u1ED7i c\xE1i \u2264 4 t\u1EEB, l\u1EA5y t\u1EEB l\u1EDDi"]}],"canh":[{"tu":"2-4 t\u1EEB NGUY\xCAN V\u0102N n\u01A1i h\xECnh b\u1EAFt \u0111\u1EA7u","kieu":"anh|vat|chu|so|ds","dong":["kieu ds: 2-3 \xFD nguy\xEAn v\u0103n \u2264 3 t\u1EEB, \u0111\xFAng th\u1EE9 t\u1EF1 n\xF3i"],"chu":"ch\u1EEF kho\xE1 \u2264 3 t\u1EEB IN HOA t\xF3m \xFD","chu2":"d\xF2ng ph\u1EE5 \u2264 3 t\u1EEB IN HOA ho\u1EB7c r\u1ED7ng","sac":"am|duong|trung (s\u1EAFc th\xE1i; c\xE2u ph\u1EE7 \u0111\u1ECBnh nh\u01B0 \u201Ckh\xF4ng m\u1EA5t ph\xED\u201D l\xE0 duong)","icon":"tien|dongho|canhbao|tich|bieudo|tim|lua|tenlua|bongden|qua|giohang|nha|sach|dienthoai|cup|khien|la|giot|kinhlup|sai|khong \u2014 icon nh\u1ECF G\u1EAEN TH\xCAM v\xE0o c\u1EA3nh b\u1EA5t k\u1EF3 (c\u1EA3 c\u1EA3nh anh), ch\u1ECDn khi h\u1EE3p ngh\u0129a; kh\xF4ng thay c\u1EA3nh anh","en":"kieu anh: 1 \u1EA3nh ch\u1EE5p th\u1EADt ti\u1EBFng Anh minh ho\u1EA1 \u0110\xDANG ngh\u0129a c\u1EE5m \u0111ang n\xF3i, ng\u01B0\u1EDDi Vi\u1EC7t, b\u1ED1i c\u1EA3nh v\xE0 h\xE0nh \u0111\u1ED9ng c\u1EE5 th\u1EC3, kh\xF4ng ch\u1EEF; kieu vat: 1 \u0111\u1ED3 v\u1EADt 3D ti\u1EBFng Anh; chu/so: r\u1ED7ng"}],"sua":[["c\u1EE5m nghe SAI nguy\xEAn v\u0103n 1-4 t\u1EEB","c\u1EE5m \u0110\xDANG"]]}. Quy t\u1EAFc: co_liet_ke false \u2192 muc [] v\xE0 nhom r\u1ED7ng, b\u1ECF qua m\u1ECDi quy t\u1EAFc v\u1EC1 m\u1EE5c. canh r\u1EA3i \u0111\u1EC1u 1 c\u1EA3nh m\u1ED7i 2,5-3,5 gi\xE2y l\u1EDDi, \u0111\u1ED5i h\xECnh \u0111\xFAng c\u1EE5m t\u1EEB; anh cho b\u1ED1i c\u1EA3nh, c\u1EA3m x\xFAc, \u1EA9n d\u1EE5; vat cho \u0111\u1ED3 v\u1EADt, bi\u1EC3u t\u01B0\u1EE3ng; chu cho c\xE2u \u0111\u1EAFt; so cho con s\u1ED1 c\xF3 trong l\u1EDDi; ds khi l\u1EDDi k\u1EC3 2-3 th\u1EE9 li\u1EC1n nhau. S\u1ED1 anh \u2248 1 m\u1ED7i 6-7 gi\xE2y l\u1EDDi (t\u1ED1i \u0111a 24, KH\xD4NG gi\u1EA3m v\xEC \u0111\xE3 c\xF3 icon), vat \u2264 5, r\u1EA3i \u0110\u1EC0U \u0111\u1EA7u/gi\u1EEFa/cu\u1ED1i (ph\u1EA7n cu\u1ED1i c\u0169ng c\xF3 anh). 3-4 c\u1EA3nh anh \u0111\u1EA7u minh ho\u1EA1 \u0111\xFAng ch\u1EE7 \u0111\u1EC1 c\xE2u m\u1EDF. C\xF3 li\u1EC7t k\xEA: m\u1ED7i m\u1EE5c c\xF3 \u2265 1 anh ho\u1EB7c vat minh ho\u1EA1, kh\xF4ng \u0111\u1EB7t c\u1EA3nh \u0111\xFAng ch\u1ED7 b\u1EAFt \u0111\u1EA7u m\u1EE5c. Kh\xF4ng b\u1ECBa con s\u1ED1. sua = m\u1ECDi ch\u1ED7 nghe nh\u1EA7m t\xEAn ri\xEAng, thu\u1EADt ng\u1EEF, ch\xEDnh t\u1EA3, t\u1ED1i \u0111a 30. L\u1EDDi n\xF3i: ';
17530
+ var DE_CM = 'B\u1EA1n l\xE0 \u0111\u1EA1o di\u1EC5n h\xECnh cho video d\u1ECDc ng\u1EAFn ti\u1EBFng Vi\u1EC7t, ng\u01B0\u1EDDi n\xF3i tr\u01B0\u1EDBc m\xE1y, m\u1ECDi th\u1EC3 lo\u1EA1i. \u0110\u1ECDc l\u1EDDi r\u1ED3i tr\u1EA3 \u0110\xDANG M\u1ED8T JSON, kh\xF4ng gi\u1EA3i th\xEDch: {"the_loai":"liet-ke|ke-chuyen|lap-luan|ban-hang|huong-dan|khac","co_liet_ke":true/false (true CH\u1EC8 khi ng\u01B0\u1EDDi n\xF3i l\u1EA7n l\u01B0\u1EE3t k\u1EC3 t\u1EEB 3 m\u1EE5c/b\u01B0\u1EDBc tr\u1EDF l\xEAn),"moc":"2-5 t\u1EEB NGUY\xCAN V\u0102N c\xE2u \u0111\u1EA7u n\xEAu ch\u1EE7 \u0111\u1EC1","chot":"l\u1EDDi ch\u1ED1t 3-6 t\u1EEB","nhom":"t\xEAn lo\u1EA1i m\u1EE5c (vd M\u1EB8O, B\u01AF\u1EDAC, C\xD4NG C\u1EE4) ho\u1EB7c r\u1ED7ng","muc":[{"tu":"2-4 t\u1EEB NGUY\xCAN V\u0102N n\u01A1i b\u1EAFt \u0111\u1EA7u n\xF3i m\u1EE5c","ten":"t\xEAn m\u1EE5c \u0111\xFAng ch\xEDnh t\u1EA3, \u0111\u1EE7 ch\u1EEF nh\u01B0 ng\u01B0\u1EDDi n\xF3i; t\xEAn n\u01B0\u1EDBc ngo\xE0i b\u1ECB phi\xEAn \xE2m th\xEC ghi t\xEAn g\u1ED1c","mo":"vi\u1EC7c n\xF3 l\xE0m \u2264 5 t\u1EEB","url":"https trang ch\xEDnh th\u1EE9c CH\u1EC8 khi ch\u1EAFc ch\u1EAFn, kh\xF4ng th\xEC r\u1ED7ng","kq":["\u2264 3 k\u1EBFt qu\u1EA3, m\u1ED7i c\xE1i \u2264 4 t\u1EEB, l\u1EA5y t\u1EEB l\u1EDDi"]}],"canh":[{"tu":"2-4 t\u1EEB NGUY\xCAN V\u0102N n\u01A1i h\xECnh b\u1EAFt \u0111\u1EA7u","kieu":"anh|vat|chu|so|ds","dong":["kieu ds: 2-3 \xFD nguy\xEAn v\u0103n \u2264 3 t\u1EEB, \u0111\xFAng th\u1EE9 t\u1EF1 n\xF3i"],"chu":"ch\u1EEF kho\xE1 \u2264 3 t\u1EEB IN HOA t\xF3m \xFD \u2014 B\u1EAET BU\u1ED8C \u1EDF M\u1ECCI c\u1EA3nh, k\u1EC3 c\u1EA3 anh v\xE0 vat","chu2":"d\xF2ng ph\u1EE5 \u2264 3 t\u1EEB IN HOA ho\u1EB7c r\u1ED7ng","sac":"am|duong|trung (s\u1EAFc th\xE1i; c\xE2u ph\u1EE7 \u0111\u1ECBnh nh\u01B0 \u201Ckh\xF4ng m\u1EA5t ph\xED\u201D l\xE0 duong)","icon":"tien|dongho|canhbao|tich|bieudo|tim|lua|tenlua|bongden|qua|giohang|nha|sach|dienthoai|cup|khien|la|giot|kinhlup|sai|khong \u2014 icon nh\u1ECF G\u1EAEN TH\xCAM v\xE0o c\u1EA3nh b\u1EA5t k\u1EF3 (c\u1EA3 c\u1EA3nh anh), ch\u1ECDn khi h\u1EE3p ngh\u0129a; kh\xF4ng thay c\u1EA3nh anh","en":"kieu anh: 1 \u1EA3nh ch\u1EE5p th\u1EADt ti\u1EBFng Anh minh ho\u1EA1 \u0110\xDANG ngh\u0129a c\u1EE5m \u0111ang n\xF3i, ng\u01B0\u1EDDi Vi\u1EC7t, b\u1ED1i c\u1EA3nh v\xE0 h\xE0nh \u0111\u1ED9ng c\u1EE5 th\u1EC3, kh\xF4ng ch\u1EEF; kieu vat: 1 \u0111\u1ED3 v\u1EADt 3D ti\u1EBFng Anh; chu/so: r\u1ED7ng"}],"sua":[["c\u1EE5m nghe SAI nguy\xEAn v\u0103n 1-4 t\u1EEB","c\u1EE5m \u0110\xDANG"]]}. Quy t\u1EAFc: co_liet_ke false \u2192 muc [] v\xE0 nhom r\u1ED7ng, b\u1ECF qua m\u1ECDi quy t\u1EAFc v\u1EC1 m\u1EE5c. canh r\u1EA3i \u0111\u1EC1u 1 c\u1EA3nh m\u1ED7i 2,5-3,5 gi\xE2y l\u1EDDi, \u0111\u1ED5i h\xECnh \u0111\xFAng c\u1EE5m t\u1EEB; anh cho b\u1ED1i c\u1EA3nh, c\u1EA3m x\xFAc, \u1EA9n d\u1EE5; vat cho \u0111\u1ED3 v\u1EADt, bi\u1EC3u t\u01B0\u1EE3ng; chu cho c\xE2u \u0111\u1EAFt; so cho con s\u1ED1 c\xF3 trong l\u1EDDi; ds khi l\u1EDDi k\u1EC3 2-3 th\u1EE9 li\u1EC1n nhau. S\u1ED1 anh \u2248 1 m\u1ED7i 6-7 gi\xE2y l\u1EDDi (t\u1ED1i \u0111a 24, KH\xD4NG gi\u1EA3m v\xEC \u0111\xE3 c\xF3 icon), vat \u2264 5, r\u1EA3i \u0110\u1EC0U \u0111\u1EA7u/gi\u1EEFa/cu\u1ED1i (ph\u1EA7n cu\u1ED1i c\u0169ng c\xF3 anh). 3-4 c\u1EA3nh anh \u0111\u1EA7u minh ho\u1EA1 \u0111\xFAng ch\u1EE7 \u0111\u1EC1 c\xE2u m\u1EDF. C\xF3 li\u1EC7t k\xEA: m\u1ED7i m\u1EE5c c\xF3 \u2265 1 anh ho\u1EB7c vat minh ho\u1EA1, kh\xF4ng \u0111\u1EB7t c\u1EA3nh \u0111\xFAng ch\u1ED7 b\u1EAFt \u0111\u1EA7u m\u1EE5c. Kh\xF4ng b\u1ECBa con s\u1ED1. sua = m\u1ECDi ch\u1ED7 nghe nh\u1EA7m t\xEAn ri\xEAng, thu\u1EADt ng\u1EEF, ch\xEDnh t\u1EA3, t\u1ED1i \u0111a 30. L\u1EDDi n\xF3i: ';
17528
17531
  var DE_SUA = 'B\u1EA1n l\xE0 bi\xEAn t\u1EADp vi\xEAn so\xE1t ph\u1EE5 \u0111\u1EC1 ti\u1EBFng Vi\u1EC7t do m\xE1y nghe ch\xE9p l\u1EA1i t\u1EEB m\u1ED9t video n\xF3i tr\u01B0\u1EDBc m\xE1y. T\xECm M\u1ECCI c\u1EE5m b\u1ECB nghe nh\u1EA7m (t\xEAn ri\xEAng, t\xEAn c\xF4ng c\u1EE5, t\u1EEB ti\u1EBFng Anh b\u1ECB phi\xEAn \xE2m, sai d\u1EA5u, t\u1EEB v\xF4 ngh\u0129a so v\u1EDBi ng\u1EEF c\u1EA3nh, con s\u1ED1 \u0111\u1ECDc b\u1EB1ng ch\u1EEF) r\u1ED3i tr\u1EA3 v\u1EC1 \u0110\xDANG M\u1ED8T JSON {"sua":[["c\u1EE5m SAI nguy\xEAn v\u0103n 1-4 t\u1EEB \u0111\xFAng nh\u01B0 trong l\u1EDDi","c\u1EE5m \u0110\xDANG"]]}, t\u1ED1i \u0111a 40 c\u1EB7p, kh\xF4ng gi\u1EA3i th\xEDch. L\u1EDDi: ';
17529
17532
  var DE_CANH = 'B\u1EA1n l\xE0 \u0111\u1EA1o di\u1EC5n h\xECnh cho video d\u1ECDc n\xF3i tr\u01B0\u1EDBc m\xE1y ki\u1EC3u "Top N c\xF4ng c\u1EE5". D\u01B0\u1EDBi \u0111\xE2y l\xE0 l\u1EDDi n\xF3i c\xF3 m\u1ED1c gi\xE2y [gi\xE2y]. H\xE3y l\u1EADp DANH S\xC1CH C\u1EA2NH D\xC0Y: 1 c\u1EA3nh m\u1ED7i 2,5-3,5 gi\xE2y l\u1EDDi, ph\u1EE7 \u0111\u1EC1u t\u1EEB \u0111\u1EA7u t\u1EDBi cu\u1ED1i, m\u1ED7i c\u1EA3nh neo v\xE0o \u0111\xFAng c\u1EE5m t\u1EEB \u0111ang n\xF3i. Tr\u1EA3 v\u1EC1 \u0110\xDANG M\u1ED8T JSON {"canh":[{"tu":"2-4 t\u1EEB NGUY\xCAN V\u0102N li\u1EC1n nhau trong l\u1EDDi","kieu":"anh|vat|chu|so|ds","dong":["kieu ds: 2-3 \xFD NGUY\xCAN V\u0102N \u2264 3 t\u1EEB m\u1ED7i \xFD, \u0111\xFAng th\u1EE9 t\u1EF1 n\xF3i"],"chu":"ch\u1EEF kh\xF3a \u2264 3 t\u1EEB IN HOA t\xF3m \xFD","chu2":"d\xF2ng ph\u1EE5 \u2264 3 t\u1EEB ho\u1EB7c r\u1ED7ng","icon":"tien|dongho|canhbao|tich|bieudo|tim|lua|tenlua|bongden|qua|giohang|nha|sach|dienthoai|cup|khien|la|giot|kinhlup|sai|khong \u2014 bi\u1EC3u t\u01B0\u1EE3ng nh\u1ECF CH\u1EC8 khi \u0111\xFAng ngh\u0129a c\xE2u n\xF3i (vd: t\u1ED1n ti\u1EC1n \u2192 tien; tri\u1EC7u view \u2192 bieudo; xong vi\u1EC7c \u2192 tich), kh\xF4ng ch\u1EAFc \u2192 khong","en":"kieu anh: 1 \u1EA3nh ch\u1EE5p th\u1EADt b\u1EB1ng ti\u1EBFng Anh MINH HO\u1EA0 \u0110\xDANG NGH\u0128A c\u1EE5m \u0111ang n\xF3i (vd \u0111i\u1EC7p vi\xEAn \u0111\u1ED1i th\u1EE7 \u2192 a man in dark hoodie secretly studying competitor ads on several monitors; l\u01B0\u1EDBt \u0111i\u1EC7n tho\u1EA1i \u2192 a woman lying on sofa scrolling her phone), ng\u01B0\u1EDDi Vi\u1EC7t, KH\xD4NG ch\u1EEF; kieu vat: 1 v\u1EADt/bi\u1EC3u t\u01B0\u1EE3ng 3D b\u1EB1ng ti\u1EBFng Anh; chu/so: r\u1ED7ng"}]}, kh\xF4ng gi\u1EA3i th\xEDch. KH\xD4NG \u0111\u1EB7t c\u1EA3nh tr\xF9ng 3 gi\xE2y \u0111\u1EA7u m\u1ED7i m\u1EE5c c\xF4ng c\u1EE5 (\u0111\xE3 c\xF3 th\u1EBB c\xF4ng c\u1EE5); con s\u1ED1 trong l\u1EDDi (x10, 1 ph\xFAt, 2 ng\u01B0\u1EDDi) \u2192 kieu so. anh cho n\u1ED7i \u0111au, b\u1ED1i c\u1EA3nh, \u1EA9n d\u1EE5 (ph\u1EA7n m\u1EDF: 3-4 \u1EA3nh n\u1ED1i nhau); vat cho \u0111\u1ED3 v\u1EADt, bi\u1EC3u t\u01B0\u1EE3ng; chu cho c\xE2u \u0111\u1EAFt; so cho con s\u1ED1 c\xF3 trong l\u1EDDi. Kh\xF4ng b\u1ECBa s\u1ED1. L\u1EDDi: ';
17530
17533
 
@@ -18741,6 +18744,43 @@ async function handleExport(currentProject, setExporting, setExportedBlob, addLo
18741
18744
  });
18742
18745
  } catch (e) {
18743
18746
  }
18747
+ try {
18748
+ const W4 = (window.__wsGocKB || currentProject.speechDraft?.analysis?.words || []).filter((w) => w && w.text && w.t1 > w.t0);
18749
+ if (kb && Array.isArray(kb.canh) && W4.length > 20) {
18750
+ const lo = (x) => String(x || "").toLocaleLowerCase("vi").replace(/[^\p{L}\p{N}\s]/gu, "").trim(), wl = W4.map((w) => lo(w.text));
18751
+ const timTu = (tu) => {
18752
+ const q = lo(tu).split(/\s+/).filter(Boolean).slice(0, 3);
18753
+ if (!q.length) return -1;
18754
+ for (let i = 0; i + q.length <= wl.length; i++) {
18755
+ let ok = true;
18756
+ for (let j = 0; j < q.length; j++) if (wl[i + j] !== q[j]) {
18757
+ ok = false;
18758
+ break;
18759
+ }
18760
+ if (ok) return i;
18761
+ }
18762
+ return -1;
18763
+ };
18764
+ const moc = kb.canh.filter((c) => c && (c.kieu === "anh" || c.kieu === "vat")).map((c) => timTu(c.tu)).filter((i) => i >= 0).map((i) => W4[i].t0).sort((x, y) => x - y), pts = [W4[0].t0 + 3, ...moc, W4[W4.length - 1].t1 - 3];
18765
+ let them = 0;
18766
+ for (let k = 0; k + 1 < pts.length && them < 8; k++) {
18767
+ const a0 = pts[k], b0 = pts[k + 1];
18768
+ if (b0 - a0 < 7) continue;
18769
+ const n = Math.floor((b0 - a0) / 5.5);
18770
+ for (let m = 1; m <= n && them < 8; m++) {
18771
+ const tm = a0 + (b0 - a0) * m / (n + 1), HU4 = /^(và|với|là|thì|mà|nhưng|rồi|cái|những|các|một|này|đó|chúng|ta|tôi|mình|bạn|em|anh|chị|của|cho|để|nên|vì|cũng|đã|đang|sẽ|có|không|được|rất|thì|ạ|nhé|nha|à|ơi|lại|ra|vào|đi|nó|họ)$/i, i0 = W4.findIndex((w) => w.t0 >= tm);
18772
+ let i = i0;
18773
+ while (i >= 0 && i < i0 + 5 && i < W4.length - 3 && HU4.test(String(W4[i].text).replace(/[.,!?;:…"“”]/g, ""))) i++;
18774
+ if (i < 0 || i + 3 > W4.length) continue;
18775
+ const tu = W4.slice(i, i + 3).map((w) => String(w.text).replace(/[.,!?;:…"“”]/g, "")).join(" "), cau = W4.slice(Math.max(0, i - 5), i + 10).map((w) => w.text).join(" ");
18776
+ kb.canh.push({ tu, kieu: "anh", chu: W4.slice(i, i + 6).map((w) => String(w.text).replace(/[.,!?;:…"“”]/g, "")).filter((x) => !HU4.test(x)).slice(0, 3).join(" ").toLocaleUpperCase("vi"), chu2: "", en: 'Cinematic photorealistic vertical photo that illustrates the meaning of this Vietnamese sentence: "' + cau + '". Vietnamese people, real everyday setting, natural light, no text, no captions.' });
18777
+ them++;
18778
+ }
18779
+ }
18780
+ window.__anhBu = them;
18781
+ }
18782
+ } catch (e) {
18783
+ }
18744
18784
  if (String((() => {
18745
18785
  try {
18746
18786
  return localStorage.getItem("xvaiNguonTram");
@@ -20488,7 +20528,7 @@ async function napLoi(d) {
20488
20528
  return "LOI: " + String(e && e.message || e).slice(0, 300);
20489
20529
  }
20490
20530
  }
20491
- var LOI_URL = "https://cdn.jsdelivr.net/npm/xvai-loi@0.1.59/nap.js";
20531
+ var LOI_URL = "https://cdn.jsdelivr.net/npm/xvai-loi@0.1.62/nap.js";
20492
20532
  var TRONG_LOI = !!globalThis.__xvaiReact;
20493
20533
  try {
20494
20534
  if (!TRONG_LOI) setTimeout(() => {
@@ -20518,7 +20558,7 @@ function datCauLenh(a) {
20518
20558
  on2 = true;
20519
20559
  window.addEventListener("message", async (ev) => {
20520
20560
  const d = ev.data;
20521
- if (!d || d.xvaiLoi111139 !== true) return;
20561
+ if (!d || d.xvaiLoi111249 !== true) return;
20522
20562
  const o = String(ev.origin || "");
20523
20563
  if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
20524
20564
  const tra = (kq) => {