Anahtar Linkimiz: http://gdata.youtube.com/feeds/api/users/username/favorites
Username kısmına youtube kullanıcı adınızı yazıyorsunuz ve bu link sizi kod tabanlı olarak favori videolarınıza ulaştırıyor. Kodu incelerseniz youtube video linklerini, ve listede bulunacak videoların thumbnail imaj linklerini görebilirsiniz.
İşin güzel tarafı youtube’a login olma gibi bir gerekliliğinizin olmaması.
Projeye dahil edilecek referanslar;
using System.IO; using System.Net;
Yukarıdaki linki internetten çekip C#’ta işlememiz için, veriyi web’ten request edip, bir veri akışıyla alıp, daha sonrada bir reader nesnesine yerleştireceğiz. En sonunda da bu veriyi string’e atıp üstünde çalışacağız. Bunu her seferinde adım adım yapmaktansa bir fonksiyona yerleştiriyorum.
public string DownloadWebPage(string Url) { // Bağlantıyı Aç HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(Url); // Sunucudan cevap iste WebResponse Response = WebRequestObject.GetResponse(); // Veri akışı yarat Stream WebStream = Response.GetResponseStream(); StreamReader Reader = new StreamReader(WebStream); string PageContent = Reader.ReadToEnd(); // Tuvaletin ışığını kapat Reader.Close(); WebStream.Close(); Response.Close(); return PageContent; }
Diğer ayrıntılara dalmadan önce pencere tasarımını anlamak lazım.
Bütün olay sayfa’nın load olayında oluyor bitiyor. Direk kodu yapıştırıyorum;
private void youtube_Load(object sender, EventArgs e) { int index = 0; string id = ""; string icerik = DownloadWebPage("http://gdata.youtube.com/feeds/api/users/KULLANICIADI/favorites"); for (int k = 0; k < 7; k++) { try { int baslangic = icerik.IndexOf(@"<media:player url='http://www.youtube.com/watch?v=", index); index = baslangic; int bitis = icerik.IndexOf(@"&feature=youtube_gdata", index); index = bitis; id = icerik.Substring(baslangic + 50, bitis - baslangic - 50); listBox1.Items.Add(id); } catch { } } WebClient indir = new WebClient(); for (int k = 0; k < listBox1.Items.Count; k++) { indir.DownloadFile("http://i.ytimg.com/vi/" + listBox1.Items[k] + "/0.jpg", k+".jpg"); if (k == 0 && k < listBox1.Items.Count) { button1.BackgroundImage = Image.FromFile(k + ".jpg"); button1.Enabled = true; } if (k == 1 && k < listBox1.Items.Count) { button2.BackgroundImage = Image.FromFile(k + ".jpg"); button2.Enabled = true; } if (k == 2 && k < listBox1.Items.Count) { button3.BackgroundImage = Image.FromFile(k + ".jpg"); button3.Enabled = true; } if (k == 3 && k < listBox1.Items.Count) { button4.BackgroundImage = Image.FromFile(k + ".jpg"); button4.Enabled = true; } if (k == 4 && k < listBox1.Items.Count) { button5.BackgroundImage = Image.FromFile(k + ".jpg"); button5.Enabled = true; } } }
Üst kısımda downloadwebpage fonksiyonuyla favori video sayfasının içeriğini olduğu gibi stream’e alıyoruz. Ardından da biraz deneme yanılmayla link id’lerini alıyorum. video id’sini alırsam gerisi kolay. O yüzden tek amacım video id’sini almak. Yukarıda da tek yaptığım video id’sini almak, aldığım video id’ye göre listbox’ı bu id’lerle doldurmak, ve butonların arkaplanınıda bu video id’lerinin thumbnail’leriyle doldurmak.
Bir videonun id’sini biliyorsak, ki diyelim ki bu videonun id’si 1234567 olsun. O videonun 90×45 mi ne thumbnail resmini almak istiyorsanız linki şudur; http://i.ytimg.com/vi/1234567/0.jpg
Eğer büyük boy resmini istiyorsanız o da; http://i.ytimg.com/vi/1234567/1.jpg
private void listBox1_Click(object sender, EventArgs e) { webBrowser1.Navigate("http://www.youtube.com/embed/" + listBox1.SelectedItem.ToString()); }
Butonun arkaplanını thumbnail resmiyle doldurduk. Şimdi de sıra ona tıklayınca webbrowser kontrolden ilgili linke yönlendirip video oynatabilmemizi sağlayacak senaryoya geldi. İşte o da yukarıda yazdığım kodla oluyor. Video id’sini bildiğiniz videoyu sağda solda reklamlarından oyundan şuyudun buyundan arınmış bir şekilde oynatmanın en güzel yolu embed özelliğini kullanmak. Her videonun embed linki şudur ki ;
Bu arada yukarıda anlatmadığım bir ayrıntı var, basitçe söyleyeyim, web’ten linkini bildiğiniz resmi takatanak buton komponentinin arkaplanı olarak ayarlayamıyoruz. O yüzden önce imajı internetten indiriyorum sonra local’de bir klasöre koyuyorum sonra da isimlendirdikten sonra direk local ismiyle kullanıyorum. Kodu incelerseniz durum kolaylıkla farkedilir.
Youtube API falan kullanmadan, kullanıcı authentication’ı webpostu mostu kullanmadan basit ama etkili bir favori video izleyicisi.
Linux Timezone değiştirme işlemini komut satırından kolaylıkla yapabilirsiniz. Tüm bölgeler için timezone bilgileri /usr/share/zoneinfo/ altında saklanır. /etc/localtime ise zoneinfo altındaki… Read More
Avaya SAL Gateway (Secure Access Link), Avaya tarafından ürünlerine uzaktan destek vermek için kullanılan bir uzak bağlantı çözümü. Read More
Ping, işletim sisteminden bağımsız en çok kullandığımız komutlardan biri. Ağ erişim problemlerinde sorunu izole etmeden tutun da bir cihazın çalışıp… Read More
Haberleşme birden fazla paydaş gerektirir ve tıpkı bir orkestra gibi uyumlu olması şarttır. Nasıl müzikte bas gitar davul "kick"iyle uyumlu… Read More
Bilgi işlem sektöründeyseniz özellikle gün içinde bir çok farklı Linux/Unix sunucuya erişiminiz varsa şifre hatırlamak, bunları saklamak, hem zulüm hem… Read More
View Comments