From 2f15edf548ec131d2eb97bd5338a1adef768acea Mon Sep 17 00:00:00 2001 From: Andinus Date: Wed, 18 Mar 2020 18:00:10 +0530 Subject: Restructure for Cetus v0.5 This version aims for a cleaner code, better documentation & to adopt better practices. --- cmd/cetus-wallhaven/cetus-wallhaven.go | 152 --------------------------------- 1 file changed, 152 deletions(-) delete mode 100644 cmd/cetus-wallhaven/cetus-wallhaven.go (limited to 'cmd/cetus-wallhaven/cetus-wallhaven.go') diff --git a/cmd/cetus-wallhaven/cetus-wallhaven.go b/cmd/cetus-wallhaven/cetus-wallhaven.go deleted file mode 100644 index 8c6c928..0000000 --- a/cmd/cetus-wallhaven/cetus-wallhaven.go +++ /dev/null @@ -1,152 +0,0 @@ -package main - -import ( - "encoding/json" - "flag" - "fmt" - "math/rand" - "time" - - "framagit.org/andinus/cetus/pkg/background" - "framagit.org/andinus/cetus/pkg/cetus" - "framagit.org/andinus/cetus/pkg/wallhaven" -) - -type wh struct { - Photos []photo `json:"data"` - // MetaI []meta `json:"meta"` -} - -// type meta struct { -// CurrentPage int `json:"current_page"` -// LastPage int `json:"last_page"` -// PerPage int `json:"per_page"` -// Total int `json:"total"` -// Query string `json:"query"` -// Seed string `json:"seed"` -// } - -type photo struct { - Id string `json:"id"` - Url string `json:"url"` - ShortUrl string `json:"short_url"` - Views int `json:"views"` - Favorites int `json:"favorites"` - Source string `json:"source"` - Purity string `json:"purity"` - Category string `json:"category"` - DimensionX int `json:"dimension_x"` - DimensionY int `json:"dimension_y"` - Resolution string `json:"resolution"` - Ratio string `json:"ratio"` - FileSize int `json:"file_size"` - FileType string `json:"file_type"` - CreatedAt string `json:"created_at"` - Path string `json:"path"` - Colors []string `json:"colors"` - // Thumbs []thumb `json:"thumbs"` -} - -// type thumb struct { -// Small string `json:"small"` -// Original string `json:"original"` -// Large string `json:"large"` -// } - -var ( - t time.Duration - api string - apiKey string - dump bool - quiet bool - random bool - version bool - pathOnly bool - fetchOnly bool -) - -func main() { - parseFlags() - - if version { - cetus.Version() - return - } - rand.Seed(time.Now().Unix()) - - // Convert timeout to seconds - t = t * time.Second - - body, err := whBody() - if dump { - fmt.Println(body) - return - } - - wh := wh{} - err = json.Unmarshal([]byte(body), &wh) - cetus.ErrChk("body unmarshal failed", err) - - // if random was set then wh holds list of multiple responses, - // choose a random response from the list - i := rand.Intn(len(wh.Photos)) - whPhoto := wh.Photos[i] - - printDetails(whPhoto) - - // if fetchOnly is true then don't set background - if fetchOnly { - return - } - - err = background.Set(whPhoto.Path) - cetus.ErrChk("setting background failed", err) -} - -func parseFlags() { - flag.BoolVar(&quiet, "quiet", false, "No output") - flag.BoolVar(&version, "version", false, "Cetus version") - flag.BoolVar(&fetchOnly, "fetch-only", false, "Don't set background, only fetch info") - flag.BoolVar(&dump, "dump", false, "Only dump received response") - flag.BoolVar(&random, "random", true, "Choose a random image") - flag.BoolVar(&pathOnly, "path-only", false, "Print only path of the image") - - flag.StringVar(&api, "api", "https://wallhaven.cc/api/v1/search", "Wallhaven Search API URL") - flag.StringVar(&apiKey, "api-key", "", "Wallhaven API Key") - - flag.DurationVar(&t, "timeout", 32*time.Second, "Timeout for http client in seconds") - flag.Parse() - -} - -func printDetails(whPhoto photo) { - if quiet { - return - } - if pathOnly { - cetus.PrintPath(whPhoto.Path) - return - } - fmt.Printf("Id: %s\n", whPhoto.Id) - fmt.Printf("URL: %s\n", whPhoto.Url) - fmt.Printf("Short URL: %s\n", whPhoto.ShortUrl) - fmt.Printf("Source: %s\n", whPhoto.Source) - fmt.Printf("Date: %s\n\n", whPhoto.CreatedAt) - fmt.Printf("Resolution: %s\n", whPhoto.Resolution) - fmt.Printf("Ratio: %s\n", whPhoto.Ratio) - fmt.Printf("Views: %d\n", whPhoto.Views) - fmt.Printf("Favorites: %d\n", whPhoto.Favorites) - fmt.Printf("File Size: %d KiB\n", whPhoto.FileSize/1024) - fmt.Printf("Category: %s\n", whPhoto.Category) -} - -func whBody() (string, error) { - reqInfo := make(map[string]string) - reqInfo["api"] = api - if random { - reqInfo["random"] = "true" - } - - body, err := wallhaven.GetWhJson(reqInfo, t) - return body, err -} -- cgit 1.4.1-2-gfad0