download.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package xnet
  2. import (
  3. "bytes"
  4. "fmt"
  5. "golang.org/x/text/encoding/simplifiedchinese"
  6. "os/exec"
  7. )
  8. // Wget 调用wget.exe下载,-t参数表示重试次数,-T参数表示超时等待时间,-w两次尝试之间间隔SECONDS秒,-O把文档写到FILE文件中
  9. func Wget(url, localPath string) (err error) {
  10. cmd := exec.Command("wget.exe", url, "-t", "3", "-T", "25", "-w", "3", "-O", localPath, "--no-check-certificate")
  11. var stdout bytes.Buffer
  12. var stderr bytes.Buffer
  13. cmd.Stdout = &stdout
  14. cmd.Stderr = &stderr
  15. err = cmd.Run()
  16. if err != nil {
  17. fmt.Println(fmt.Sprint(err) + ": " + ConvertByte2String([]byte(stderr.String()), GB18030))
  18. return err
  19. }
  20. fmt.Println("Result: " + stdout.String())
  21. return
  22. }
  23. type Charset string
  24. const (
  25. UTF8 = Charset("UTF-8")
  26. GB18030 = Charset("GB18030")
  27. )
  28. // ConvertByte2String cmd输出内容转中文
  29. func ConvertByte2String(byte []byte, charset Charset) string {
  30. var str string
  31. switch charset {
  32. case GB18030:
  33. decodeBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
  34. str = string(decodeBytes)
  35. case UTF8:
  36. fallthrough
  37. default:
  38. str = string(byte)
  39. }
  40. return str
  41. }