Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

96 rindas
2.0KB

  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "os"
  6. "strings"
  7. filetype "gopkg.in/h2non/filetype.v1"
  8. )
  9. func getFileSize(s string) (size int64, err error) {
  10. f, err := os.Open(s)
  11. if err != nil {
  12. size = 0
  13. return
  14. }
  15. fi, err := f.Stat()
  16. if err == nil {
  17. size = fi.Size()
  18. } else {
  19. size = 0
  20. }
  21. return
  22. }
  23. // not able to detect audio/amr and requries linux local dependency, not good
  24. // func getFileMime(s string) (mimetype string, err error) {
  25. // if err := magicmime.Open(magicmime.MAGIC_MIME_TYPE | magicmime.MAGIC_SYMLINK | magicmime.MAGIC_ERROR); err != nil {
  26. // log.Fatal(err)
  27. // return "", err
  28. // }
  29. // defer magicmime.Close()
  30. // mimetype, err = magicmime.TypeByFile(s)
  31. // if err != nil {
  32. // log.Fatalf("error occured during type lookup: %v", err)
  33. // }
  34. // //log.Printf("mime-type: %v", mimetype)
  35. // return
  36. // }
  37. func getFileMime(s string) (mimetype string, ext string, err error) {
  38. buf, _ := ioutil.ReadFile(s)
  39. kind, unkwown := filetype.Match(buf)
  40. if unkwown != nil {
  41. fmt.Printf("Unkwown: %s", unkwown)
  42. return
  43. }
  44. mimetype = kind.MIME.Value
  45. ext = kind.Extension
  46. //fmt.Printf("File type: %s. MIME: %s\n", kind.Extension, kind.MIME.Value)
  47. return
  48. }
  49. func isMP3(path string) bool {
  50. mime, ext, err := getFileMime(path)
  51. if err != nil {
  52. return false
  53. }
  54. check1 := strings.EqualFold("mp3", ext)
  55. check2 := strings.EqualFold("audio/mpeg", mime)
  56. return check1 && check2
  57. }
  58. func isAmr(path string) bool {
  59. mime, ext, err := getFileMime(path)
  60. if err != nil {
  61. return false
  62. }
  63. check1 := strings.EqualFold("amr", ext)
  64. check2 := strings.EqualFold("audio/amr", mime)
  65. return check1 && check2
  66. }
  67. func isMP4(path string) bool {
  68. mime, ext, err := getFileMime(path)
  69. if err != nil {
  70. return false
  71. }
  72. check1 := strings.EqualFold("mp4", ext)
  73. check2 := strings.EqualFold("video/mp4", mime)
  74. return check1 && check2
  75. }
  76. func isJPG(path string) bool {
  77. mime, ext, err := getFileMime(path)
  78. if err != nil {
  79. return false
  80. }
  81. check1 := strings.EqualFold("jpg", ext)
  82. check2 := strings.EqualFold("image/jpeg", mime)
  83. return check1 && check2
  84. }