타입 정의
Result
추출 결과로, 텍스트, 메타데이터 및 미디어 정보를 포함합니다.
go
type Result struct {
Text string `json:"text"`
Title string `json:"title"`
Images []ImageInfo `json:"images,omitempty"`
Links []LinkInfo `json:"links,omitempty"`
Videos []VideoInfo `json:"videos,omitempty"`
Audios []AudioInfo `json:"audios,omitempty"`
ProcessingTime time.Duration `json:"-"` // 처리 소요 시간 (표준 직렬화에서 제외)
WordCount int `json:"word_count"`
ReadingTime time.Duration `json:"-"` // 예상 읽기 시간 (표준 직렬화에서 제외)
}MarshalJSON
커스텀 JSON 직렬화. ProcessingTime과 ReadingTime은 json:"-" 태그가 있어 표준 직렬화에서는 건너뛰지만, 커스텀 MarshalJSON() 메서드를 통해 밀리초 단위로 출력에 포함됩니다.
go
func (r *Result) MarshalJSON() ([]byte, error)경고
Result는 UnmarshalJSON을 구현하지 않습니다. MarshalJSON()의 출력을 다시 Result로 역직렬화하면 ProcessingTime, ReadingTime 같은 duration 필드가 손실됩니다 — JSON 출력의 키 이름 (processing_time_ms, reading_time_ms) 이 struct 필드 이름과 일치하지 않아 복원할 수 없습니다.
이는 의도된 설계입니다. 이 JSON 형식은 외부 소비 (API 응답, 로그, 프론트엔드 표시 등) 를 위한 것이며, 양방향 직렬화를 위해 설계되지 않았습니다.
ImageInfo
이미지 정보입니다.
go
type ImageInfo struct {
URL string `json:"url"` // 이미지 주소
Alt string `json:"alt"` // 대체 텍스트
Title string `json:"title"` // 제목
Width string `json:"width"` // 너비
Height string `json:"height"` // 높이
IsDecorative bool `json:"is_decorative"` // 장식용 이미지 여부
Position int `json:"position"` // 문서 내 위치
}LinkInfo
링크 정보입니다.
go
type LinkInfo struct {
URL string `json:"url"` // 링크 주소
Text string `json:"text"` // 링크 텍스트
Title string `json:"title"` // 링크 제목
IsExternal bool `json:"is_external"` // 외부 링크 여부 (URL 자체가 절대 외부 URL 인지로 판정하며, BaseURL 과 비교하지 않음)
IsNoFollow bool `json:"is_nofollow"` // nofollow 여부
Position int `json:"position"` // 문서 내 위치
}VideoInfo
비디오 정보입니다.
go
type VideoInfo struct {
URL string `json:"url"` // 비디오 주소
Type string `json:"type"` // 비디오 유형
Poster string `json:"poster"` // 썸네일 주소
Width string `json:"width"` // 너비
Height string `json:"height"` // 높이
Duration string `json:"duration"` // 재생 시간
}AudioInfo
오디오 정보입니다.
go
type AudioInfo struct {
URL string `json:"url"` // 오디오 주소
Type string `json:"type"` // 오디오 유형
Duration string `json:"duration"` // 재생 시간
}LinkResource
링크 리소스 (링크 추출 API 에 사용).
go
type LinkResource struct {
URL string // 링크 주소
Title string // 링크 제목
Type string // 링크 유형
}Statistics
처리 통계 정보입니다.
go
type Statistics struct {
TotalProcessed int64 // 총 처리 수
CacheHits int64 // 캐시 적중 수
CacheMisses int64 // 캐시 미스 수
ErrorCount int64 // 오류 수
AverageProcessTime time.Duration // 평균 처리 시간
}BatchResult
배치 처리 결과입니다.
go
type BatchResult struct {
Results []*Result // 추출 결과, 실패 또는 취소 시 nil
Errors []error // 실패한 오류
Success int // 성공 수량
Failed int // 실패 수량
Cancelled int // 취소 수량
}NodeAttr
HTML 노드 속성입니다.
go
type NodeAttr struct {
Key string // 속성명
Value string // 속성값
}