54 lines
1.0 KiB
Go
Raw Normal View History

2024-02-18 10:46:59 -08:00
package commands
import (
"encoding/json"
"fmt"
2024-02-18 11:10:36 -08:00
"os"
"path/filepath"
2024-02-18 10:46:59 -08:00
"github.com/zmb3/spotify/v2"
)
func (c *Commander) ListDevices() error {
2024-02-18 23:33:32 -08:00
devices, err := c.Client().PlayerDevices(c.Context)
2024-02-18 10:46:59 -08:00
if err != nil {
return err
}
return PrintDevices(devices)
}
func PrintDevices(devices []spotify.PlayerDevice) error {
out, err := json.MarshalIndent(devices, "", " ")
if err != nil {
return err
}
fmt.Println(string(out))
return nil
}
2024-02-18 11:10:36 -08:00
func (c *Commander) SetDevice(device spotify.ID) error {
2024-02-18 23:33:32 -08:00
err := c.Client().TransferPlayback(c.Context, device, true)
2024-02-18 11:10:36 -08:00
if err != nil {
return err
}
2024-02-18 23:33:32 -08:00
devices, err := c.Client().PlayerDevices(c.Context)
2024-02-18 11:10:36 -08:00
if err != nil {
return err
}
for _, d := range devices {
if d.ID == device {
out, err := json.MarshalIndent(d, "", " ")
if err != nil {
return err
}
configDir, _ := os.UserConfigDir()
2024-02-18 18:51:25 -08:00
err = os.WriteFile(filepath.Join(configDir, "gspot/device.json"), out, 0o600)
2024-02-18 11:10:36 -08:00
if err != nil {
return err
}
return nil
}
}
return fmt.Errorf("device not found")
}