public async Task <CurrentStateResponseDto> GetCurrentPlaybackState() { await MakeSureIdsAreSet(); var currentPlaybackState = await GetState(); await UpdatePlaybackState(currentPlaybackState); LandingPlaylist = await GetPlaylistTracks(LandingPlaylistId); Queue = await GetPlaylistTracks(RuntimeQueuePlaylistId); var doublettes = Queue.Where(t => LandingPlaylist.Any(p => p.Id == t.Id)); foreach (var track in doublettes) { await RemoveSong(track, RuntimeQueuePlaylistId); } var playingTrackIndex = GetPlayingIndex(currentPlaybackState, LandingPlaylist); if (playingTrackIndex < 0) { IssueWarning("Starta om spellistan Bröllop_kö!"); } else { if (playingTrackIndex > 1) { await RemoveFirstLandingTrack(); if (LandingPlaylist.Count <= LandingListSize) { if (TakeFromQueue && Queue.Count > 0) { await AddQueuedSongToLandingList(); } else { await AddBasicSongToLandingList(); } } playingTrackIndex = GetPlayingIndex(currentPlaybackState, LandingPlaylist); } } //await RepopulateLandingListIfNeeded(LandingPlaylist); var response = currentPlaybackState.ToDto(LandingPlaylist[playingTrackIndex + 1]); return(response); }
private async Task AddBasicSongToLandingList(int i = 0) { Track song; bool duplicate; do { if (i == 0) { song = BasicPlaylist[new Random().Next(BasicPlaylist.Count)]; } else { song = BasicPlaylist[new Random(i++).Next(BasicPlaylist.Count)]; } duplicate = LandingPlaylist.Any(t => t.Id == song.Id); } while (duplicate); await AddSongToPlaylist(song, LandingPlaylistId); }
public async Task <string> QueueSong(string id) { var queue = await GetPlaylistTracks(RuntimeQueuePlaylistId); if (Queue.Any(t => t.Id == id) || LandingPlaylist.Any(p => p.Id == id) || queue.Any(t => t.Id == id)) { return("Låten är redan köad"); } var trackRequest = ConstructRequestMessage("GET", $"https://api.spotify.com/v1/tracks/{id}"); var trackResponse = await _client.SendAsync(trackRequest); var content = await trackResponse.Content.ReadAsStringAsync(); var track = ConvertJsonTrack(content); Queue.Add(track); await AddSongToPlaylist(track, RuntimeQueuePlaylistId); return($"Låten {track.Name} lades till i kön"); }