Skip to content

Commit 606d7b1

Browse files
committed
minor improvements and flag parses
1 parent 3e69469 commit 606d7b1

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ To download and install this package run:
99

1010
*NOTE: if you need to grab as much info from a page as possible consider using [dyatlov/go-htmlinfo](https://github.com/dyatlov/go-htmlinfo)*
1111

12+
The package supports the whole set of OpenGraph properties from [The Open Graph protocol](https://ogp.me/).
13+
1214
## Command line tool
1315

1416
You can also use `opengraph` from CLI.
@@ -20,17 +22,17 @@ Example usages:
2022

2123
```bash
2224
# download and parse html page
23-
./opengraph https://www.youtube.com/watch?v=yhoI42bdwU4
25+
./opengraph https://www.youtube.com/watch\?v\=yhoI42bdwU4
2426
```
2527

2628
```bash
2729
# parse piped html
28-
curl https://www.youtube.com/watch?v=yhoI42bdwU4 | ./opengraph
30+
curl https://www.youtube.com/watch\?v\=yhoI42bdwU4 | ./opengraph
2931
```
3032

3133
```bash
3234
# get video image
33-
./opengraph https://www.youtube.com/watch?v=yhoI42bdwU4 | jq '.images[0].url'
35+
./opengraph https://www.youtube.com/watch\?v\=yhoI42bdwU4 | jq '.images[0].url'
3436
```
3537

3638
## Package Methods

cmd/opengraph/main.go

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,65 @@ package main
1616
import (
1717
"bufio"
1818
"encoding/json"
19+
"flag"
1920
"fmt"
2021
"io"
2122
"log"
2223
"net/http"
24+
_url "net/url"
2325
"os"
26+
"strings"
2427

2528
"github.com/dyatlov/go-opengraph/opengraph"
2629
)
2730

28-
func printHelp() {
29-
fmt.Printf("Usage: %s <url>\n", os.Args[0])
30-
os.Exit(0)
31-
}
31+
const appVersion = "1.0.1"
3232

3333
func main() {
34+
version := flag.Bool("v", false, "prints current opengraph version")
35+
url := flag.String("url", "", "fetch url and extract OpenGraph info from there")
36+
flag.Parse()
37+
38+
if *version {
39+
fmt.Println(appVersion)
40+
return
41+
}
42+
43+
// allow url to be provided without flag too, by default
44+
if *url == "" && flag.NArg() == 1 {
45+
*url = flag.Arg(0)
46+
}
47+
48+
if *url != "" {
49+
u, err := _url.ParseRequestURI(*url)
50+
if err != nil {
51+
log.Fatalf("Error parsing url: %s\n", err)
52+
} else if !strings.HasPrefix(u.Scheme, "http") {
53+
log.Fatal(u.Scheme)
54+
log.Fatalf("URL should have http(s) protocol: %s\n", *url)
55+
}
56+
}
57+
3458
var reader io.Reader
3559

36-
if len(os.Args) == 2 {
37-
url := os.Args[1]
38-
resp, err := http.Get(url)
60+
if *url != "" {
61+
resp, err := http.Get(*url)
3962
if err != nil {
40-
log.Fatalf("Error while fetching url %s: %s", url, err)
63+
log.Fatalf("Error while fetching url %s: %s", *url, err)
4164
}
4265

4366
reader = resp.Body
4467

4568
defer resp.Body.Close()
46-
} else if len(os.Args) == 1 {
69+
} else {
4770
fi, _ := os.Stdin.Stat()
4871
if (fi.Mode() & os.ModeCharDevice) == 0 {
4972
// pipe
5073
reader = bufio.NewReader(os.Stdin)
5174
} else {
52-
printHelp()
75+
flag.Usage()
76+
return
5377
}
54-
} else {
55-
printHelp()
5678
}
5779

5880
og := opengraph.NewOpenGraph()

cmd/opengraph/opengraph

35.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)