-
Notifications
You must be signed in to change notification settings - Fork 1
/
gophersauce.go
78 lines (78 loc) · 2.48 KB
/
gophersauce.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Package gophersauce is an API wrapper for the SauceNAO.com reverse image search engine.
//
// Initializing a client (without additional options):
// client, err := gophersauce.NewClient(nil)
// if err != nil {
// log.Fatal(err)
// }
//
// Initializing a client with options:
// client, err := gophersauce.NewClient(&gophersauce.Settings{
// APIUrl: "https://custom_server/search.php"
// APIKey: "your API key",
// MaxResults: 4
// })
// if err != nil {
// log.Fatal(err)
// }
//
// Any of the options can be omitted. By default, MaxResults will be 6 and APIKey will be
// an empty string.
//
// You can also change these properties after instantiating the client:
// client.SetAPIUrl("https://custom_server/search.php")
// client.SetAPIKey("your API key")
// client.SetMaxResults(12)
//
// There are three ways in which you can consume the SauceNAO API: URL, file, and reader.
//
// Reverse searching an image using a URL:
// response, err := client.FromURL("https://i.imgur.com/v6EiHyj.png")
// if err != nil {
// log.Fatal(err)
// }
//
// Reverse searching an image using a file path:
// response, err := client.FromFile("path/to/file.png")
// if err != nil {
// log.Fatal(err)
// }
//
// Reverse searching an image using a reader:
// f, _ := os.Open("path/to/file")
// response, err := client.FromReader(f)
// if err != nil {
// log.Fatal(err)
// }
//
// API responses have helpful methods, such as First() which will return the first
// result (which is likely the one that is the most similar to your image), if any:
// response, _ := client.FromURL("https://i.imgur.com/v6EiHyj.png")
// first := response.First()
// fmt.Println("First result (external URLs):", first.Data.ExternalURLs)
//
// Some of the response fields are, by default, declared as interfaces because of the
// way the SauceNAO API works. You will have to either check for the type of the field
// yourself and parse it that way, or use a helper function, such as GetUserID(),
// GetAccountType() (on type SaucenaoResponse) or GetCreatorString() (on type SearchResult).
//
// Example:
//
// This will not work:
// response, _ := client.FromURL("https://i.imgur.com/v6EiHyj.png")
// if response.Header.UserID == 0 {
// fmt.Println("You're not logged in!")
// }
//
// This will work:
// response, _ := client.FromURL("https://i.imgur.com/v6EiHyj.png")
//
// userID, err := response.GetUserID()
// if err != nil {
// log.Fatal(err)
// }
//
// if userID == 0 {
// fmt.Println("You're not logged in!")
// }
package gophersauce