1package main23import (4 "github.com/nmeum/mpvfs/fileserver"5 "github.com/nmeum/mpvfs/mpv"6 "github.com/nmeum/mpvfs/playlistfs"78 "strings"9)1011type playvol struct {12 *playlistfs.BlockRecv1314 state *playerState15 mpv *mpv.Client16}1718func newVol() (fileserver.File, error) {19 p := &playvol{state: state, mpv: mpvClient}20 p.BlockRecv = playlistfs.NewBlockRecv(p)21 return p, nil22}2324func (c *playvol) CurrentReader() *strings.Reader {25 v := playlistfs.Volume{Levels: []uint{c.state.Volume()}}26 return strings.NewReader(v.String() + "\n")27}2829func (c *playvol) NextReader() *strings.Reader {30 v := playlistfs.Volume{Levels: []uint{c.state.WaitVolume()}}31 return strings.NewReader(v.String() + "\n")32}3334func (c *playvol) Write(off int64, p []byte) (int, error) {35 vol, err := playlistfs.VolCmd(p)36 if err != nil {37 return 0, err38 }3940 // TODO: handle channels41 level := float64(vol.Levels[0])42 err = c.mpv.SetProperty("volume", level)43 if err != nil {44 return 0, err45 }4647 return len(p), nil48}4950func (c *playvol) Close() error {51 return nil52}