func (spotify *Spotify) play(trackUri *sconsify.Track) { link, err := spotify.session.ParseLink(trackUri.Uri) if err != nil { return } track, err := link.Track() if err != nil { return } if trackUri.IsPartial() { trackUri = sconsify.ToSconsifyTrack(track) } if !spotify.isTrackAvailable(track) { spotify.events.TrackNotAvailable(trackUri) return } player := spotify.session.Player() if err := player.Load(track); err != nil { return } player.Play() spotify.events.TrackPlaying(trackUri) spotify.currentTrack = trackUri }
func (spotify *Spotify) play(trackUri *sconsify.Track) { link, err := spotify.session.ParseLink(trackUri.URI) if err != nil { return } track, err := link.Track() if err != nil { return } if trackUri.IsPartial() { trackUri = sconsify.ToSconsifyTrack(track) } if !spotify.isTrackAvailable(track) { if trackUri.IsFromWebApi() { retry := trackUri.RetryLoading() if retry < 4 { go func() { time.Sleep(100 * time.Millisecond) spotify.events.Play(trackUri) }() return } } spotify.events.TrackNotAvailable(trackUri) return } player := spotify.session.Player() if err := player.Load(track); err != nil { return } player.Play() spotify.events.TrackPlaying(trackUri) spotify.currentTrack = trackUri spotify.paused = false return }