Exemplo n.º 1
0
        static async void DownloadAudio(MediaStreamInfoSet mediaStreamInfoSet, string title, MaterialListView downloadQueueMaterialListView, string format, long bitrate, int _listViewItems, string savePath, MaterialCheckBox deleteDoneCheckBox)
        {
            var _audioStreamInfo = mediaStreamInfoSet.Audio.OrderByDescending(a => a.Bitrate / 1024 == bitrate).First();

            IProgress <double> progress = new Progress <double>(p =>
            {
                ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].SubItems[4].Text = (p * 100).ToString("0.00") + "%");

                if (p * 100 == 100)
                {
                    ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].SubItems[4].Text = "Done!");
                    DatabaseOperations.AddNewRecord(Settings.Default.Guid, title, format, savePath);

                    if (deleteDoneCheckBox.Checked == true)
                    {
                        Thread.Sleep(2000);
                        ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].Remove());
                    }
                }
            });

            await Task.Run(() => _client.DownloadMediaStreamAsync(_audioStreamInfo, savePath + ".mp3", progress));
        }
Exemplo n.º 2
0
        static async void DownloadVideo(MediaStreamInfoSet mediaStreamInfoSet, string title, MaterialListView downloadQueueMaterialListView, string format, string quality, int _listViewItems, string savePath, MaterialCheckBox deleteDoneCheckBox)
        {
            var _audioStreamInfo  = mediaStreamInfoSet.Audio.OrderByDescending(a => a.Bitrate).First();
            var _videoStreamInfo  = mediaStreamInfoSet.Video.Where(v => v.Container.ToString() == format && v.VideoQualityLabel == quality).First();
            var _mediaStreamInfos = new MediaStreamInfo[] { _audioStreamInfo, _videoStreamInfo };

            IProgress <double> progress = new Progress <double>(p =>
            {
                ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].SubItems[4].Text = (p * 100).ToString("0.00") + "%");
                if (p * 100 == 100)
                {
                    ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].SubItems[4].Text = "Done!");
                    DatabaseOperations.AddNewRecord(Settings.Default.Guid, title, format, savePath);

                    if (deleteDoneCheckBox.Checked == true)
                    {
                        Thread.Sleep(2000);
                        ExtensionMethods.SynchronizedInvoke(downloadQueueMaterialListView, () => downloadQueueMaterialListView.Items[_listViewItems].Remove());
                    }
                }
            });

            await Task.Run(() => _converter.DownloadAndProcessMediaStreamsAsync(_mediaStreamInfos, savePath + "." + format, format, progress));
        }