Beispiel #1
0
        /// <summary>
        /// 创建下载后自动navigate
        /// </summary>
        /// <param name="bv"></param>
        /// <param name="cid"></param>
        /// <param name="quality"></param>
        /// <param name="sESSDATA"></param>
        /// <returns></returns>
        public static async Task CreateDownloadAsync(string bv, long cid, int quality, string sESSDATA, XamlRoot xamlRoot) //创建下载
        {
            if (string.IsNullOrWhiteSpace(Settings.DownloadPath))                                                          //检查下载目录是否为空
            {
                var dialog = new ErrorDialog("未设置下载储存文件夹,请前往设置以更改", xamlRoot)
                {
                    PrimaryButtonText = "前往设置"
                };
                var result = await dialog.ShowAsync();

                if (result == ContentDialogResult.Secondary)
                {
                    return;
                }
                else
                {
                    MainPage.ContentFrame.Navigate(typeof(SettingPage));
                    MainPage.NavView.SelectedItem = MainPage.NavView.SettingsItem;
                    return;
                }
            }
            try
            {
                await StorageFolder.GetFolderFromPathAsync(Settings.DownloadPath);
            }
            catch (FileNotFoundException)
            {
                throw new DirectoryNotFoundException("找不到指定下载目录:" + Settings.DownloadPath);
            }

            if (Settings.AutoDownloadDanmaku)
            {
                var video = await BiliVideoHelper.GetSingleVideoAsync(bv, cid, quality, sESSDATA);

                _ = BiliDanmakuHelper.DownloadDanmakuAsync(video.Title, video.Name, cid);
            }

            try
            {
                var download = await BiliDashDownload.CreateAsync(bv, cid, quality, sESSDATA);

                DownloadPage.Current.activeDownloadList.Add(download);
                var task = download.StartAsync();
                MainPage.NavView.SelectedItem = MainPage.NavViewItems[0];
                MainPage.ContentFrame.Navigate(typeof(DownloadPage));
                DownloadPage.Current.pivot.SelectedIndex = 0;
                await task;
            }
            catch (Exception ex)
            {
                var dialog = new ExceptionDialog(ex.Message, xamlRoot);
                await dialog.ShowAsync();
            }
        }
Beispiel #2
0
        /// <summary>
        /// 创建下载后自动navigate
        /// </summary>
        /// <param name="videos"></param>
        /// <param name="quality"></param>
        /// <param name="sESSDATA"></param>
        /// <returns></returns>
        public static async Task CreateDownloadsAsync(List <BiliVideoInfo> videos, int quality, string sESSDATA, XamlRoot xamlRoot)
        {
            if (ApplicationData.Current.LocalSettings.Values["downloadPath"] as string == null)//检查下载目录是否为空
            {
                var dialog = new ErrorDialog("未设置下载储存文件夹,请前往设置以更改", xamlRoot)
                {
                    PrimaryButtonText = "前往设置"
                };
                var result = await dialog.ShowAsync();

                if (result == ContentDialogResult.Secondary)
                {
                    return;
                }
                else
                {
                    MainPage.ContentFrame.Navigate(typeof(SettingPage));
                    MainPage.NavView.SelectedItem = MainPage.NavView.SettingsItem;
                    return;
                }
            }

            try
            {
                await StorageFolder.GetFolderFromPathAsync(Settings.DownloadPath);
            }
            catch (FileNotFoundException)
            {
                throw new DirectoryNotFoundException("找不到指定下载目录:" + Settings.DownloadPath);
            }

            var videoList = new List <BiliVideo>();

            foreach (var video in videos)
            {
                videoList.Add(await BiliVideoHelper.GetSingleVideoAsync(video.Bv, video.Cid, quality, sESSDATA));
            }

            if (Settings.AutoDownloadDanmaku)
            {
                _ = BiliDanmakuHelper.DownloadMultiDanmakuAsync(videoList);
            }

            var downloadList = new List <IBiliDownload>();

            foreach (var video in videoList)
            {
                var download = await BiliDashDownload.CreateAsync(video.Bv, video.Cid, quality, sESSDATA);

                downloadList.Add(download);
                DownloadPage.Current.activeDownloadList.Add(download);
            }

            MainPage.NavView.SelectedItem = MainPage.NavViewItems[0];
            MainPage.ContentFrame.Navigate(typeof(DownloadPage));
            DownloadPage.Current.pivot.SelectedIndex = 0;

            var tasks = new List <Task>();

            foreach (var download in downloadList)
            {
                tasks.Add(download.StartAsync());
            }

            try
            {
                await Task.WhenAll(tasks);
            }
            catch (Exception ex)
            {
                var dialog = new ExceptionDialog(ex.Message, xamlRoot);
                await dialog.ShowAsync();
            }
        }