xvai-loi 0.1.80 → 0.1.82
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.
- package/co.txt +1 -1
- package/package.json +1 -1
- package/xvai-loi.js +64 -4
package/co.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
xvaiLoi120041
|
package/package.json
CHANGED
package/xvai-loi.js
CHANGED
|
@@ -9684,14 +9684,15 @@ function moNhanh(g, W4, H2, ve, r, them = "") {
|
|
|
9684
9684
|
// flow-src/engine/khuon.ts
|
|
9685
9685
|
var KHUON_TOPN = {
|
|
9686
9686
|
ten: "Top N chi\u1EC1u s\xE2u (Captions)",
|
|
9687
|
-
tram: { phut: 18.3, tyLe: 0.7, phan: [0.83, 0.81, 0.46], daiTV: 2.1, video: 0.33, nhanVat: ["Vietnamese people in a real everyday setting.", "Close-up of an object, hands or a place that shows the idea, no faces."] },
|
|
9688
|
-
// cảnh trám / phút, % thời lượng, 3 phần đầu/giữa/cuối, độ dài trung vị (s), tỉ lệ clip động; nhanVat: xen kẽ ảnh có người / cận vật-tay-nơi (đối thủ trộn web, stock, 3D — B06-1027: toàn ảnh người → 'không thấy mặt' 12 % < 15)
|
|
9687
|
+
tram: { phut: 18.3, tyLe: 0.7, phan: [0.83, 0.81, 0.46], daiTV: 2.1, video: 0.33, nhanVat: ["Vietnamese people in a real everyday setting.", "Close-up of an object, hands or a place that shows the idea, no faces."], cheToiDa: 0.55, tranToiDa: 0.8, tranToiThieu: 0.5 },
|
|
9688
|
+
// cheToiDa: phần phim người nói bị CHE (ảnh / thẻ kính toàn khung) tối đa — máy đo B9 'không thấy mặt' ≈ 0,5–0,87 × che (ảnh có người vẫn tính thấy mặt) → 0,55 giữ B9 ≤ ~40 (D03-1041: che 60 %, B9 53 %); tranToiThieu: không cắt khi trám còn < 50 % (B2 ≥ 45) · tranToiDa: trám cả chia / thẻ tối đa (B2 45–80 %) · cảnh trám / phút, % thời lượng, 3 phần đầu/giữa/cuối, độ dài trung vị (s), tỉ lệ clip động; nhanVat: xen kẽ ảnh có người / cận vật-tay-nơi (đối thủ trộn web, stock, 3D — B06-1027: toàn ảnh người → 'không thấy mặt' 12 % < 15)
|
|
9689
9689
|
chu: { phut: [8, 18], caoMin: 0.042 },
|
|
9690
9690
|
// caoMin: nét chữ nhấn (kể cả dấu) / H — đối thủ trung vị 0,042 (đo tay 23 dòng); chữ bị ép ngang thấp hơn → 2 dòng
|
|
9691
9691
|
icon: { phut: 11.5 },
|
|
9692
9692
|
cat: { moi10s: [4, 6], manhNguoi: 1.2, heChu: 0 },
|
|
9693
9693
|
// manhNguoi: mẩu người nói kẹp giữa 2 cảnh ngắn hơn thì lấp (trước 0,6 — VD-236); heChu: khe giữa 2 cảnh liền cùng có chữ (trước 0,06 → chớp 2 khung người nói = 2 cú cắt thừa; bàn thử 13 video 12/10 00:0x: 0,06 → 0 cắt TB 5,44 → 4,39/10 s, chồng chữ 0/13 — cảnh trước đã hết theo giờ PHIM nhờ bT)
|
|
9694
|
-
nguoi: { phongToiDa: 1.8, matToiDa: 0.55 },
|
|
9694
|
+
nguoi: { phongToiDa: 1.8, matToiDa: 0.55, doiToiDa: 10 },
|
|
9695
|
+
// doiToiDa: bố cục DỜI người nói (thẻ/chia/tròn/tách nền) mỗi phút — đối thủ 15 / 88 s (P2 ×6, P3 ×3, P4 ×3, P7 ×3); mỗi lần dời = 1–2 cú đầu nhảy (A4 đối thủ 11,5/phút)
|
|
9695
9696
|
// matToiDa: hộp đầu (tóc→cằm) cao hơn 0,55 H thì KHÔNG dùng ô người / chia (không vừa ô) // MỌI ô người (PIP, thẻ, chia) phóng khung gốc tối đa 1,8× (độ nét) — trước: PIP 1,6, thẻ 1,3 (B05-1027: thẻ hiện cả người nhỏ)
|
|
9696
9697
|
lietKe: { xenKe: 2 },
|
|
9697
9698
|
// video liệt kê: cứ thẻ bước thứ 2 → ảnh toàn khung + tiêu đề (đối thủ đổi kiểu, không lặp 1 khuôn thẻ)
|
|
@@ -13003,6 +13004,65 @@ function lapCuongMe(o) {
|
|
|
13003
13004
|
});
|
|
13004
13005
|
}
|
|
13005
13006
|
}
|
|
13007
|
+
{
|
|
13008
|
+
const mn = +(globalThis.__manhNguoi ?? KHUON_TOPN.cat.manhNguoi), ds2 = () => sp.filter((x) => x.bo !== "phong").sort((p, q) => p.f - q.f);
|
|
13009
|
+
for (const [loai2, tran] of [[/^(anh|kinh)$/, KHUON_TOPN.tram.cheToiDa], [/^(anh|kinh|chia|card)$/, KHUON_TOPN.tram.tranToiDa]]) {
|
|
13010
|
+
let du = sp.filter((x) => loai2.test(String(x.bo))).reduce((s2, x) => s2 + x.d, 0) - tran * tong, vong2 = 0;
|
|
13011
|
+
while (du > 0.05 && vong2++ < 60 && sp.filter((x) => /^(anh|kinh|chia|card)$/.test(String(x.bo))).reduce((s2, x) => s2 + x.d, 0) > KHUON_TOPN.tram.tranToiThieu * tong + 0.3) {
|
|
13012
|
+
const L = ds2(), cat2 = L.filter((x) => loai2.test(String(x.bo)) && /^(anh|chia)$/.test(String(x.bo)) && !x.khoa && !x.dong && !x.doc && !x.ui && !x.hang && x.f >= 1).sort((p, q) => q.d - p.d);
|
|
13013
|
+
let lam = false;
|
|
13014
|
+
for (const x of cat2) {
|
|
13015
|
+
const nx = L[L.indexOf(x) + 1], het = nx ? nx.f : tong, giu2 = Math.max(1.6, x.d - du - (nx && het - (x.f + x.d) < mn ? mn - (het - (x.f + x.d)) : 0));
|
|
13016
|
+
const d2 = nx && het - (x.f + giu2) < mn ? het - mn - x.f : giu2;
|
|
13017
|
+
if (d2 >= 1.6 && x.d - d2 > 0.25) {
|
|
13018
|
+
ghiL("rut", x, "khuon tram tran: " + x.d.toFixed(2) + " -> " + d2.toFixed(2) + " s");
|
|
13019
|
+
du -= x.d - d2;
|
|
13020
|
+
x.d = +d2.toFixed(2);
|
|
13021
|
+
lam = true;
|
|
13022
|
+
break;
|
|
13023
|
+
}
|
|
13024
|
+
}
|
|
13025
|
+
if (!lam) {
|
|
13026
|
+
const bo4 = cat2.filter((x) => !String(x.chu || x.giant || "").trim()).sort((p, q) => q.d - p.d)[0];
|
|
13027
|
+
if (!bo4) break;
|
|
13028
|
+
ghiL("bo", bo4, "khuon tram tran: bo anh khong chu");
|
|
13029
|
+
du -= bo4.d;
|
|
13030
|
+
sp.splice(sp.indexOf(bo4), 1);
|
|
13031
|
+
}
|
|
13032
|
+
}
|
|
13033
|
+
}
|
|
13034
|
+
G4.__tramTran = 1;
|
|
13035
|
+
}
|
|
13036
|
+
{
|
|
13037
|
+
const doi = (x) => /^(card|chia|tron|cut)$/.test(String(x.bo)), D = sp.filter(doi).sort((p, q) => p.f - q.f), tranD = Math.floor(KHUON_TOPN.nguoi.doiToiDa * tong / 60);
|
|
13038
|
+
let nD = 0;
|
|
13039
|
+
const duoc = (x) => !x.ui && !x.doc && !x.hang && !x.dong && !x.tieuDoc && !x.khoa && x.f >= 3 && (x.bo === "chia" && x.ten && taiSan(x.ten) || x.bo === "card" && x.anhTren);
|
|
13040
|
+
while (D.length > tranD) {
|
|
13041
|
+
let j = -1, m = 1e9;
|
|
13042
|
+
for (let k = 0; k < D.length; k++) {
|
|
13043
|
+
const x2 = D[k];
|
|
13044
|
+
if (!duoc(x2)) continue;
|
|
13045
|
+
const g = Math.min(k > 0 ? x2.f - D[k - 1].f : 1e9, k + 1 < D.length ? D[k + 1].f - x2.f : 1e9);
|
|
13046
|
+
if (g < m) {
|
|
13047
|
+
m = g;
|
|
13048
|
+
j = k;
|
|
13049
|
+
}
|
|
13050
|
+
}
|
|
13051
|
+
if (j < 0) break;
|
|
13052
|
+
const x = D[j];
|
|
13053
|
+
ghiL("doi", x, "khuon nguoi.doiToiDa: " + x.bo + " \u2192 anh toan khung");
|
|
13054
|
+
if (x.bo === "card") {
|
|
13055
|
+
x.ten = x.anhTren;
|
|
13056
|
+
x.chu = x.tieu;
|
|
13057
|
+
x.chu2 = "";
|
|
13058
|
+
x.theAnh = 1;
|
|
13059
|
+
}
|
|
13060
|
+
x.bo = "anh";
|
|
13061
|
+
D.splice(j, 1);
|
|
13062
|
+
nD++;
|
|
13063
|
+
}
|
|
13064
|
+
G4.__doiNguoiBo = nD;
|
|
13065
|
+
}
|
|
13006
13066
|
{
|
|
13007
13067
|
const coC = (x) => x.bo !== "phong" && !!String(x.giant || x.chu || x.tieu || "").trim(), C2 = sp.filter(coC).sort((p, q) => p.f - q.f), tran = Math.floor(0.9 * KHUON_TOPN.chu.phut[1] * tong / 60);
|
|
13008
13068
|
let nT = 0;
|
|
@@ -20913,7 +20973,7 @@ function datCauLenh(a) {
|
|
|
20913
20973
|
on2 = true;
|
|
20914
20974
|
window.addEventListener("message", async (ev) => {
|
|
20915
20975
|
const d = ev.data;
|
|
20916
|
-
if (!d || d.
|
|
20976
|
+
if (!d || d.xvaiLoi120041 !== true) return;
|
|
20917
20977
|
const o = String(ev.origin || "");
|
|
20918
20978
|
if (!(o.indexOf("https://flow.google.com") === 0 || o.indexOf("https://labs.google") === 0)) return;
|
|
20919
20979
|
const tra = (kq) => {
|