public async Task HandleAsync(PlaylistEnded args) { await _logService.LogAppActivityAsync($"Playlist has ended for party with code {args.PartyCode}. Sending to all listeners"); Party party = await _partyService.GetPartyWithCodeAsync(args.PartyCode); if (party.Listeners.Count < 1) { await party.DeletePlaylistAsync(); await _partyService.EndPartyAsync(args.PartyCode); return; } List<Track> playlistSongs = await GenerateNewPlaylist(party); // If there is atleast 1 person still in the party, regenerate the playlist party.Playlist = new Playlist(playlistSongs, party.Listeners, party.PartyCode, party.Playlist.History); await party.Playlist.StartAsync(); await _partyHubContext.Clients.Group(args.PartyCode).SendAsync("UpdatePartyView", new { Song = party.Playlist.CurrentSong, Position = party.Playlist.CurrentPositionInSong() }, party.Playlist.History, party.Playlist.Queue ); }
protected virtual void OnPlaylistEnded(string playlist) { PlaylistEnded?.Invoke(this, new PlaylistEnded { PlaylistName = playlist }); }
public async Task Ticker_OnTick_PlaylistEnded() { const string key = "ticker"; var ticker = new Ticker(); var tracks = new List <ExampleTrack> { new ExampleTrack { Start = DateTime.Now.AddSeconds(-1), Stop = DateTime.Now.AddSeconds(1), Title = "1" } }; var playlistEnded = new PlaylistEnded(); ticker.AddChannel(key, tracks); ticker.PlaylistEnded += (sender, ended) => playlistEnded = ended; ticker.Start(); await Task.Delay(TimeSpan.FromSeconds(3)); playlistEnded.PlaylistName.Should().Be(key); }
/// <summary> /// Воспроизвести следующий файл /// </summary> public void PlayNext() { if (playlist.Count == 0) { // если больше нечего вопроизводить - отправить сигнал об этом currentFile = null; PlaylistEnded?.Invoke(this, EventArgs.Empty); } else { // если список воспроизведения циклический, то ставим файл обратно в очередь if (repeat && currentFile != null) { playlist.Enqueue(currentFile); } currentFile = playlist.Dequeue(); engine.Open(currentFile); engine.Play(); } }
public async Task HandleAsync(PlaylistEnded args) { await _logService.LogAppActivityAsync($"Playlist has ended for party with code {args.PartyCode}. Sending to all listeners"); Party party = await _partyService.GetPartyWithCodeAsync(args.PartyCode); if (party.Listeners.Count < 1) { await party.DeletePlaylistAsync(); await _partyService.EndPartyAsync(args.PartyCode); return; } List <Song> songs = new List <Song>(); foreach (PartyGoer listener in party.Listeners) { songs.AddRange(await _partyGoerService.GetRecommendedSongsAsync(listener.Id, 5)); } List <Song> playlistSongs = await _spotifyHttpClient.GetRecommendedSongsAsync(party.Listeners.ElementAt(0).Id, songs.GetRandomNItems(5).Select(p => p.TrackUri).ToList(), 0); // If there is atleast 1 person still in the party, regenerate the playlist party.Playlist = new Playlist(playlistSongs, party.Listeners, party.PartyCode, party.Playlist.History); await party.Playlist.StartAsync(); await _partyHubContext.Clients.Group(args.PartyCode).SendAsync("UpdatePartyView", new { Song = party.Playlist.CurrentSong, Position = party.Playlist.CurrentPositionInSong() }, party.Playlist.History, party.Playlist.Queue ); }