main.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package main
  2. import (
  3. _ "ARKItems/configs"
  4. configs "ARKItems/configs"
  5. "ARKItems/router"
  6. "ARKItems/util"
  7. "encoding/json"
  8. "fmt"
  9. "github.com/gin-gonic/gin"
  10. "io/ioutil"
  11. "os"
  12. "os/exec"
  13. "strconv"
  14. "strings"
  15. "time"
  16. )
  17. func main() {
  18. //加载配置文件
  19. router.ARKConfig = util.LoadArkShopConfig("resources/config.json")
  20. engine := gin.Default()
  21. router.LoadRouter(engine)
  22. engine.StaticFS("/static", gin.Dir("file", true))
  23. engine.Run(configs.Server.Host + ":" + configs.Server.Port)
  24. }
  25. func Test() {
  26. //读取内容
  27. readFile, err := ioutil.ReadFile("arkids.json")
  28. if err != nil {
  29. panic(err)
  30. }
  31. arr := make([]util.ArkItemID, 0)
  32. json.Unmarshal(readFile, &arr)
  33. m := make(map[int]int)
  34. for i := range arr {
  35. _, ok := m[arr[i].Page]
  36. if ok {
  37. m[arr[i].Page] += 1
  38. } else {
  39. m[arr[i].Page] = 1
  40. }
  41. }
  42. for i := range m {
  43. fmt.Println("page:", i, " size:", m[i])
  44. }
  45. }
  46. func GetArkIds() {
  47. for i := 0; i < 42; i++ {
  48. var err error
  49. var sign = true
  50. for sign || err != nil {
  51. sign = false
  52. if i == 0 {
  53. err = util.GetArkIds(util.BaseHost, i+1)
  54. } else {
  55. err = util.GetArkIds(util.BaseHost+"/page/"+strconv.FormatInt(int64(i+1), 10), i+1)
  56. }
  57. }
  58. }
  59. file, err := os.OpenFile("arkids.json", os.O_CREATE|os.O_WRONLY, 0666)
  60. if err != nil {
  61. panic(err)
  62. }
  63. defer file.Close()
  64. marshal, err := json.Marshal(util.ArkItemIDs)
  65. if err != nil {
  66. panic(err)
  67. }
  68. file.Write(marshal)
  69. }
  70. var sign = make(chan int)
  71. // BatchDownloadImage 批量下载网络图片
  72. func BatchDownloadImage() {
  73. //读取内容
  74. readFile, err := ioutil.ReadFile("arkids.json")
  75. if err != nil {
  76. panic(err)
  77. }
  78. arr := make([]util.ArkItemID, 0)
  79. json.Unmarshal(readFile, &arr)
  80. for i := range arr {
  81. var item = arr[i]
  82. index := strings.LastIndex(item.ImageURL, "/")
  83. name := item.ImageURL[index+1:]
  84. url := "https://arkids.net" + item.ImageURL
  85. go DownloadImage(url, name)
  86. }
  87. for {
  88. time.Sleep(time.Millisecond * 10)
  89. num := <-sign
  90. if num == len(arr) {
  91. fmt.Println("所有图片下载指令执行完成")
  92. time.Sleep(time.Second * 5)
  93. break
  94. }
  95. }
  96. }
  97. func DownloadImage(url, name string) {
  98. file, err2 := os.OpenFile("file/"+name, os.O_RDONLY, 0666)
  99. if err2 == nil {
  100. file.Close()
  101. //判断文件大小
  102. bytes := make([]byte, 0)
  103. file.Read(bytes)
  104. if len(bytes) == 170 {
  105. fmt.Println("失败的图片:", name, "下载失败")
  106. } else {
  107. num := <-sign
  108. sign <- num + 1
  109. return
  110. }
  111. }
  112. fmt.Println("调用指令", "curl", " -x", " http://127.0.0.1:7890/", " -o", " file/"+name, " ", url)
  113. //调用指令
  114. cmd := exec.Command("curl", "-x", "http://127.0.0.1:7890/", "-o", "file/"+name, url)
  115. // 执行命令
  116. err := cmd.Run()
  117. if err != nil {
  118. fmt.Printf("Error executing curl command: %v\n", err)
  119. return
  120. }
  121. fmt.Println("文件", name, "下载完成")
  122. num := <-sign
  123. sign <- num + 1
  124. }