ref: 000e39a3d72e53cf9aab268d78b42f22a15b9388
parent: 71cfdcaf93e20347c5efd641daf1227ce31f27b0
author: Halfwit <michaelmisch1985@gmail.com>
date: Mon Jun 3 10:03:04 PDT 2019
Narrow fields in response to speed up results
--- a/gcli.go
+++ b/gcli.go
@@ -30,7 +30,7 @@
type image struct {
ThumbnailLink string
}
-
+
var (
nmax = flag.Int("m", 50, "Number of results per query")
related = flag.String("r", "", "Search for sites related to [url]")
@@ -46,6 +46,9 @@
safe = flag.String("s", "off", "Safe search [active|high|medium|off]")
snippet = flag.Bool("sn", false, "Include short description in results")
thumb = flag.Bool("t", false, "Include thumbnails")
+
+ base = "https://www.googleapis.com/customsearch/v1?maxResults=10"
+ fields = "items/title,items/link,items/snippet"
)
func keys() (string, string, error) {
@@ -66,7 +69,7 @@
func search(url string, re *results) error {
client := &http.Client{
- Timeout: 10 * time.Second,
+ Timeout: 15 * time.Second,
}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
@@ -90,10 +93,9 @@
var opts strings.Builder
query := strings.Join(flag.Args(), "+")
- url := fmt.Sprintf("https://www.googleapis.com/customsearch/v1?key=%s&start=%d&maxResults=10&cx=%s&q=%s", key, start, cx, query)
-
switch {
case *isearch:
+ fields="items/title,items/link,items/snippet,items/image/thumbnailLink"
opts.WriteString("&searchType=image")
case *itype != "":
if *isearch {
@@ -126,6 +128,7 @@
opts.WriteString("&fileType=")
opts.WriteString(*ftype)
}
+ url := fmt.Sprintf("%s&key=%s&start=%d&cx=%s&q=%s&fields=%s", base, key, start, cx, query, fields)
return url+opts.String()
}