IMPROVED: add status to cache #12

Merged
abs3nt merged 2 commits from dev into main 2023-02-28 18:53:59 +00:00
2 changed files with 20 additions and 6 deletions

View File

@ -2,6 +2,7 @@ pipeline:
build: build:
image: golang:1.19 image: golang:1.19
commands: commands:
- go mod tidy
- go build -o gospt - go build -o gospt
- mkdir completions - mkdir completions
- ./gospt completion zsh > completions/gospt_zsh - ./gospt completion zsh > completions/gospt_zsh

View File

@ -889,11 +889,25 @@ func (c *Commands) Previous(ctx *gctx.Context) error {
} }
func (c *Commands) Status(ctx *gctx.Context) error { func (c *Commands) Status(ctx *gctx.Context) error {
state, err := c.Client().PlayerState(ctx) state, err := cache.DefaultCache().GetOrDo("state", func() (string, error) {
state, err := c.Client().PlayerState(ctx)
if err != nil {
return "", err
}
str, err := c.FormatState(state)
if err != nil {
return "", nil
}
return str, nil
}, 5*time.Second)
if err != nil { if err != nil {
return err return err
} }
return c.PrintState(state) if err != nil {
return err
}
fmt.Println(state)
return nil
} }
func (c *Commands) Link(ctx *gctx.Context) (string, error) { func (c *Commands) Link(ctx *gctx.Context) (string, error) {
@ -983,15 +997,14 @@ func (c *Commands) PlaylistTracks(ctx *gctx.Context, playlist spotify.ID, page i
return c.Client().GetPlaylistTracks(ctx, playlist, spotify.Limit(50), spotify.Offset((page-1)*50)) return c.Client().GetPlaylistTracks(ctx, playlist, spotify.Limit(50), spotify.Offset((page-1)*50))
} }
func (c *Commands) PrintState(state *spotify.PlayerState) error { func (c *Commands) FormatState(state *spotify.PlayerState) (string, error) {
state.Item.AvailableMarkets = []string{} state.Item.AvailableMarkets = []string{}
state.Item.Album.AvailableMarkets = []string{} state.Item.Album.AvailableMarkets = []string{}
out, err := json.MarshalIndent(state, "", " ") out, err := json.MarshalIndent(state, "", " ")
if err != nil { if err != nil {
return err return "", err
} }
fmt.Println(string(out)) return (string(out)), nil
return nil
} }
func (c *Commands) PrintPlaying(current *spotify.CurrentlyPlaying) error { func (c *Commands) PrintPlaying(current *spotify.CurrentlyPlaying) error {