#4257 Added functionality to create previews for post links using open graph data from those links. (#4890)
Этот коммит содержится в:
коммит произвёл
enahum
родитель
fefe4b70d9
Коммит
3aaf71fdea
58
vendor/github.com/dyatlov/go-opengraph/examples/advanced.go
сгенерированный
поставляемый
Обычный файл
58
vendor/github.com/dyatlov/go-opengraph/examples/advanced.go
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/dyatlov/go-opengraph/opengraph"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
|
||||
func main() {
|
||||
h := `<html><head><meta property="og:type" content="article" />
|
||||
<meta property="og:title" content="WordPress 4.3 "Billie"" />
|
||||
<meta property="og:url" content="https://wordpress.org/news/2015/08/billie/" /></head><body></body></html>`
|
||||
|
||||
og := opengraph.NewOpenGraph()
|
||||
|
||||
doc, err := html.Parse(strings.NewReader(h))
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
var parseHead func(*html.Node)
|
||||
parseHead = func(n *html.Node) {
|
||||
for c := n.FirstChild; c != nil; c = c.NextSibling {
|
||||
if c.Type == html.ElementNode && c.Data == "meta" {
|
||||
m := make(map[string]string)
|
||||
for _, a := range c.Attr {
|
||||
m[a.Key] = a.Val
|
||||
}
|
||||
|
||||
og.ProcessMeta(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var f func(*html.Node)
|
||||
f = func(n *html.Node) {
|
||||
for c := n.FirstChild; c != nil; c = c.NextSibling {
|
||||
if c.Type == html.ElementNode {
|
||||
if c.Data == "head" {
|
||||
parseHead(c)
|
||||
continue
|
||||
} else if c.Data == "body" { // OpenGraph is only in head, so we don't need body
|
||||
break
|
||||
}
|
||||
}
|
||||
f(c)
|
||||
}
|
||||
}
|
||||
f(doc)
|
||||
|
||||
fmt.Printf("Type: %s\n", og.Type)
|
||||
fmt.Printf("Title: %s\n", og.Title)
|
||||
fmt.Printf("URL: %s\n", og.URL)
|
||||
fmt.Printf("String/JSON Representation: %s\n", og)
|
||||
}
|
||||
27
vendor/github.com/dyatlov/go-opengraph/examples/simple.go
сгенерированный
поставляемый
Обычный файл
27
vendor/github.com/dyatlov/go-opengraph/examples/simple.go
сгенерированный
поставляемый
Обычный файл
@@ -0,0 +1,27 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/dyatlov/go-opengraph/opengraph"
|
||||
)
|
||||
|
||||
func main() {
|
||||
html := `<html><head><meta property="og:type" content="article" />
|
||||
<meta property="og:title" content="WordPress 4.3 "Billie"" />
|
||||
<meta property="og:url" content="https://wordpress.org/news/2015/08/billie/" /></head><body></body></html>`
|
||||
|
||||
og := opengraph.NewOpenGraph()
|
||||
err := og.ProcessHTML(strings.NewReader(html))
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Type: %s\n", og.Type)
|
||||
fmt.Printf("Title: %s\n", og.Title)
|
||||
fmt.Printf("URL: %s\n", og.URL)
|
||||
fmt.Printf("String/JSON Representation: %s\n", og)
|
||||
}
|
||||
Ссылка в новой задаче
Block a user