private void btnPlaylist_Click(object sender, System.EventArgs e) { foreach (SongListViewItem s in songListView1.SelectedItems) { this.Player.Playlist.AddToEnd(s.SongInfo); } SongQueued?.Invoke(this, EventArgs.Empty); }
public async Task QueueFromUrl(ulong requester, string url) { // Check if the url is a valid youtube playlist url if (YoutubeClient.TryParsePlaylistId(url, out string playlistId)) { var playlistInfos = await youtubeClient.GetPlaylistInfoAsync(playlistId); foreach (var videoSnippet in playlistInfos.Videos) { YoutubePlaylistSong yps = new YoutubePlaylistSong(videoSnippet.Id, requester, videoSnippet.Title, videoSnippet.ImageThumbnailUrl); songs.Enqueue(yps); } PlaylistQueued?.Invoke(this, requester, playlistInfos.Videos.Count); } // Check if the url is a valid youtube video url else if (YoutubeClient.TryParseVideoId(url, out string videoId)) { Song song = await GetSongFromUrl($"https://www.youtube.com/watch?v={videoId}"); song.Requester = requester; songs.Enqueue(song); SongQueued?.Invoke(this, requester, song); } else { throw new Exception("Invalid audio url"); } // Dequeue in case the queue was empty and the player isn't playing anything if (!IsPlaying) { await DequeueSong(); } }
private void SongListView_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Q) { this.Player.Playlist.EventsEnabled = false; this.SelectedItems.ForEach(delegate(SongListViewItem item) { if (this.Player.Playlist.Contains(item.SongInfo.FileName)) { this.Player.Playlist.Remove(item.SongInfo.FileName); } else { this.Player.Playlist.AddToEnd(item.SongInfo); } }); this.Player.Playlist.EventsEnabled = true; SongQueued?.Invoke(this, EventArgs.Empty); } else if (e.KeyCode == Keys.F) { if (this.SelectedItems.Count > 0) { this.Player.ForceSong(this.SelectedItems[0].SongInfo.FileName); list.InvalidateItem(this.SelectedItems[0]); } } else if (e.KeyCode == Keys.Delete) { this.SelectedItems.ForEach(delegate(SongListViewItem item) { this.Library.Delete(item.SongInfo.FileName); list.Items.Remove(item); }); list.MeasureItems(); } else if (e.KeyCode == Keys.I) { this.SelectedItems.ForEach(delegate(SongListViewItem item) { if (item.SongInfo.Ignored) { this.Library.UnIgnore(item.SongInfo.FileName); } else { this.Library.Ignore(item.SongInfo.FileName); } }); } else if (e.KeyCode == Keys.Enter) { if (this.SelectedItems.Count > 0) { this.Player.PlayFile(this.SelectedItems[0].SongInfo.FileName); SongPlayed?.Invoke(this, EventArgs.Empty); } } else if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.A) { list.SelectedItems.Clear(); list.SelectedItems.AddRange(list.Items); list.Invalidate(); } }
private void songListView1_SongQueued(object sender, EventArgs e) { SongQueued?.Invoke(this, EventArgs.Empty); }