if no songs are playing

This commit is contained in:
jjohnstondev 2023-01-08 08:33:53 -08:00
parent 2214ec9616
commit b7133bfd5f
3 changed files with 23 additions and 19 deletions

1
go.mod
View File

@ -8,7 +8,6 @@ require (
github.com/charmbracelet/lipgloss v0.6.0
github.com/cristalhq/aconfig v0.18.3
github.com/cristalhq/aconfig/aconfigyaml v0.17.1
github.com/zmb3/spotify v1.3.0
github.com/zmb3/spotify/v2 v2.3.1
golang.org/x/oauth2 v0.0.0-20210810183815-faf39c7919d5
)

2
go.sum
View File

@ -171,8 +171,6 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/zmb3/spotify v1.3.0 h1:6Z2F1IMx0Hviq/dpf8nFwvKPppFEMXn8yfReSBVi16k=
github.com/zmb3/spotify v1.3.0/go.mod h1:GD7AAEMUJVYc2Z7p2a2S0E3/5f/KxM/vOnErNr4j+Tw=
github.com/zmb3/spotify/v2 v2.3.1 h1:aEyIPotROM3JJjHMCImFROgnPIUpzVo8wymYSaPSd9w=
github.com/zmb3/spotify/v2 v2.3.1/go.mod h1:+LVh9CafHu7SedyqYmEf12Rd01dIVlEL845yNhksW0E=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=

View File

@ -79,21 +79,23 @@ func QueueSong(ctx *gctx.Context, client *spotify.Client, id spotify.ID) error {
}
func Radio(ctx *gctx.Context, client *spotify.Client) error {
err := ClearRadio(ctx, client)
if err != nil {
return err
}
radioPlaylist, err := GetRadioPlaylist(ctx, client)
if err != nil {
return err
}
rand.Seed(time.Now().Unix())
current_song, err := client.PlayerCurrentlyPlaying(ctx)
if err != nil {
return err
}
seed := spotify.Seeds{
Tracks: []spotify.ID{current_song.Item.ID},
seed_song := current_song.Item.SimpleTrack
if !current_song.Playing {
tracks, err := client.CurrentUsersTracks(ctx, spotify.Limit(10))
if err != nil {
return err
}
seed_song = tracks.Tracks[rand.Intn(len(tracks.Tracks))].SimpleTrack
}
seed := spotify.Seeds{
Tracks: []spotify.ID{seed_song.ID},
}
fmt.Println("GETTING RECOMENDATIONS FOR", seed_song.Name)
recomendations, err := client.GetRecommendations(ctx, seed, &spotify.TrackAttributes{}, spotify.Limit(100))
if err != nil {
return err
@ -102,6 +104,14 @@ func Radio(ctx *gctx.Context, client *spotify.Client) error {
for _, song := range recomendations.Tracks {
recomendationIds = append(recomendationIds, song.ID)
}
err = ClearRadio(ctx, client)
if err != nil {
return err
}
radioPlaylist, err := GetRadioPlaylist(ctx, client)
if err != nil {
return err
}
_, err = client.AddTracksToPlaylist(ctx, radioPlaylist.ID, recomendationIds...)
if err != nil {
return err
@ -116,7 +126,7 @@ func Radio(ctx *gctx.Context, client *spotify.Client) error {
if err != nil {
return err
}
rand.Seed(time.Now().Unix())
fmt.Println("RADIO STARTED")
for i := 0; i < 4; i++ {
id := rand.Intn(len(recomendationIds)-2) + 1
seed := spotify.Seeds{
@ -126,17 +136,16 @@ func Radio(ctx *gctx.Context, client *spotify.Client) error {
if err != nil {
return err
}
fmt.Println(len(additional_recs.Tracks))
additionalRecsIds := []spotify.ID{}
for _, song := range additional_recs.Tracks {
additionalRecsIds = append(additionalRecsIds, song.ID)
}
fmt.Println(len(additionalRecsIds))
_, err = client.AddTracksToPlaylist(ctx, radioPlaylist.ID, additionalRecsIds...)
if err != nil {
return err
}
}
fmt.Println("500 TRACKS QUEUED")
return nil
}
@ -145,7 +154,6 @@ func RefillRadio(ctx *gctx.Context, client *spotify.Client) error {
if err != nil {
return err
}
fmt.Println("PLAYING", status.PlaybackContext.URI)
to_remove := []spotify.ID{}
radioPlaylist, err := GetRadioPlaylist(ctx, client)
found := false
@ -156,7 +164,6 @@ func RefillRadio(ctx *gctx.Context, client *spotify.Client) error {
return err
}
for _, track := range tracks.Items {
fmt.Println("CHECKING", track.Track.Track.Name)
if track.Track.Track.ID == status.Item.ID {
found = true
break
@ -194,7 +201,7 @@ func RefillRadio(ctx *gctx.Context, client *spotify.Client) error {
return err
}
}
fmt.Println("RADIO REPLENISHED")
return nil
}