![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
github.com/dyatlov/go-opengraph
Parses given html data into Facebook OpenGraph structure.
To download and install this package run:
go get github.com/dyatlov/go-opengraph/opengraph
NOTE: if you need to grab as much info from a page as possible consider using dyatlov/go-htmlinfo
The package supports the whole set of OpenGraph properties from The Open Graph protocol.
You can also use opengraph
from CLI.
You can download latest version of opengraph
for your OS from Releases.
You can query website endpoints using the tool directly or use it with other tools for your own workflows.
Example usages:
# download and parse html page
./opengraph https://www.youtube.com/watch\?v\=yhoI42bdwU4
# parse piped html
curl https://www.youtube.com/watch\?v\=yhoI42bdwU4 | ./opengraph
# get video image
./opengraph https://www.youtube.com/watch\?v\=yhoI42bdwU4 | jq '.images[0].url'
NewOpenGraph()
- create a new OpenGraph instanceProcessHTML(buffer io.Reader) error
- process given html into underlying data structureProcessMeta(metaAttrs map[string]string)
- add data to the structure based on meta attributesToJSON() (string, error)
- return JSON representation of data or errorString() string
- return JSON representation of structureSource docs: http://godoc.org/github.com/dyatlov/go-opengraph/opengraph
If you just need to parse an OpenGraph data from HTML then method ProcessHTML
is your needed one.
Example:
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)
}
If you have your own parsing engine and just need an intelligent OpenGraph parsing, then ProcessMeta
is the method you need.
While using this method you don't need to reparse your parsed html again, just feed it with meta atributes as they appear and OpenGraph will be built based on the data.
Example:
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)
}
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.