Example #1
0
        //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);
            }
        }
Example #2
0
        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);
            }
        }