using System;
   using System.Collections.Generic;
   using System.ComponentModel;
   using System.Data;
   using System.Diagnostics;
   using System.Drawing;
   using System.Linq;
   using System.Net;
   using System.Text;
   using System.Windows.Forms;
  namespace youtubemp3convert
  {
     public partial class Form1 : Form
     {
        public Form1()
        {
        InitializeComponent();
    }
    bool durum = false;

    WebBrowser web = new WebBrowser();
    private void button1_Click_1(object sender, EventArgs e)
    {
           web.Document.GetElementById("youtube-url").SetAttribute("value", textBox1.Text);

    web.Document.GetElementById("submit").InvokeMember("click");

    durum = true;

              }
    string dosyadi = "";
    void Download(string link)
    {
        SaveFileDialog kaydet = new SaveFileDialog();
        kaydet.Filter = "MP3 Dosyası (*.mp3) |*.mp3";
        if (kaydet.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            dosyadi = kaydet.FileName;
            WebClient download = new WebClient();
            download.DownloadFileAsync(new Uri(link),dosyadi);
            download.DownloadProgressChanged += download_DownloadProgressChanged;
            download.DownloadFileCompleted += download_DownloadFileCompleted;
        }
    }

    void download_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        progressBar1.Value = e.ProgressPercentage;
    }

    void download_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        Process.Start(dosyadi);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        web.ScriptErrorsSuppressed = true;
        web.Navigate("http://www.youtube-mp3.org/tr");
        web.DocumentCompleted += web_DocumentCompleted;
    }
    string link = "";
    void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (durum)
        {
            HtmlElementCollection col = web.Document.GetElementsByTagName("a");
            foreach (HtmlElement el in col)
            {
                if (el.InnerText == "Download")
                {
                    link = el.GetAttribute("href");
                    Download(link);
                }
            }
            durum = false;
        }
    }

}

}

BU KODDA BUTTON A BASINCA İKİ UCKERE NEREYE KAYDETCENİ SORUYO SUREKLİ Bİ KAC SORUSTAN SONRA KAYDEDİYOR NERDE HATA YAPİYORUM LUTFEN YARDIM

soruldu: 06 Haz '15, 06:53

engineers's gravatar image

engineers
356517091
cevap kabul oranı: 23%

değiştirildi: 06 Haz '15, 11:37


Paylaşmış olduğun kod üzerinde bazı geliştirmeler yaparak son halini aşağıda paylaşıyorum.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Windows.Forms;
namespace youtubemp3convert
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        CalismaDurumu _calismadurum = CalismaDurumu.IlkAcilis;

        private WebBrowser _webBrowser = null;

        private string _dosyadi = "";

        private int _calisma = 0;

        void Download(string link)
        {
            var kaydet = new SaveFileDialog {Filter = "MP3 Dosyası (*.mp3) |*.mp3"};
            if (kaydet.ShowDialog() == DialogResult.OK)
            {
                _dosyadi = kaydet.FileName;
                var download = new WebClient();
                download.DownloadFileAsync(new Uri(link), _dosyadi);
                download.DownloadProgressChanged += download_DownloadProgressChanged;
                download.DownloadFileCompleted += download_DownloadFileCompleted;
            }
        }

        void download_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        void download_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            listBox1.Items.Add("Download tamamlandı");
            listBox1.Items.Add("-----------------------------------");
            SiteyeGirisYap();
            Process.Start(_dosyadi);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SiteyeGirisYap();
        }

        public void SiteyeGirisYap()
        {
            _calisma = 0;
            progressBar1.Value = 0;
            _webBrowser = new WebBrowser();
            _calismadurum = CalismaDurumu.IlkAcilis;
            _webBrowser.ScriptErrorsSuppressed = true;
            _webBrowser.Navigate("http://www.youtube-mp3.org/tr");
            _webBrowser.DocumentCompleted += web_DocumentCompleted;
        }

        void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            _calisma++;

            if (_calismadurum == CalismaDurumu.IlkAcilis)
            {
                if (_calisma == 6) //6 farklı request oluştuğu için en son requesti bekliyorum
                {
                    listBox1.Items.Add("Dönüştürme için hazır. Video Url' sini yazınız.");
                }
            }

            else if (_calismadurum == CalismaDurumu.Donusturme)
            {
                if (_calisma == 6) //6 farklı request oluştuğu için en son requesti bekliyorum
                {
                    var links = new List<HtmlElement>(_webBrowser.Document.GetElementsByTagName("a")
                                                       .Cast<HtmlElement>());

                    var linkDownload = links.FirstOrDefault(x => x.InnerText == "Download" && x.GetAttribute("href").Contains("ts_create"));
                    if (linkDownload != null)
                    {
                        listBox1.Items.Add("Download Başladı");
                        string downloadUrl = linkDownload.GetAttribute("href");
                        Download(downloadUrl);
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DonusturmeyiBaslat();
        }

        public void DonusturmeyiBaslat()
        {
            _calisma = 0;
            _calismadurum = CalismaDurumu.Donusturme;
            _webBrowser.Document.GetElementById("youtube-url").SetAttribute("value", textBox1.Text);
            _webBrowser.Document.GetElementById("submit").InvokeMember("click");
        }

    }

    public enum CalismaDurumu
    {
        IlkAcilis,
        Donusturme,
        Indirme
    }
}

İyi çalışmalar

permanent link

cevaplandı: 07 Haz '15, 06:07

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

Emegine saglik guzelce calısıyor. Cok Tesekkurler

(07 Haz '15, 06:27) engineers engineers's gravatar image

alt text

yukarıdaki ekran resminden de göreceğin gibi butona tıklandığında submit yaparken 3 ayrı request oluşuyor. Dolayısı ile birden fazla kez document complete tetikleniyor.

permanent link

cevaplandı: 06 Haz '15, 14:50

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

nasıl cözebilirim?

(07 Haz '15, 04:36) engineers engineers's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238

Soruldu: 06 Haz '15, 06:53

Görüntüleme: 605 kez

Son güncelleme: 07 Haz '15, 06:27

powered by BitNami OSQA