status-go/vendor/github.com/keighl/metabolize/README.md

83 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# Metabolize
[![Build Status](https://travis-ci.org/keighl/metabolize.png?branch=master)](https://travis-ci.org/keighl/metabolize) [![Coverage Status](https://coveralls.io/repos/keighl/metabolize/badge.svg)](https://coveralls.io/r/keighl/metabolize)
Decodes HTML <meta> values into a Golang struct. Great for quickly grabbing [open graph](http://ogp.me/) data.
### Installation
go get -u github.com/keighl/metabolize
### Usage
Use `meta:"xxx"` tags on your struct to tell metabolize how to decode metadata from an HTML document.
```go
type MetaData struct {
Title string `meta:"og:title"`
// If no `og:description`, will fall back to `description`
Description string `meta:"og:description,description"`
}
```
Example
```go
package main
import (
"fmt"
m "github.com/keighl/metabolize"
"net/http"
"net/url"
)
type MetaData struct {
Title string `meta:"og:title"`
Description string `meta:"og:description,description"`
Type string `meta:"og:type"`
URL url.URL `meta:"og:url"`
VideoWidth int64 `meta:"og:video:width"`
VideoHeight int64 `meta:"og:video:height"`
}
func main() {
res, _ := http.Get("https://www.youtube.com/watch?v=FzRH3iTQPrk")
data := new(MetaData)
err := m.Metabolize(res.Body, data)
if err != nil {
panic(err)
}
fmt.Printf("Title: %s\n", data.Title)
fmt.Printf("Description: %s\n", data.Description)
fmt.Printf("Type: %s\n", data.Type)
fmt.Printf("URL: %s\n", data.URL.String())
fmt.Printf("VideoWidth: %d\n", data.VideoWidth)
fmt.Printf("VideoHeight: %d\n", data.VideoHeight)
}
```
Outputs:
```
Title: The Sneezing Baby Panda
Description: A Baby Panda Sneezing Original footage taken and being used with kind permission of LJM Productions Pty. Ltd.,/Wild Candy Pty. Ltd. Authentic t-shirts http:/...
Type: video
URL: http://www.youtube.com/watch?v=FzRH3iTQPrk
VideoWidth: 480
VideoHeight: 360
```
### Supported types
* `string`
* `bool`
* `float64`
* `int64`
* `time.Time`
* `url.URL`