sns-auto-builder 1.1.1 → 1.1.2
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/package.json +1 -1
- package/scripts/chatgpt-image-gen.js +14 -6
package/package.json
CHANGED
|
@@ -332,7 +332,10 @@ const readPageError = (page) => page.evaluate((needles) => {
|
|
|
332
332
|
// 저장돼, 3장만 만들어졌는데 4장이 나온 것처럼 끝난 적이 있다.
|
|
333
333
|
async function waitForNewImage(page, before, timeoutMs, used = new Set()) {
|
|
334
334
|
const deadline = Date.now() + timeoutMs;
|
|
335
|
-
|
|
335
|
+
// sawStreaming: 이 턴이 **실제로 시작된 걸 본** 뒤에만 "끝났다" 판정을 믿는다.
|
|
336
|
+
// 전송 직후엔 stop 버튼이 아직 안 떠서, 그걸 끝난 걸로 보면 이미지 생성(25~40초)
|
|
337
|
+
// 도중에 20초 만에 실패 처리해버린다.
|
|
338
|
+
let fresh = [], lastChange = 0, sawOnlyUsed = false, idleSince = 0, sawStreaming = false;
|
|
336
339
|
while (Date.now() < deadline) {
|
|
337
340
|
const all = (await fileIds(page)).filter((id) => !before.includes(id));
|
|
338
341
|
const now = all.filter((id) => !used.has(id));
|
|
@@ -344,12 +347,17 @@ async function waitForNewImage(page, before, timeoutMs, used = new Set()) {
|
|
|
344
347
|
}
|
|
345
348
|
if (now.length !== fresh.length) { fresh = now; lastChange = Date.now(); }
|
|
346
349
|
|
|
347
|
-
// 턴이 끝났는지를 **먼저** 본다. 12초 settle 은 stop 버튼을 못 읽을 때의 보조 장치다.
|
|
348
350
|
const streaming = await isStreaming(page);
|
|
349
|
-
if (streaming) idleSince = 0;
|
|
350
|
-
else if (!idleSince) idleSince = Date.now();
|
|
351
|
-
|
|
352
|
-
|
|
351
|
+
if (streaming) { sawStreaming = true; idleSince = 0; }
|
|
352
|
+
else if (sawStreaming && !idleSince) idleSince = Date.now();
|
|
353
|
+
|
|
354
|
+
// 반환 조건은 **개수가 SETTLE_MS 동안 안 변한 것** 하나뿐이다.
|
|
355
|
+
//
|
|
356
|
+
// stop 버튼이 사라졌다고 바로 집으면 안 된다. ChatGPT 는 최종 이미지 전에 미리보기를
|
|
357
|
+
// 먼저 띄우는데, 그걸 최종본으로 착각하면 뒤늦게 나온 진짜 최종본을 **다음 장이**
|
|
358
|
+
// 가져가 전체가 한 칸씩 밀린다 (4번 자리에 3번 그림이 들어간 적이 있다).
|
|
359
|
+
// 미리보기가 최종본으로 바뀌면 개수가 변하므로 타이머가 다시 돌아 안전하다.
|
|
360
|
+
if (fresh.length && Date.now() - lastChange >= SETTLE_MS) {
|
|
353
361
|
if (fresh.length > 1) {
|
|
354
362
|
console.warn(` (경고) 한 프롬프트에 ${fresh.length}장이 생성됨 — 첫 장만 사용합니다.`);
|
|
355
363
|
}
|