Compare commits
1 Commits
1fbd6bce2d
...
12ae1616ec
Author | SHA1 | Date | |
---|---|---|---|
12ae1616ec |
19
music.go
19
music.go
|
@ -8,7 +8,6 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Player manages playing music one track at a time.
|
// Player manages playing music one track at a time.
|
||||||
|
@ -18,23 +17,6 @@ type Player struct {
|
||||||
cmd *exec.Cmd
|
cmd *exec.Cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch the running playlist to advance the next track.
|
|
||||||
func (s *Sonar) Watch() {
|
|
||||||
var p = s.Player
|
|
||||||
for {
|
|
||||||
if p.Running() {
|
|
||||||
if err := p.cmd.Wait(); err != nil {
|
|
||||||
log.Error("Player.Watch: p.cmd.Wait: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Next track?
|
|
||||||
log.Info("Track ended, play next")
|
|
||||||
s.PlayNext()
|
|
||||||
}
|
|
||||||
time.Sleep(1 * time.Second)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run the playlist.
|
// Run the playlist.
|
||||||
func (p *Player) Run(playlist []string) {
|
func (p *Player) Run(playlist []string) {
|
||||||
p.playlist = playlist
|
p.playlist = playlist
|
||||||
|
@ -196,6 +178,5 @@ func (s *Sonar) PlayNext() error {
|
||||||
if !ok {
|
if !ok {
|
||||||
return errors.New("end of playlist")
|
return errors.New("end of playlist")
|
||||||
}
|
}
|
||||||
s.Player.Stop()
|
|
||||||
return s.Play(filename)
|
return s.Play(filename)
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,14 +52,6 @@ func (s *Sonar) Register() *mux.Router {
|
||||||
s.FlashAndRedirect(r, w, "/", "Playlist stopped!")
|
s.FlashAndRedirect(r, w, "/", "Playlist stopped!")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
POST.HandleFunc("/playlist/next", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
err := s.PlayNext()
|
|
||||||
if err != nil {
|
|
||||||
s.FlashAndRedirect(r, w, "/", "Error: "+err.Error())
|
|
||||||
} else {
|
|
||||||
s.FlashAndRedirect(r, w, "/", "Playlist advanced!")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
POST.HandleFunc("/playlist/schedule", func(w http.ResponseWriter, r *http.Request) {
|
POST.HandleFunc("/playlist/schedule", func(w http.ResponseWriter, r *http.Request) {
|
||||||
var (
|
var (
|
||||||
timestamp = r.FormValue("time")
|
timestamp = r.FormValue("time")
|
||||||
|
|
3
sonar.go
3
sonar.go
|
@ -46,9 +46,6 @@ func New() *Sonar {
|
||||||
)
|
)
|
||||||
s.n.UseHandler(router)
|
s.n.UseHandler(router)
|
||||||
|
|
||||||
// Watch the player to advance to the next track.
|
|
||||||
go s.Watch()
|
|
||||||
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Sonar</title>
|
<title>time.caskir.net</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
<meta http-equiv="content-type" value="text/html; encoding=UTF-8">
|
<meta http-equiv="content-type" value="text/html; encoding=UTF-8">
|
||||||
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user