C# Google Pagerank Hesaplayıcı Yapımı

Google pagerank uygulaması, sitenizin google tarafından oluşturulan kriterlerle değerlendirip, uygulamaya yansıtır. Bu uygulamada bizlerde google’ın algoritmasından yararlanarak programımızı oluşturmaya çalışacağız. Ortaya çıkacakları çok merak ediyor olduğunuzu anlıyorum ve yazımıza geçiyoruz…

Öncelikle projemize aşağıdaki namespaceleri eklememiz gerekiyor:
using System.Net;
using System.IO;
Ardından GP isimli bir sınıf oluşturalım ve aşağıdaki kodlarımızı ekliyelim :
public static class GP
 {
 private static void Mix(ref uint a, ref uint b, ref uint c)
 {
 a -= b;
 a -= c;
 a ^= c >> 13;
 b -= c;
 b -= a;
 b ^= a << 8; c -= a; c -= b; c ^= b >> 13;
 a -= b;
 a -= c;
 a ^= c >> 12;
 b -= c;
 b -= a;
 b ^= a << 16; c -= a; c -= b; c ^= b >> 5;
 a -= b;
 a -= c;
 a ^= c >> 3;
 b -= c;
 b -= a;
 b ^= a << 10; c -= a; c -= b; c ^= b >> 15;
 }
private static string GoogleChecksum(string url)
 {
 uint GoogleMagic = 0xE6359A60;
uint a, b;
 uint c = GoogleMagic;
a = b = 0x9E3779B9;
int k = 0;
 int length = url.Length;
//Algoritma
 while (length >= 12)
 {
 a += (uint)(url[k + 0] + (url[k + 1] <<  8) + (url[k + 2] << 16) + (url[k + 3] << 24));
 b += (uint)(url[k + 4] + (url[k + 5] <<  8) + (url[k + 6] << 16) + (url[k + 7] << 24));
 c += (uint)(url[k + 8] + (url[k + 9] <<  8) + (url[k + 10] << 16) + (url[k + 11] << 24));
Mix(ref a, ref b, ref c);
k += 12;
 length -= 12;
 }
c += (uint)url.Length;
switch (length)
 {
 case 11:
 c += (uint)(url[k + 10] << 24);
 goto case 10;
 case 10:
 c += (uint)(url[k + 9] << 16);
 goto case 9;
 case 9:
 c += (uint)(url[k + 8] << 8);
 goto case 8;
 case 8:
 b += (uint)(url[k + 7] << 24);
 goto case 7;
 case 7:
 b += (uint)(url[k + 6] << 16);
 goto case 6;
 case 6:
 b += (uint)(url[k + 5] << 8);
 goto case 5;
 case 5:
 b += (uint)(url[k + 4]);
 goto case 4;
 case 4:
 a += (uint)(url[k + 3] << 24);
 goto case 3;
 case 3:
 a += (uint)(url[k + 2] << 16);
 goto case 2;
 case 2:
 a += (uint)(url[k + 1] << 8);
 goto case 1;
 case 1:
 a += (uint)(url[k + 0]);
 break;
 default:
 break;
 }
Mix(ref a, ref b, ref c);
return string.Format("6{0}", c);
 }
public static int getPageRank(string url)
 {
 //URL checksum Hesaplama
 string checkSum = GoogleChecksum("info:" + url);
 string file = "http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=" + checkSum + "&features=Rank&q=info:" + url;
try
 {
 //Google'dan PR verilerini alma
 WebRequest request = WebRequest.Create(file);
 WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
 string data = reader.ReadToEnd();
reader.Close();
 response.Close();
//Parse PR from string
 int pageRank = -1;
 if (data.IndexOf(':') != -1)
 {
 data = data.Substring(data.LastIndexOf(':') + 1);
 }
int.TryParse(data, out pageRank);
return pageRank;
 }
 catch (Exception)
 {
 return -1;
 }
 }
 }

Yukarıda yazdığımız methodlar ile Google’dan pagerank bilgilerini almak için gerekli olan işlevleri yazdık. Şimdi ise yapmamız gereken bu textboxımızdan veriyi alarak butona tıklandığı zaman bunu getPageRank methodu ile geri döndürerek sonucu labelda göstermek olucaktır.

Butonumuzun tıklanma olayına gelip aşağıdaki kodumuzu ekliyoruz:
LabelPagerankGoster.Text = (GP.getPageRank(textBox1.Text).ToString());

Evet arkadaşlar şimdi de toplu pagerank hesaplama da yapabilirmiyiz diye aklınızdan geçiyor olabilir.Bunun için de bir yöntem var. Toplu pagerank sorgulamak için yapmanız gereken sadece projenize ne kadar pagerank sorgulatmak istiyorsanız o kadar textbox + label eklemeniz olucaktır. Gerisi zaten kolay 🙂 Nasıl mı bakalım:

LabelPagerankGoster.Text = (GP.getPageRank(textBox1.Text).ToString());
LabelPagerankGoster2.Text = (GP.getPageRank(textBox2.Text).ToString());
LabelPagerankGoster3.Text = (GP.getPageRank(textBox3.Text).ToString());

işte bu kadar 🙂
Soru ve sorunlarınızda yorum bırakmanız yeterli olucaktır. Dilerseniz mailinizide yazın cevabınız mailinize gelsin 🙂
 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir