Pagerank Lookup script

with curl

stáhnout snippet
zobrazení: SyntaxHighlighter | GeSHi | Holý text
//PageRank Lookup v1.1 by HM2K (update: 31/01/07) 
//based on an alogorithm found here: http://pagerank.gamesaga.net/ 


//settings: 
$timeout = 4; 
$ua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5'; 


//convert a string to a 32-bit integer 
function StrToNum($Str, $Check, $Magic) { 
  $Int32Unit = 4294967296;  // 2^32 

  $length = strlen($Str); 
  for ($i = 0; $i < $length; $i++) { 
    $Check *= $Magic; 
    if ($Check >= $Int32Unit) { 
      $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit)); 
      $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; 
    } 
    $Check += ord($Str{$i}); 
  } 
  return $Check; 
} 


//genearate a hash for a url 
function HashURL($String) { 
  $Check1 = StrToNum($String, 0x1505, 0x21); 
  $Check2 = StrToNum($String, 0, 0x1003F); 

  $Check1 >>= 2; 
  $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F); 
  $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF); 
  $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF); 

  $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F ); 
  $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 ); 

  return ($T1 | $T2); 
} 


//genearate a checksum for the hash string 
function CheckHash($Hashnum) { 
  $CheckByte = 0; 
  $Flag = 0; 

  $HashStr = sprintf('%u', $Hashnum) ; 
  $length = strlen($HashStr); 

  for ($i = $length - 1;  $i >= 0;  $i --) { 
    $Re = $HashStr{$i}; 
    if (1 === ($Flag % 2)) { 
      $Re += $Re; 
      $Re = (int)($Re / 10) + ($Re % 10); 
    } 
    $CheckByte += $Re; 
    $Flag ++; 
  } 

  $CheckByte %= 10; 
  if (0 !== $CheckByte) { 
    $CheckByte = 10 - $CheckByte; 
    if (1 === ($Flag % 2) ) { 
      if (1 === ($CheckByte % 2)) { 
        $CheckByte += 9; 
      } 
      $CheckByte >>= 1; 
    } 
  } 

  return '7'.$CheckByte.$HashStr; 
} 


//return the pagerank checksum hash 
function getch($url) { 
  return CheckHash(HashURL($url)); 
} 


//return the pagerank figure 
function gtpr($url) { 
  global $ua,$timeout; 
  $googlehost='toolbarqueries.google.com'; 
  $ch = getch($url); 

  $fp = curl_init(); 

  if ($fp) { 

    $get = '/search?client=navclient-auto&ch='.$ch.'&features=Rank&q=info:'.$url; 

    curl_setopt ($fp, CURLOPT_URL, $googlehost.$get); 
    curl_setopt ($fp, CURLOPT_USERAGENT, $ua); 
    curl_setopt ($fp, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt ($fp, CURLOPT_CONNECTTIMEOUT, $timeout); 

    $out = curl_exec ($fp); 
    curl_close ($fp); 

    $data = substr($out, 0, 128); 
    $pos = strpos($data, "Rank_"); 
    if($pos !== false){ 
      $pr=substr($data, $pos + 9); 
      $pr=trim($pr); 
      $pr=str_replace("\n",'',$pr); 
      return $pr; 
    } 
    else return 0; 
  } 
} 


Tagy:
php 113 řádků | 2008-02-04 20:47:36 | air.kadlec@seznam.cz