main.go 2.7 KB

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