Documentation
¶
Overview ¶
Package header provides tools for extracting metadata from web pages.
Index ¶
- func ApplyEdit(r io.Reader, opts EditOptions) (*html.Node, error)
- func FindNodes(n *html.Node, tag string, match func(*html.Node) bool) []*html.Node
- func GetOrCreateHead(doc *html.Node) *html.Node
- func RegisterExtractor(e Extractor)
- func RemoveNodes(nodes []*html.Node)
- func SetContent(n *html.Node, text string)
- type AlternateLink
- type EditOptions
- type Extractor
- type FeedLink
- type FetchOptions
- type GroupedProperty
- type Icon
- type KnownMetaTracker
- type PageInfo
- type Processor
- type UnknownMeta
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApplyEdit ¶
ApplyEdit parses an HTML document from the reader, applies the edit options, and returns the modified document.
func GetOrCreateHead ¶
GetOrCreateHead finds the <head> element or creates it if it doesn't exist.
func RegisterExtractor ¶
func RegisterExtractor(e Extractor)
RegisterExtractor adds an extractor to the list of extractors used when fetching a URL.
func RemoveNodes ¶
RemoveNodes removes the specified nodes from their parents.
func SetContent ¶
SetContent removes all children of a node and appends a single text node.
Types ¶
type AlternateLink ¶
AlternateLink represents a parsed alternate link.
type EditOptions ¶
type EditOptions struct {
CommandType string // "head" or "meta"
MetaName string
SetVal *string
AddVal *string
ReplaceVal *string
ReplaceIndex int
}
EditOptions configures the edit operation.
type FeedLink ¶
type FeedLink struct {
URL string `json:",omitempty"`
Title string `json:",omitempty"`
Type string `json:",omitempty"`
}
FeedLink represents a parsed RSS, Atom or JSON feed link.
type FetchOptions ¶
type FetchOptions struct {
UserAgent string
TraceRedirects bool
FollowMetaRefresh bool
UpdateReferer bool
StoreCookies bool
RedirectLimit int
RedirectDelay time.Duration
Timeout time.Duration
MaxBodySize int64
Httpretty bool
}
FetchOptions contains configuration for fetching a URL.
type GroupedProperty ¶
GroupedProperty represents a dynamically grouped metadata field for output.
type KnownMetaTracker ¶
type KnownMetaTracker struct {
RawTags []UnknownMeta
KnownKeys map[string]bool
// contains filtered or unexported fields
}
KnownMetaTracker tracks all seen and known metadata tags during processing.
func (*KnownMetaTracker) AddRaw ¶
func (t *KnownMetaTracker) AddRaw(key, value string)
AddRaw adds a raw metadata tag that has been seen.
func (*KnownMetaTracker) MarkKnown ¶
func (t *KnownMetaTracker) MarkKnown(key string)
MarkKnown registers a tag key as explicitly handled by a processor.
func (*KnownMetaTracker) ProcessUnknown ¶
func (t *KnownMetaTracker) ProcessUnknown(excludedKeys []string) []UnknownMeta
ProcessUnknown returns a list of tags that are raw but have not been marked known.
type PageInfo ¶
type PageInfo struct {
// Tracker for unknown metadata
KnownMetaTracker KnownMetaTracker `json:"-"`
// General Information
URL string `json:",omitempty"`
Trace []string `json:",omitempty"`
MetaRefresh string `json:",omitempty"`
Title string `json:",omitempty"`
Keywords string `json:",omitempty"`
// OpenGraph
OGTitle string `json:",omitempty"`
OGType string `json:",omitempty"`
OGImage string `json:",omitempty"`
OGImageSecureURL string `json:",omitempty"`
OGImageType string `json:",omitempty"`
OGImageWidth string `json:",omitempty"`
OGImageHeight string `json:",omitempty"`
OGDescription string `json:",omitempty"`
OGImageAlt string `json:",omitempty"`
OGVideo string `json:",omitempty"`
OGVideoSecureURL string `json:",omitempty"`
OGVideoType string `json:",omitempty"`
OGVideoWidth string `json:",omitempty"`
OGVideoHeight string `json:",omitempty"`
OGVideoAlt string `json:",omitempty"`
// Twitter
TwitterCard string `json:",omitempty"`
TwitterImage string `json:",omitempty"`
TwitterTitle string `json:",omitempty"`
TwitterDescription string `json:",omitempty"`
TwitterImageAlt string `json:",omitempty"`
TwitterPlayer string `json:",omitempty"`
TwitterPlayerWidth string `json:",omitempty"`
TwitterPlayerHeight string `json:",omitempty"`
// YouTube Specific
YouTubeVideoID string `json:",omitempty"`
YouTubeLengthSeconds int `json:",omitempty"`
YouTubeDuration time.Duration `json:",omitempty"`
// App Links
AppLinksIOSName string `json:",omitempty"`
AppLinksIOSAppStoreID string `json:",omitempty"`
AppLinksIOSURL string `json:",omitempty"`
AppLinksAndroidName string `json:",omitempty"`
AppLinksAndroidPackage string `json:",omitempty"`
AppLinksAndroidURL string `json:",omitempty"`
// Instagram Specific
InstagramOwnerUserID string `json:",omitempty"`
// HTML Application
ApplicationTitle string `json:",omitempty"`
ThemeColor string `json:",omitempty"`
// JSON-LD (First found entity or merged data)
JSONLDType string `json:",omitempty"`
JSONLDID string `json:",omitempty"`
JSONLDName string `json:",omitempty"`
JSONLDDescription string `json:",omitempty"`
JSONLDUploadDate string `json:",omitempty"`
JSONLDUploadDateParsed time.Time `json:",omitempty"`
JSONLDDuration string `json:",omitempty"`
JSONLDDurationTime time.Duration `json:",omitempty"`
JSONLDThumbnailURL string `json:",omitempty"`
JSONLDAuthor string `json:",omitempty"`
JSONLDPublisher string `json:",omitempty"`
// HTML Links
CanonicalLink string `json:",omitempty"`
ShortLink string `json:",omitempty"`
AlternateLinks []AlternateLink `json:",omitempty"`
FeedLinks []FeedLink `json:",omitempty"`
Icons []Icon `json:",omitempty"`
// Unknown Metadata
UnknownMeta []UnknownMeta `json:",omitempty"`
// contains filtered or unexported fields
}
PageInfo represents the extracted information from a URL.
func FetchURL ¶
func FetchURL(urlStr string, opts FetchOptions) (*PageInfo, error)
FetchURL retrieves a URL and extracts metadata from it.
func (*PageInfo) CoverImages ¶
CoverImages returns a list of potential image URLs.
func (*PageInfo) GroupedProperties ¶
func (p *PageInfo) GroupedProperties() []GroupedProperty
GroupedProperties returns fields grouped by value and sorted by number of grouped sources.
type Processor ¶
type Processor interface {
// ProcessToken processes a single HTML token. It returns true if the processor
// has finished and no longer needs to receive tokens.
ProcessToken(t html.Token) (stop bool)
}
Processor receives a stream of HTML tokens and extracts metadata into PageInfo.
type UnknownMeta ¶
UnknownMeta represents metadata that was found but not extracted into specific fields.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
header
command
|
|
|
Package diagnostic provides rules to check for missing metadata.
|
Package diagnostic provides rules to check for missing metadata. |
|
internal
|
|
|
cli
Package cli provides the command line interface subcommands.
|
Package cli provides the command line interface subcommands. |
|
cli/cards
Package cards provides generators for social media summary cards.
|
Package cards provides generators for social media summary cards. |
|
ui
Package ui provides image display utilities.
|
Package ui provides image display utilities. |
|
Package lint provides a framework for analyzing extracted HTML metadata.
|
Package lint provides a framework for analyzing extracted HTML metadata. |
|
lists
Package lists provides a registry for grouped collections of lint rules.
|
Package lists provides a registry for grouped collections of lint rules. |
|
lists/all
Package all provides a list containing all available lint rules.
|
Package all provides a list containing all available lint rules. |
|
lists/diagnose
Package diagnose provides a list of rules for diagnosing issues.
|
Package diagnose provides a list of rules for diagnosing issues. |
|
lists/recommended
Package recommended provides the default recommended rule list.
|
Package recommended provides the default recommended rule list. |
|
lists/verify
Package verify provides a list of rules for verifying metadata.
|
Package verify provides a list of rules for verifying metadata. |
|
rules/cloudflare
Package cloudflare provides lint rules to detect Cloudflare blocking.
|
Package cloudflare provides lint rules to detect Cloudflare blocking. |
|
rules/consistency
Package consistency provides rules checking metadata consistency.
|
Package consistency provides rules checking metadata consistency. |
|
rules/cors
Package cors provides lint rules for Cross-Origin Resource Sharing.
|
Package cors provides lint rules for Cross-Origin Resource Sharing. |
|
rules/facebook
Package facebook contains lint rules for Facebook specific tags.
|
Package facebook contains lint rules for Facebook specific tags. |
|
rules/html
Package html contains lint rules for standard HTML metadata.
|
Package html contains lint rules for standard HTML metadata. |
|
rules/images
Package images provides lint rules for validating referenced images.
|
Package images provides lint rules for validating referenced images. |
|
rules/opengraph
Package opengraph contains lint rules for OpenGraph tags.
|
Package opengraph contains lint rules for OpenGraph tags. |
|
rules/twitter
Package twitter contains lint rules for Twitter Card metadata.
|
Package twitter contains lint rules for Twitter Card metadata. |
|
rules/urls
Package urls provides lint rules for validating URLs referenced in metadata.
|
Package urls provides lint rules for validating URLs referenced in metadata. |
|
Package templates contains HTML templates for output rendering.
|
Package templates contains HTML templates for output rendering. |
