示例#1
0
文件: Main.cs 项目: RashanH/TubeDl
        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;
            }
        }
示例#2
0
文件: frmMain.cs 项目: unkdvt/TubeDl
        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;
            }
        }