55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
|
||
|
"layeh.com/gumble/gumble"
|
||
|
"layeh.com/gumble/gumbleffmpeg"
|
||
|
"layeh.com/gumble/gumbleutil"
|
||
|
_ "layeh.com/gumble/opus"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
files := make(map[string]string)
|
||
|
var stream *gumbleffmpeg.Stream
|
||
|
|
||
|
flag.Usage = func() {
|
||
|
fmt.Fprintf(os.Stderr, "Usage of %s: [flags] [audio files...]\n", os.Args[0])
|
||
|
flag.PrintDefaults()
|
||
|
}
|
||
|
|
||
|
gumbleutil.Main(gumbleutil.AutoBitrate, gumbleutil.Listener{
|
||
|
Connect: func(e *gumble.ConnectEvent) {
|
||
|
for _, file := range flag.Args() {
|
||
|
key := filepath.Base(file)
|
||
|
files[key] = file
|
||
|
}
|
||
|
|
||
|
fmt.Printf("audio player loaded! (%d files)\n", len(files))
|
||
|
},
|
||
|
|
||
|
TextMessage: func(e *gumble.TextMessageEvent) {
|
||
|
fmt.Printf(e.Message)
|
||
|
if e.Sender == nil {
|
||
|
return
|
||
|
}
|
||
|
file, ok := files[e.Message]
|
||
|
if !ok {
|
||
|
return
|
||
|
}
|
||
|
if stream != nil && stream.State() == gumbleffmpeg.StatePlaying {
|
||
|
return
|
||
|
}
|
||
|
stream = gumbleffmpeg.New(e.Client, gumbleffmpeg.SourceFile(file))
|
||
|
if err := stream.Play(); err != nil {
|
||
|
fmt.Printf("%s\n", err)
|
||
|
} else {
|
||
|
fmt.Printf("Playing %s\n", file)
|
||
|
}
|
||
|
},
|
||
|
})
|
||
|
}
|