//private async void addURLfromClipboard() //{ // string clipboardURL = Clipboard.GetText(); // if (!clipboardURL.StartsWith("https://www.youtube.com/watch?v=")) return; // videosProcessing++; // progressbar.Enabled = true; // AudioInformation _Audio = await YoutubeService.FetchAudioInformation(clipboardURL); // if (_LstYoutubes.FindItemByVideo(_Audio) == null) _LstYoutubes.AddItem(_Audio); // videosProcessing--; // if (videosProcessing == 0) progressbar.Enabled = false; //} private async void addURLfromClipboard() { Action incrementVideoProcessing = () => { Interlocked.Increment(ref videosProcessing); progressbar.Invoke(new MethodInvoker(() => progressbar.Enabled = true)); }; Action decrementVideoProcessing = () => { Interlocked.Decrement(ref videosProcessing); if (videosProcessing == 0) { progressbar.Invoke(new MethodInvoker(() => progressbar.Enabled = false)); } }; Action <AudioInformation> addToList = (audioInformation) => { incrementVideoProcessing(); if (_LstYoutubes.FindItemByVideo(audioInformation) == null) { _LstYoutubes.AddItem(audioInformation).Checked = true; } decrementVideoProcessing(); }; var clipboardText = Clipboard.GetText(); if (clipboardText.StartsWith("https://www.youtube.com/watch?v=")) { incrementVideoProcessing(); var audioInformation = await YoutubeService.FetchAudioInformation(clipboardText); if (audioInformation != null) { addToList(audioInformation); } decrementVideoProcessing(); } else if (clipboardText.StartsWith("https://www.youtube.com/playlist?list=")) { incrementVideoProcessing(); await YoutubeService.FetchPlaylistInformation(clipboardText, addToList, decrementVideoProcessing); } }
private async void addURL(string url) { Action incrementVideoProcessing = () => { Interlocked.Increment(ref videosProcessing); progressbar.Invoke(new MethodInvoker(() => progressbar.Enabled = true)); }; Action decrementVideoProcessing = () => { Interlocked.Decrement(ref videosProcessing); if (videosProcessing == 0) { progressbar.Invoke(new MethodInvoker(() => progressbar.Enabled = false)); } }; Action <AudioInformation> addToList = (audioInformation) => { incrementVideoProcessing(); if (_LstYoutubes.FindItemByVideo(audioInformation) == null) { _LstYoutubes.AddItem(audioInformation).Checked = true; } decrementVideoProcessing(); }; if (YoutubeService.isSingleVideoUrl(url)) { incrementVideoProcessing(); var audioInformation = await YoutubeService.FetchAudioInformation(url); if (audioInformation != null) { addToList(audioInformation); } decrementVideoProcessing(); } else if (YoutubeService.isPlaylistUrl(url)) { incrementVideoProcessing(); await YoutubeService.FetchPlaylistInformation(url, addToList, decrementVideoProcessing); } }