コード例 #1
0
ファイル: SearchControl.cs プロジェクト: hello-web/ThreePM
 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);
 }
コード例 #2
0
ファイル: MusicPlayer.cs プロジェクト: Magicianred/ChayaBot
        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();
            }
        }
コード例 #3
0
 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();
     }
 }
コード例 #4
0
ファイル: SearchControl.cs プロジェクト: hello-web/ThreePM
 private void songListView1_SongQueued(object sender, EventArgs e)
 {
     SongQueued?.Invoke(this, EventArgs.Empty);
 }