Merhaba arkadaşlar youtube üzerinden video klip izlerken beğendiğim bir şarkıyı mp3 olarak indirmek istemem bu programı yapmaya itti beni youtube’deki videoları mp3 formatında nasıl indirebilirim diye küçük bir araştırmadan sonra flv2mp3.com sitesini buldum sitenin girişinde youtube deki video url bilgisini yazdığınız zaman size mp3 formatında veriyor.Peki bunu çok ta karmaşıklaştırmadan nasıl yapabiliriz bir bakalım.Benim çözümüm şu oldu o web sayfasını c# ‘ta web browserde açtım gerekli url bilgisini textBox’tan aldım otomatik atadım ve ileri tuşunada kod yardımı ile bastım ve sayfa verdiğim url ile yüklenince tabiki o url deki video dosyasını alıp mp3 formatına çevirdi ve indirmemize izin verdi.Bir nevi download ve convert işlemlerini biz yapmamış siteye yaptırmış oluyoruz böylelikle.Şimdi kod kısmına bakalım , ilk olarak form tasarımımızı yapalım.
2 tane Timer , 1 tane NotifyIcon ve 1 tane de ContextMenuStrip kullanıyoruz formumuza bu kontrolleri ekledikten sonra using kısmımızı yazalım.
Program içerisinde kullanacağımız global değişkenlerimizi tanımlayalım.
Formumuzdaki buton ‘ un adını btnIndir , textBox ‘ ın adınıda txtUrl olarak değiştiriyoruz.Daha sonra butonumuzun altındaki kodlara bakalım.
Butona ilk basıldığı anda url bilgisini alacağımız txtUrl kontrolü yapıyoruz eğer url yazıldı ise butonumuzu basılamaz hale getiriyoruz daha sonra global olarak tanımladığım WebBrowser nesnesinde Navigate method’u ile flv2mp3.com sitesini açtırıyoruz daha sonra bu nesnenin DocumentCompleted event’ini tetikliyoruz buradaki amacımız sayfa yüklenirken üzerindeki kontrollere ulaşabilmek birazdan nasıl ulaşıldığınada bakıcaz. Son olarakta timer2 nesnemizin Interval özelliğini ayarlıyıp başlatıyoruz.WebBrowser nesnesinin DocumentCompleted eventinde sayfa yüklenirkenki tüm kontrollere ulaşılabilir ve id ‘ sine veya name özelliklerine göre değerler okunabilir veya yeni değerler atanabilir.Bizde bu event’e gidelim ve sayfa yüklenirken sayfadaki textBox ‘a kendi txtUrl ‘ den aldığımız url bilgisini yazdıralım.
Burada ilk olarak try – catch yapısını kullanıyoruz ki herhangi beklenmedik bir hatayı yakalayabilelim sonraki if yapısı bu event sayfa yüklenirken birden fazla tetiklendiği için aynı kod’un tekrar tekrar çalışmaması için, burada en önemli kısım hemen bir alt satırdaki link_url id li sayfada bulunan değişkene değeri nasıl atadığımızdır.O an yüklenen sayfada bulunan kontrolün eğer id’sini biliyorsak yukarıdaki gibi ona değer atayabiliriz GetElementById içindeki yazan kısım yüklenen sayfadaki kontrolümüzün id ‘si , SetAttribute kısmındaki ilk parametre kontrolün değer kısmı 2. parametre ise bizim atama yapacagımız değer biz de bu değeri txtUrl ‘ den alıyoruz.Web sayfalarındaki kontrollerin id bilgilerine nasıl ulaşabiliriz ona bakalım ilk olarak chrome tarayıcısında flv2mp3.com sitesini açalım ve sayfaya sağ tıklayıp ögeyi denetle diyelim ve resimdeki yolları izleyelim
Burada yapmamız gereken alt kısımda açılan bölümdeki div ler üzerinde gezerek istediğimiz kontrolün olduğu div ‘ i bulmak sırası ile div ‘ ler arasında gezinelim ve textBox ‘ ın id sine ulaşalım.
Div ‘ leri sırası ile açarak sayfadaki textBox ‘ın ıd sine ulaştık textBox’ın id si link_url.Bu id ‘ li kontrolün text ‘ ine değer ataması yapıyoruz.Sayfadaki tüm kontrollerin id bilgileri bu şekilde alınabilir.Şu an sayfadaki textBox ‘ımıza elimizdek, istediğimiz url bilgisini atadık şimdi sayfadaki buton’ a basmamız lazımki sayfa işlem yapmaya başlasın bunun içinde BtnIndir buton’una bastığımız zaman timer2 nesnemizide tetiklemiştik şimdi oradaki kodlarımzı yazalım.
Sayfa işlem yaparken tekrar tekrar butona basılmasın diye buton’un Enabled özelliği false durumda ve text ‘ide 60 dan geriye sayıyor böylelikle dosyanın indirilme işleminin gerçekleştirildiği anlaşılıyor saniye değişkeni 0 değerine ulaşınca timer2 nesnemizin saymasını durdurmak için Stop method’unu çağırıyoruz ve saniyeyi tekrardan 60 ‘ a atıyoruz.WebBrowser ‘ in DocumentCompleted eventinde timer1 nesnemizi tetiklemiştik buradaki amaç ise sayfa yüklenirken textBox ‘ ına istediğimiz değeri yazdıktan sonra otomatik olarak ileri butonuna basılmasıdır peki bunu nasıl yapıyoruz şimdide ona baklım.
TextBox ‘ a değer atadığımzı gibi aynı şekilde buton’ un id ‘ sine ulaşıyoruz ve bu sefer kod biraz değişiyor butona basma olayını InvokeMember ile yapıyoruz butona basıp sayfaya ileri dedikten sonra timer1 ‘ i durduruyoruz.Şimdiye kadar olan kısımları program sorunsuz geçtiği zaman web sayfası sizin verdiğiniz url deki youtube videosunu alıp mp3 formatına çevirip indirmeniz için ekrana kaydetme formunu açacaktır.Programı biraz daha kullanışlı hale getirebilmek adına notifyIcon kullanalım.Formumuza eklediğimiz contextMenuStript in yazılarını ayarlıyalım bu nesneye tıkalyınca a.ılan yapıyı şu şekilde düzenleyelim.
Etkin ve Çıkış kısımları yapalım bunlar programımız altta çalışırken sağ tıkladığımız zaman görünecek kısımlar olacaktır.Daha sonra Etkin kısmına çift tıklayalım ve kodumuzu yazalım
Üst kısımda Etkin kısmının kodu alt kısımda ise Çıkış kısmının kodları var.Bu tek satırlık kodlardan sonra bu contextMenuStript’i notifyIcon ‘ a ekleyelim.NotifyIcon ‘ ın ContextMenuStript özelliğinde ayarladığımız contextMenuStript’i gösterelim.Genel olarak notifyIcon ‘ ın özellikleri şu şekilde olacaktır.
Icon dosyası programımız çalışırken gözükücektir.Formumuzu küçülttüğümüz zaman notifyIcon’ ın çıkması için formumuzun SizeChanged event’inde şu kodları yazalım.
Formumuz küçültüldü ise notifyIcon ‘ın ShowBalloonTip ‘ini kullanıyoruz ve milisaniye cinsinden değer atıyoruz buradaki değer formumuzu alta aldığımız zaman çıkacak olan balonun ne kadar ekranda kalacağını ayarlıyor.Gerekli tüm ayarları yaptık şimdi programı çalıştıralım ve sonuca bakalım.İlk olarak youtube ‘den tarkanın sevdanın son vuruşu şarkısını açtım ve url ‘ ini programa kopyaladım ve indir butonuna bastım
Butona bastıktan sonra saniye geriye doğru saymaya başladı bu arada programı alta alalım ve notifyIcon ‘ a bakalım
Programı alta alınca bilgilendirme balon’u açıldı 1000 milisaniye kalıcak ekranda daha sonra programı tekrar aktif yapmak istersek icon ‘ un üzerinde sağ tıklarsak şu görüntüyü alırız.
Burada çıkış buton’una bastığımız zaman program kendini kapatacaktır Etkin buton’una tıklayınca program tekrardan etkin olarak ekrana gelecektir.Bu arada indir buton’una bastıktan sonra programı alta alsanız dahi arka tarafta program indirme işlemini yapacaktır.Şimdi son olarak tarkan’ın şarkısını indirelim bilgisayarımıza mp3 olarak.
Kaynak Dosyaları Buradan İndirebilirsiniz
çok işime yaradı . Çok teşekkür ederim. Bi sorum olucak bunun loglama olayını nasıl yapabilirim . örneğin : şu tarihte şu kadar sürede indirildi falan gibi
Link | Nisan 7th, 2012 at 18:50
Merhaba ,
İndirmeleri kayıt altına almak isterseniz Stopwatch sınıfından indirme zamanını DateTime sınıfındanda tarih bilgisini alarak veri tabanınıza kaydedebilirsiniz
İyi çalışmalar
Link | Nisan 7th, 2012 at 19:18
çalışmıyo bu program :S
Link | Mayıs 10th, 2012 at 00:08
Merhaba
Benim denediğim 3 videoda çalışıyordu, belki siz kaynak kodları indirip elden geçirerek daha iyisini yapabilirsiniz
Kolay gelsin
Link | Mayıs 10th, 2012 at 05:17
dalga mı gecıosun arkadasım bu ne şimdi başka sıte ustunden zaten ındırmek en kolay bas web browserı tıklat vs :
mp3 olarak cevirme byte uzerınden bu konularla alakalı bısıler yazarsan daha ıyı olacaktır yoksa baskasının sıtesını kullanıp ındırme programı yaptım dıe ortada gezene mal derler
Link | Mayıs 14th, 2012 at 22:33
Link | Mayıs 15th, 2012 at 05:23
indirdiğimiz dosyalar nereye kaydediliyor
Link | Mayıs 21st, 2012 at 15:17
Browser’ınız hangi dosyaya kaydediyor ise oraya kaydetmesi lazım uygulamanında.Genellikle Downloads klasör’ü seçili olur.
Link | Mayıs 21st, 2012 at 23:28
s.a hocam benim ufak bir sualim olucaktı ben youtubenin arama motorunu kullanmak istiyorum ve videoları program arayüzümde göstermek istiyorum bu nasıl mümkün acaba
Link | Mart 10th, 2013 at 21:19
Merhaba,
Bu linkte google ‘ın hazırladığı youtube api si mevcut bu döküman ile yapabilirsiniz
https://developers.google.com/youtube/2.0/developers_guide_protocol
İyi çalışmalar
Link | Mart 11th, 2013 at 12:48
selamlar. ben indirmek için çalıştırdım fakat saniye sayıyor sonuna kadar kaydetmiyo neden ?
Link | Mart 13th, 2013 at 21:04