Families.AutoWriter
1.0.0.0
Families 콘텐츠를 반복 작업 없이 작성·등록하도록 돕는 자동화 작성 도구입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
ResponseExtractor.cs
이 파일의 문서화 페이지로 가기
1
namespace
FamiliesAutoWriter.Services
;
2
11
public
static
class
ResponseExtractor
12
{
29
public
static
string
BuildExtractScript
() =>
""
"
30
(function() {
31
// 응답 영역에서 텍스트를 추출하는 함수
32
// completed: 마지막 섹션인 ===VIDEO=== 까지 나와야 완료
33
function makeResult(source, text) {
34
// 시작 마커(===TITLE=== 또는 ===DETAIL_*_TITLE===)와
35
// 종료 마커(===VIDEO===)가 모두 있어야 완료로 판정
36
// → 이전 대화 텍스트가 섞여 오탐되는 것 방지
37
const hasEnd = text.includes('===VIDEO===');
38
const hasStart = text.includes('===TITLE===') || /===DETAIL_\S+_TITLE===/.test(text);
39
const completed = hasEnd && hasStart;
40
return JSON.stringify({ source, text, completed });
41
}
42
43
// ── ChatGPT (다중 셀렉터 폴백) ────────────────────────────
44
const gptSelectors = [
45
'[data-message-author-role="
assistant
"]',
46
'article[data-testid*="
conversation-turn
"]:not([data-testid*="
user
"])',
47
'.agent-turn',
48
'div[class*="
agent-turn
"]',
49
'[data-role="
assistant
"]',
50
];
51
for (const sel of gptSelectors) {
52
const msgs = document.querySelectorAll(sel);
53
if (msgs.length > 0) {
54
const last = msgs[msgs.length - 1];
55
const prose = last.querySelector('.prose')
56
?? last.querySelector('[class*="
markdown
"]')
57
?? last.querySelector('div[class*="
prose
"]')
58
?? last;
59
const text = prose.innerText.trim();
60
if (text.length > 10) return makeResult('chatgpt', text);
61
}
62
}
63
64
// ── Claude.ai ──────────────────────────────────────────────
65
for (const sel of ['[data-testid="
assistant-message
"]', '.font-claude-message', '.prose']) {
66
const msgs = document.querySelectorAll(sel);
67
if (msgs.length > 0) {
68
const text = msgs[msgs.length - 1].innerText.trim();
69
if (text.length > 10) return makeResult('claude', text);
70
}
71
}
72
73
// ── Gemini ─────────────────────────────────────────────────
74
const geminiMsgs = document.querySelectorAll('model-response, .response-container, .model-response-text');
75
if (geminiMsgs.length > 0) {
76
const text = geminiMsgs[geminiMsgs.length - 1].innerText.trim();
77
if (text.length > 10) return makeResult('gemini', text);
78
}
79
80
// 아직 응답 없음
81
return JSON.stringify({ source: 'unknown', text: '', completed: false });
82
})()
83
"
""
;
84
}
FamiliesAutoWriter.Services
Definition
PostWriterService.cs:7
FamiliesAutoWriter.Services.ResponseExtractor
Definition
ResponseExtractor.cs:12
FamiliesAutoWriter.Services.ResponseExtractor.BuildExtractScript
static string BuildExtractScript()
Definition
ResponseExtractor.cs:29
Services
ResponseExtractor.cs
다음에 의해 생성됨 :
1.17.0