This commit is contained in:
parent
a6f06a753e
commit
0ff00ef79b
@ -88,6 +88,53 @@ func QueueSong(ctx *gctx.Context, client *spotify.Client, id spotify.ID) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PlaySongInPlaylist(ctx *gctx.Context, client *spotify.Client, context *spotify.URI, offset int) error {
|
||||||
|
err := client.PlayOpt(ctx, &spotify.PlayOptions{
|
||||||
|
PlaybackOffset: &spotify.PlaybackOffset{Position: offset},
|
||||||
|
PlaybackContext: context,
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func PlayLikedSongs(ctx *gctx.Context, client *spotify.Client, position int) error {
|
||||||
|
err := ClearRadio(ctx, client)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
playlist, err := GetRadioPlaylist(ctx, client)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
songs, err := client.CurrentUsersTracks(ctx, spotify.Limit(50), spotify.Offset(position))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
to_add := []spotify.ID{}
|
||||||
|
for _, song := range songs.Tracks {
|
||||||
|
to_add = append(to_add, song.ID)
|
||||||
|
}
|
||||||
|
client.AddTracksToPlaylist(ctx, playlist.ID, to_add...)
|
||||||
|
client.PlayOpt(ctx, &spotify.PlayOptions{
|
||||||
|
PlaybackContext: &playlist.URI,
|
||||||
|
PlaybackOffset: &spotify.PlaybackOffset{
|
||||||
|
Position: 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
for page := 2; page <= 5; page++ {
|
||||||
|
songs, err := client.CurrentUsersTracks(ctx, spotify.Limit(50), spotify.Offset((50*(page-1))+position))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
to_add := []spotify.ID{}
|
||||||
|
for _, song := range songs.Tracks {
|
||||||
|
to_add = append(to_add, song.ID)
|
||||||
|
}
|
||||||
|
client.AddTracksToPlaylist(ctx, playlist.ID, to_add...)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func RadioGivenSong(ctx *gctx.Context, client *spotify.Client, song_id spotify.ID, pos int) error {
|
func RadioGivenSong(ctx *gctx.Context, client *spotify.Client, song_id spotify.ID, pos int) error {
|
||||||
start := time.Now().UnixMilli()
|
start := time.Now().UnixMilli()
|
||||||
seed := spotify.Seeds{
|
seed := spotify.Seeds{
|
||||||
@ -491,7 +538,6 @@ func GetRadioPlaylist(ctx *gctx.Context, client *spotify.Client) (*spotify.FullP
|
|||||||
// private flag doesnt work
|
// private flag doesnt work
|
||||||
playlist, err := client.CreatePlaylistForUser(ctx, ctx.UserId, "autoradio", "Automanaged radio playlist", false, false)
|
playlist, err := client.CreatePlaylistForUser(ctx, ctx.UserId, "autoradio", "Automanaged radio playlist", false, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("AHHHHHHHHHHHHh", ctx.UserId)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out, err := json.MarshalIndent(playlist, "", " ")
|
out, err := json.MarshalIndent(playlist, "", " ")
|
||||||
|
@ -88,13 +88,8 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if msg.String() == "enter" {
|
if msg.String() == "enter" {
|
||||||
track := m.list.SelectedItem()
|
|
||||||
var err error
|
var err error
|
||||||
err = commands.QueueSong(m.ctx, m.client, track.(item).ID)
|
err = commands.PlayLikedSongs(m.ctx, m.client, m.list.Cursor()+(m.list.Paginator.Page*m.list.Paginator.PerPage))
|
||||||
if err != nil {
|
|
||||||
m.ctx.Printf(err.Error())
|
|
||||||
}
|
|
||||||
err = commands.Skip(m.ctx, m.client)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.ctx.Printf(err.Error())
|
m.ctx.Printf(err.Error())
|
||||||
}
|
}
|
||||||
|
@ -87,13 +87,8 @@ func (m playlistTracksModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if msg.String() == "enter" {
|
if msg.String() == "enter" {
|
||||||
track := m.list.SelectedItem()
|
|
||||||
var err error
|
var err error
|
||||||
err = commands.QueueSong(m.ctx, m.client, track.(item).ID)
|
err = commands.PlaySongInPlaylist(m.ctx, m.client, &m.playlist.URI, m.list.Cursor()+(m.list.Paginator.Page*m.list.Paginator.PerPage))
|
||||||
if err != nil {
|
|
||||||
m.ctx.Printf(err.Error())
|
|
||||||
}
|
|
||||||
err = commands.Skip(m.ctx, m.client)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
m.ctx.Printf(err.Error())
|
m.ctx.Printf(err.Error())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user