63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package helper
|
|
|
|
import (
|
|
"bytes"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
hc "neo/context"
|
|
)
|
|
|
|
func ConvertToMP3(data []byte) ([]byte, error) {
|
|
cmd := exec.Command("ffmpeg", "-i", "pipe:0", "-f", "mp3", "-ab", "128k", "pipe:1")
|
|
cmd.Stdin = bytes.NewReader(data)
|
|
var out bytes.Buffer
|
|
cmd.Stdout = &out
|
|
if err := cmd.Run(); err != nil {
|
|
return nil, err
|
|
}
|
|
return out.Bytes(), nil
|
|
}
|
|
|
|
func SendMedia(ctx *hc.Ctx, data []byte, mime, caption string) {
|
|
switch {
|
|
case strings.HasPrefix(mime, "video/mp4"):
|
|
ctx.SendVideo(data, caption)
|
|
case strings.HasPrefix(mime, "image/"):
|
|
ctx.SendImage(data, caption)
|
|
case strings.HasPrefix(mime, "audio/"):
|
|
ctx.SendAudio(data)
|
|
default:
|
|
ctx.SendDocument(data, "media", "media"+extByMIME(mime))
|
|
}
|
|
}
|
|
|
|
func extByMIME(mime string) string {
|
|
switch {
|
|
case strings.HasPrefix(mime, "video/mp4"):
|
|
return ".mp4"
|
|
case strings.HasPrefix(mime, "video/webm"):
|
|
return ".webm"
|
|
case strings.HasPrefix(mime, "video/quicktime"):
|
|
return ".mov"
|
|
case strings.HasPrefix(mime, "video/x-matroska"):
|
|
return ".mkv"
|
|
case strings.HasPrefix(mime, "video/"):
|
|
return ".video"
|
|
case strings.HasPrefix(mime, "image/jpeg"):
|
|
return ".jpg"
|
|
case strings.HasPrefix(mime, "image/png"):
|
|
return ".png"
|
|
case strings.HasPrefix(mime, "image/gif"):
|
|
return ".gif"
|
|
case strings.HasPrefix(mime, "image/webp"):
|
|
return ".webp"
|
|
case strings.HasPrefix(mime, "audio/mpeg"), strings.HasPrefix(mime, "audio/mp3"):
|
|
return ".mp3"
|
|
case strings.HasPrefix(mime, "audio/"):
|
|
return ".m4a"
|
|
default:
|
|
return ".bin"
|
|
}
|
|
}
|