getScenes.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package utils
  2. import (
  3. "encoding/json"
  4. "io"
  5. "net/http"
  6. "os"
  7. "os/exec"
  8. "path/filepath"
  9. "strings"
  10. "time"
  11. )
  12. var myClient = &http.Client{Timeout: 10 * time.Second}
  13. func GetJson(url string, target interface{}) error {
  14. r, err := myClient.Get(url)
  15. if err != nil {
  16. return err
  17. }
  18. defer r.Body.Close()
  19. return json.NewDecoder(r.Body).Decode(target)
  20. }
  21. func DownloadFile(path string, url string) (err error) {
  22. dir := filepath.Dir(path)
  23. err = os.MkdirAll(dir, 0644)
  24. if err != nil {
  25. return err
  26. }
  27. out, err := os.Create(path)
  28. if err != nil {
  29. return err
  30. }
  31. defer out.Close()
  32. // Get the data
  33. resp, err := http.Get(url)
  34. if err != nil {
  35. return err
  36. }
  37. defer resp.Body.Close()
  38. // Writer the body to file
  39. _, err = io.Copy(out, resp.Body)
  40. if err != nil {
  41. return err
  42. }
  43. return nil
  44. }
  45. func IsCommandAvailable(name string) bool {
  46. cmd := exec.Command("command", "-v", name)
  47. if err := cmd.Run(); err != nil {
  48. return false
  49. }
  50. return true
  51. }
  52. func DetectSource(path string, dest string) (url string) {
  53. saveP := strings.Split(path, "?")[0]
  54. if strings.Contains(saveP, "https://4dkk.4dage.com/720yun_fd_manage") {
  55. p := strings.ReplaceAll(saveP, "https://4dkk.4dage.com/720yun_fd_manage", "")
  56. url = dest + p
  57. }
  58. if strings.Contains(saveP, "https://4dkk.4dage.com/scene_edit_data") {
  59. p := strings.ReplaceAll(saveP, "https://4dkk.4dage.com", "")
  60. url = dest + p
  61. }
  62. return url
  63. }
  64. func EnsureDir(dirName string) error {
  65. err := os.MkdirAll(dirName, os.ModeDir)
  66. if err == nil || os.IsExist(err) {
  67. return nil
  68. } else {
  69. return err
  70. }
  71. }