- add a new remaining endpoint
This commit is contained in:
parent
1af34dfcf3
commit
8b198040bd
@ -73,36 +73,38 @@ func PlaySound(file string, index int, loop bool) int {
|
|||||||
Streamer: nil,
|
Streamer: nil,
|
||||||
Control: nil,
|
Control: nil,
|
||||||
Loop: loop,
|
Loop: loop,
|
||||||
|
Format: streamMap[file].Format,
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("Playing sound: " + file)
|
fmt.Println("Playing sound: " + file)
|
||||||
var buffer *beep.Buffer
|
var buffer *beep.Buffer
|
||||||
BufferSound(file)
|
BufferSound(file)
|
||||||
buffer = streamMap[file].Buffer
|
buffer = streamMap[file].Buffer
|
||||||
streamer := streamMap[file].Streamer
|
// streamer := streamMap[file].Streamer
|
||||||
|
|
||||||
fmt.Println("Trying to play sound")
|
fmt.Println("Trying to play sound")
|
||||||
shot := buffer.Streamer(0, buffer.Len())
|
amountOfLoops := 1
|
||||||
|
if loop {
|
||||||
|
amountOfLoops = -1
|
||||||
|
}
|
||||||
|
shot := buffer.Streamer(amountOfLoops, buffer.Len())
|
||||||
|
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
ctrl := &beep.Ctrl{Streamer: beep.Seq(shot, beep.Callback(func() {
|
ctrl := &beep.Ctrl{Streamer: shot, Paused: false}
|
||||||
done <- true
|
|
||||||
})), Paused: false}
|
|
||||||
|
|
||||||
playbacks[index] = playback{
|
playbacks[index] = playback{
|
||||||
File: file,
|
File: file,
|
||||||
IsLoaded: true,
|
IsLoaded: true,
|
||||||
Streamer: streamer,
|
Streamer: shot,
|
||||||
Control: ctrl,
|
Control: ctrl,
|
||||||
Loop: loop,
|
Loop: loop,
|
||||||
|
Format: streamMap[file].Format,
|
||||||
|
Done: done,
|
||||||
}
|
}
|
||||||
speaker.Play(ctrl)
|
speaker.Play(ctrl)
|
||||||
<-done
|
<-done
|
||||||
fmt.Println("Finished playing sound: " + file)
|
fmt.Println("Finished playing sound: " + file)
|
||||||
if playbacks[index].Loop {
|
|
||||||
playbacks[index].Control.Paused = true
|
|
||||||
PlaySound(file, index, loop)
|
|
||||||
delete(playbacks, index)
|
delete(playbacks, index)
|
||||||
}
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,11 @@ import (
|
|||||||
type playback struct {
|
type playback struct {
|
||||||
File string
|
File string
|
||||||
IsLoaded bool
|
IsLoaded bool
|
||||||
Streamer beep.Streamer
|
Streamer beep.StreamSeeker
|
||||||
Control *beep.Ctrl
|
Control *beep.Ctrl
|
||||||
Loop bool
|
Loop bool
|
||||||
|
Format beep.Format
|
||||||
|
Done chan bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type playbackWebReturn struct {
|
type playbackWebReturn struct {
|
||||||
@ -90,6 +92,7 @@ func main() {
|
|||||||
http.HandleFunc("/v1/stopAll", handleStopAll)
|
http.HandleFunc("/v1/stopAll", handleStopAll)
|
||||||
http.HandleFunc("/v1/current", handleCurrent)
|
http.HandleFunc("/v1/current", handleCurrent)
|
||||||
http.HandleFunc("/v1/list", handleListing)
|
http.HandleFunc("/v1/list", handleListing)
|
||||||
|
http.HandleFunc("/v1/remaining", handleRemaining)
|
||||||
http.HandleFunc("/", handleRoot)
|
http.HandleFunc("/", handleRoot)
|
||||||
|
|
||||||
fmt.Println("Listening on port " + fmt.Sprint(configuration.Port))
|
fmt.Println("Listening on port " + fmt.Sprint(configuration.Port))
|
||||||
|
36
webRoutes.go
36
webRoutes.go
@ -284,6 +284,42 @@ func handleListing(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleRemaining(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// Rejct everything else then GET requests
|
||||||
|
if r.Method != "GET" {
|
||||||
|
http.Error(w, "Method is not supported.", http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json") // Set the content type to json
|
||||||
|
var cnt, err = strconv.Atoi(r.URL.Query().Get("id")) // Retrieve the id, first convert it to an int
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(w, "{\"status\":\"fail\", \"reason\":\"invalid id\"}")
|
||||||
|
}
|
||||||
|
fmt.Println(cnt)
|
||||||
|
plyB := playbacks[cnt]
|
||||||
|
// fmt.Println(beep.SampleRate.D(plyB.Streamer.Stream().Len()))
|
||||||
|
seeker := plyB.Streamer
|
||||||
|
format := plyB.Format
|
||||||
|
n := plyB.Format.SampleRate // Streamer.Stream() // .At(beep.SampleRate.D(plyB.Streamer.Stream().Len()))
|
||||||
|
|
||||||
|
if seeker != nil {
|
||||||
|
fmt.Println(format.SampleRate)
|
||||||
|
// fmt.Println(plyB.Seeker.)
|
||||||
|
position := plyB.Format.SampleRate.D(seeker.Position())
|
||||||
|
length := plyB.Format.SampleRate.D(seeker.Len())
|
||||||
|
remaining := length - position
|
||||||
|
if remaining == 0 {
|
||||||
|
plyB.Done <- true
|
||||||
|
}
|
||||||
|
fmt.Println(position)
|
||||||
|
fmt.Fprintf(w, "{\"status\":\"ok\", \"SampleRate\":%d, \"Length\":%d, \"Position\":%d, \"Remaining\": %d, \"LengthSec\":\"%v\", \"PosSec\":\"%v\", \"RemaningSec\":\"%v\"}", n, length, position, remaining, length, position, remaining)
|
||||||
|
} else {
|
||||||
|
fmt.Println("Seeker is nil")
|
||||||
|
fmt.Fprintf(w, "{\"status\":\"ok\", \"SampleRate\":%d}", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func handleRoot(w http.ResponseWriter, r *http.Request) {
|
func handleRoot(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Fprintf(w, "Soundr is running.")
|
fmt.Fprintf(w, "Soundr is running.")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user