Skip to content

型定義

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 シリアライズ。ProcessingTimeReadingTimejson:"-" タグを持ちますが(標準シリアライズではスキップ)、カスタム MarshalJSON() メソッドによりミリ秒数として出力されます。

go
func (r *Result) MarshalJSON() ([]byte, error)

警告

ResultUnmarshalJSON実装していませんMarshalJSON()の出力を再度Resultにデシリアライズすると、ProcessingTimeReadingTimeなどの 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"`      // ドキュメント内の位置
}

フィールドの意味

フィールド説明
URL画像の src 属性値;有効な URL のみ(IsValidURL で検証)、無効な URL の <img> は結果に含まれません
Altalt 属性の原文;空の場合 IsDecorativetrue になります
Titletitle 属性の原文(ページタイトルではありません)
Width/HeightHTML 属性の元の文字列"640""50%" など)、数値には解析されていません——ページによって表記が異なる場合があります
IsDecorativeAlt が空の場合 true、装飾画像の識別とスキップに利用できます
Positionドキュメント内の 1 始まりの序数;PreserveImages = false の場合 Images スライス全体が空になります

Width/Height は数値型ではない

WidthHeightint ではなく string 型で、HTML ソースの元の表現(単位、パーセンテージなどを含む可能性)を保持します。数値が必要な場合は呼び出し側で解析してください。

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"`    // ドキュメント内の位置
}

フィールドの意味

フィールド説明
URLhref 属性値;有効な URL のみ(IsValidURL で検証)、無効な URL の <a> は Position を消費しますがスライスには追加されません
Text<a> タグ内の全テキストノードの結合(再帰的 GetTextContent
Titletitle 属性の原文(リンクテキストではありません)
IsExternalURL 自体が絶対外部アドレスかで判定し、BaseURL とのドメイン比較は行いません——これは ExtractAllLinks の内部/外部判定とは異なります
IsNoFollowrel 属性に nofollow が含まれる(大文字小文字を区別しない、ASCII フォールディングマッチ)場合 true
Positionドキュメント内の 1 始まりの序数;無効な <a>(href が不正または欠落)も序数を消費しますがスライスには追加されないため、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"` // 再生時間
}

Type フィールドの値の規則

Type 値意味生成されるシナリオ
"embed"iframe が参照する動画ページYouTube、Vimeo、優酷、Bilibili などの組み込みプレーヤー
MIME タイプ(例 "video/mp4"動画ファイルコンテナ<source type="video/mp4"> 属性値
空文字列タイプ未検出<video src="..."> で直接ソース指定かつ <source> 子要素がない場合

動画抽出の 3 つのソース

動画抽出は生 HTML スキャン → DOM 走査 → 正規表現フォールバックの 3 ステップで実行され、各ステップで重複排除されます。詳細は メディア抽出ガイド を参照してください。

AudioInfo

音声情報。

go
type AudioInfo struct {
    URL      string `json:"url"`      // 音声アドレス
    Type     string `json:"type"`     // 音声タイプ
    Duration string `json:"duration"` // 再生時間
}

Type フィールドの値の規則

Type 値生成されるシナリオ
MIME タイプ(例 "audio/mpeg"<source type="audio/mpeg"> 属性値
空文字列<audio src="..."> で直接ソース指定かつ <source> 子要素がない場合

.ogg 拡張子の二重性

OGG コンテナは動画または音声を格納できるため、.ogg URL は VideosAudios の両方に現れます。音声専用の派生拡張子 .ogaAudios のみに現れます。

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 // 属性値
}