private void btndownload_Click(object sender, EventArgs e) { /* * Execute the video downloader. * For GUI applications note, that this method runs synchronously. */ try { btndownload.Enabled = false; var ext = video.Resolution.ToString(); if (ext == "0") { ext = ".mp3"; } else { ext = ".Mp4"; } ListViewItem item = list_Items.FindItemWithText(name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString())); if (item != null) { MessageBox.Show("Video Already in downloading", Text, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } // video exists else { // doesn't exist if (File.Exists(Path.Combine(savePath, name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString()) + ext))) { if (MessageBox.Show("File Already exist, Replace?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { File.Delete(Path.Combine(savePath, name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString()) + ext)); int indx = list_Items.Items.Count; list_Items.Items.Add(name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString())); for (int i = 1; i < 6; i++) { list_Items.Items[indx].SubItems.Add(""); } DownloadHelper.downloadFile d = new DownloadHelper.downloadFile(url, Path.Combine(savePath, name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString()) + ext)); ldf.Add(d); Action <int, int, object> act1 = new Action <int, int, object>(delegate(int idx, int sidx, object obj) { list_Items.Invoke(new Action(() => list_Items.Items[idx].SubItems[sidx].Text = obj.ToString())); }); d.eSize += (object s1, string size) => act1.Invoke(indx, 1, size); d.eDownloadedSize += (object s1, string size) => act1.Invoke(indx, 2, size); d.eSpeed += (object s1, string size) => act1.Invoke(indx, 3, size); d.eDownloadState += (object s1, string size) => act1.Invoke(indx, 4, size); } else { btndownload.Enabled = true; btnPause.Enabled = false; } } else { int indx = list_Items.Items.Count; list_Items.Items.Add(name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString())); for (int i = 1; i < 6; i++) { list_Items.Items[indx].SubItems.Add(""); } DownloadHelper.downloadFile d = new DownloadHelper.downloadFile(url, Path.Combine(savePath, name + " " + (video.Resolution == 0 ? ext.Replace(".", "") : video.Resolution.ToString()) + ext)); ldf.Add(d); Action <int, int, object> act1 = new Action <int, int, object>(delegate(int idx, int sidx, object obj) { list_Items.Invoke(new Action(() => list_Items.Items[idx].SubItems[sidx].Text = obj.ToString())); }); d.eSize += (object s1, string size) => act1.Invoke(indx, 1, size); d.eDownloadedSize += (object s1, string size) => act1.Invoke(indx, 2, size); d.eSpeed += (object s1, string size) => act1.Invoke(indx, 3, size); d.eDownloadState += (object s1, string size) => act1.Invoke(indx, 4, size); } } } catch (Exception ex) { MessageBox.Show(ex.Message); btndownload.Enabled = true; btnPause.Enabled = false; } }
public void Download(string link, bool custome, string path, string filename) { try { var ext = TubeDlHelpers.Extention(); string vname = TubeDlHelpers.Combine ? filename : StringHelpers.RemoveIllegalPathCharacters(custome ? filename : TubeDlHelpers.video.Title) + " " + (TubeDlHelpers.video.Resolution == 0 ? "" : TubeDlHelpers.video.Resolution.ToString() + "p") + TubeDlHelpers.Extention(); path_ = (custome ? path : TubeDlHelpers.SavePath); ListViewItem item = list_Items.FindItemWithText(vname); if (item != null) { MessageBox.Show(TubeDlHelpers.video.Resolution == 0 ? "Audio" : "Video" + " already in download list", Text, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } // video exists else { // doesn't exist if (File.Exists(Path.Combine(custome ? path : path_, vname))) { var msg = new MsgBox("\'" + vname + "\' Already exist in " + path_ + "\r\nReplace file in destination ? ", Text, "Replace", "Add duplicate", DialogResult.Yes, DialogResult.No); switch (msg.ShowDialog()) { case DialogResult.Yes: File.Delete(Path.Combine(path_, vname)); break; case DialogResult.No: int count = 0; string added; do { count++; added = "(" + count + ")"; } while (File.Exists(Path.Combine(custome ? path : path_, vname.Replace(ext, " " + added + ext)))); vname = vname.Replace(ext, " " + added + ext); break; } } int indx = list_Items.Items.Count; list_Items.Items.Add(vname); for (int i = 1; i < 7; i++) { list_Items.Items[indx].SubItems.Add(""); } list_Items.Items[indx].SubItems[5].Text = DateTime.Now.ToString(); if (TubeDlHelpers.Combine) { list_Items.Items[indx].SubItems[6].Text = combineid.ToString(); } DownloadHelper.downloadFile d = new DownloadHelper.downloadFile(link, Path.Combine(path_, vname)); TubeDlHelpers.ldf.Add(d); Action <int, int, object> act1 = new Action <int, int, object>(delegate(int idx, int sidx, object obj) { list_Items.Invoke(new Action(() => list_Items.Items[idx].SubItems[sidx].Text = obj.ToString())); }); d.eSize += (object s1, string size) => act1.Invoke(indx, 1, size); d.eDownloadedSize += (object s1, string size) => act1.Invoke(indx, 2, String.Format("{0} ({1})", size, Math.Round((TubeDlHelpers.ldf[indx].DownloadedLength / TubeDlHelpers.filesize) * 100) + "%")); d.eSpeed += (object s1, string size) => act1.Invoke(indx, 3, size); d.eDownloadState += (object s1, string size) => act1.Invoke(indx, 4, size); } } catch (Exception ex) { #if DEBUG MessageBox.Show(ex.Message + "\n" + ex.StackTrace); #endif /// btndownload.Enabled = true; //btnPause.Enabled = false; } }