private void downloadBtn_Click(object sender, EventArgs e) { try { if (pathTxt.Text.Equals("") || pathTxt.Text == null) throw new Exception("Path is not Valid!"); if(!Path.IsPathRooted(pathTxt.Text)) throw new Exception("Path is not Valid!"); string [] lst = PageParser.ParsePagesList(urlTxt.Text); Doujin doujin = new Doujin(PageParser.ParseDoujinName(urlTxt.Text)); string directory = Path.Combine(pathTxt.Text,doujin.Name); doujin.DownloadPath = directory; int i = 0; foreach (var url in lst) { string pageName = PageParser.ParsePageIndexName(i, lst.Length, url); DoujinPage page = new DoujinPage(pageName, url); doujin.AddPage(page); i++; } Directory.CreateDirectory(directory); DownloadForm downloader = new DownloadForm(doujin); downloader.ShowDialog(); } catch(Exception ex) { MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK); } }
public DownloadForm(Doujin d) { InitializeComponent(); this.doujin = d; this.Text = "Downloading - " + doujin.Name; this.PageName.Text = d.PageList.First().Name; PageDownloader.webClient.DownloadProgressChanged += (s, e) => { this.DownloadProgressBar.Value = e.ProgressPercentage; }; PageDownloader.webClient.DownloadFileCompleted += (s, e) => { this.PageName.Text = PageDownloader.CurrentPage; }; PageDownloader.OnDoujinDownloadFinished += (s, e) => { MessageBox.Show("Finished downloading: " + d.Name); this.Dispose(); }; }
public async static void DownloadDoujin(Doujin doujin) { List<DoujinPage> pages = doujin.PageList; webClient.DownloadFileCompleted += (s, e) => { webClient.Dispose(); }; try { foreach (var p in pages) { CurrentPage = p.Name; Uri url = new Uri(p.Url, UriKind.Absolute); await webClient.DownloadFileTaskAsync(url, Path.Combine(doujin.DownloadPath, p.Name)); } CurrentPage = null; DownloadFinished(); } catch (Exception e) { e.ToString(); } }