dont restart song on radio start

This commit is contained in:
jjohnstondev 2023-01-08 21:08:51 -08:00
parent f5f176b801
commit 16c0ba104e
6 changed files with 21 additions and 10 deletions

View File

@ -25,6 +25,13 @@ var (
)
func GetClient(ctx *gctx.Context) (*spotify.Client, error) {
if config.Values.ClientId == "" || config.Values.ClientSecret == "" {
configDir, _ := os.UserConfigDir()
fmt.Println("PLEASE WRITE YOUR CONFIG FILE IN", filepath.Join(configDir, "gospt/client.yml"))
fmt.Println("GO HERE TO AND MAKE AN APPLICATION: https://developer.spotify.com/dashboard/applications")
fmt.Println("\nclient_id: \"idgoesherelikethis\"\nclient_secret: \"secretgoesherelikethis\"")
return nil, fmt.Errorf("\nINVALID CONFIG")
}
auth = spotifyauth.New(
spotifyauth.WithClientID(config.Values.ClientId),
spotifyauth.WithClientSecret(config.Values.ClientSecret),

View File

@ -91,7 +91,8 @@ func QueueSong(ctx *gctx.Context, client *spotify.Client, id spotify.ID) error {
return nil
}
func RadioGivenSong(ctx *gctx.Context, client *spotify.Client, song_id spotify.ID) error {
func RadioGivenSong(ctx *gctx.Context, client *spotify.Client, song_id spotify.ID, pos int) error {
start := time.Now().UnixMilli()
seed := spotify.Seeds{
Tracks: []spotify.ID{song_id},
}
@ -117,11 +118,16 @@ func RadioGivenSong(ctx *gctx.Context, client *spotify.Client, song_id spotify.I
if err != nil {
return err
}
delay := time.Now().UnixMilli() - start
if pos != 0 {
pos = pos + int(delay)
}
client.PlayOpt(ctx, &spotify.PlayOptions{
PlaybackContext: &radioPlaylist.URI,
PlaybackOffset: &spotify.PlaybackOffset{
Position: 0,
},
PositionMs: pos,
})
err = client.Repeat(ctx, "context")
if err != nil {
@ -178,7 +184,7 @@ func Radio(ctx *gctx.Context, client *spotify.Client) error {
seed_song = tracks.Tracks[rand.Intn(len(tracks.Tracks))].SimpleTrack
}
}
return RadioGivenSong(ctx, client, seed_song.ID)
return RadioGivenSong(ctx, client, seed_song.ID, current_song.Progress)
}
func RefillRadio(ctx *gctx.Context, client *spotify.Client) error {

View File

@ -10,9 +10,6 @@ import (
var Values struct {
ClientId string `yaml:"client_id"`
ClientSecret string `yaml:"client_secret"`
DeviceId string `yaml:"device_id"`
Port int `yaml:"port"`
DeviceName string `yaml:"device_name"`
}
func LoadConfig(configDir string) {

View File

@ -75,7 +75,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
if msg.String() == "ctrl+r" {
track := m.list.SelectedItem()
err := commands.RadioGivenSong(m.ctx, m.client, track.(item).ID)
err := commands.RadioGivenSong(m.ctx, m.client, track.(item).ID, 0)
if err != nil {
return m, tea.Quit
}

View File

@ -74,7 +74,7 @@ func (m playlistTracksModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
if msg.String() == "ctrl+r" {
track := m.list.SelectedItem()
err := commands.RadioGivenSong(m.ctx, m.client, track.(item).ID)
err := commands.RadioGivenSong(m.ctx, m.client, track.(item).ID, 0)
if err != nil {
return m, tea.Quit
}

View File

@ -14,8 +14,8 @@ import (
)
func init() {
homeDir, _ := os.UserHomeDir()
configDir := filepath.Join(homeDir, ".config/gospt/")
configPath, _ := os.UserConfigDir()
configDir := filepath.Join(configPath, "gospt")
config.LoadConfig(configDir)
}
@ -25,7 +25,8 @@ func main() {
ctx := gctx.NewContext(context.Background())
client, err := auth.GetClient(ctx)
if err != nil {
panic(err.Error())
fmt.Println(err.Error())
return
}
currentUser, err := client.CurrentUser(ctx)
if err != nil {