hlfw.ca

gcli

Download patch

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()
 }