diff --git a/go.mod b/go.mod index 499d6bb..a8ed6bd 100644 --- a/go.mod +++ b/go.mod @@ -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 ) diff --git a/go.sum b/go.sum index 12efd20..4775f2c 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/internal/commands/commands.go b/internal/commands/commands.go index ceb354b..285c140 100644 --- a/internal/commands/commands.go +++ b/internal/commands/commands.go @@ -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 }