package main import ( "encoding/json" "fmt" "log" "os" "strconv" "time" "github.com/x0xO/hhttp" ) func WriteFile(m chan string) { f, err := os.OpenFile("text.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Println(err) } defer f.Close() for text := range m { if _, err := f.WriteString(text + "\n"); err != nil { log.Println(err) } } } func MakeRequest(gid int) (resp string) { u := "https://api.csgorun.pro/games/" + strconv.Itoa(gid) opt := hhttp.NewOptions().Retry(10, 5*time.Second) opt.Timeout(5 * time.Second) opt.DNS("1.1.1.1:53") opt.KeepAlive(false) r, err := hhttp.NewClient().SetOptions(opt).Get(u).Do() if err != nil { log.Fatal(err) } fmt.Println(r.Attempts) return r.Body.String() } func Unparse(resp string) (stroka string, err error) { type Get struct { Data struct { Crash float32 `json:"crash"` Id int `json:"id"` Bets []struct { Deposit struct { Amount float32 `json:"amount"` Items []interface{} `json:"items"` } `json:"deposit"` } `json:"bets"` } `json:"data"` } var dat Get if err := json.Unmarshal([]byte(resp), &dat); err != nil { return "", err } var summ float32 summ = 0 for _, s := range dat.Data.Bets { //fmt.Println(s.Deposit.Amount) summ = summ + s.Deposit.Amount } allitems := 0 for _, s := range dat.Data.Bets { //fmt.Println(s.Deposit.Amount) allitems = allitems + len(s.Deposit.Items) } //fmt.Println(dat.Data.Id) //fmt.Println(len(dat.Data.Bets)) //kolvo igrokov //fmt.Println(allitems) //fmt.Println(summ) //summa babla //fmt.Println(dat.Data.Crash) //fmt.Println("\n\n\n") stroka = fmt.Sprint(dat.Data.Id, ";", len(dat.Data.Bets), ";", allitems, ";", summ, ";", dat.Data.Crash) fmt.Println(stroka) return stroka, nil } func main() { gid := 2094536 count := 0 m := make(chan string) go WriteFile(m) for { if gid >= 2109995 { break } resp := MakeRequest(gid) fmt.Println(count) text, err := Unparse(resp) count++ gid++ if err != nil { continue } m <- text } }