Список форумов SeoChase SeoChase

 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы  РекламаРеклама   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

как программно выдрать PR

 
Начать новую тему   Ответить на тему    Список форумов SeoChase -> SEO
Предыдущая тема :: Следующая тема  
Автор Сообщение
real life
Дайм


Зарегистрирован: 26.03.2006
Сообщения: 24
Откуда: Russia

СообщениеДобавлено: Пт Июл 07, 2006 12:42 pm    Заголовок сообщения: как программно выдрать PR Ответить с цитатой

скажите, как можно программно выдрать PR любого URL.
те инструменты которые я нашёл не особо юзабельны и состоят в том что показывается картинка для страницы.
может быть есть сервис у гугля, типа API

моя цель - на карте сайта видеть PR каждой страницы сайта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mad Cat
Квоттер


Зарегистрирован: 07.10.2005
Сообщения: 57
Откуда: Киев

СообщениеДобавлено: Пт Июл 07, 2006 2:40 pm    Заголовок сообщения: Ответить с цитатой

Код:
define('GOOGLE_MAGIC', 0xE6359A60);
//unsigned shift right
function zeroFill($a, $b)
{
    $z = hexdec(80000000);
    if ($z & $a)
    {
        $a = ($a>>1);
        $a &= (~$z);
        $a |= 0x40000000;
        $a = ($a>>($b-1));
    }
    else
    {
        $a = ($a>>$b);
    }
    return $a;
}

function mix($a,$b,$c) {
    $a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
    $b -= $c; $b -= $a; $b ^= ($a<<8);
    $c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
    $a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
    $b -= $c; $b -= $a; $b ^= ($a<<16);
    $c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
    $a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
    $b -= $c; $b -= $a; $b ^= ($a<<10);
    $c -= $a; $c -= $b; $c ^= (zeroFill($b,15));

    return array($a,$b,$c);
}

function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
    if(is_null($length)) {
        $length = sizeof($url);
    }
    $a = $b = 0x9E3779B9;
    $c = $init;
    $k = 0;
    $len = $length;
    while($len >= 12) {
        $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
        $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
        $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
        $mix = mix($a,$b,$c);
        $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
        $k += 12;
        $len -= 12;
    }

    $c += $length;
    switch($len) /* all the case statements fall through */
    {
        case 11: $c+=($url[$k+10]<<24);
        case 10: $c+=($url[$k+9]<<16);
        case 9 : $c+=($url[$k+8]<<8);
        /* the first byte of c is reserved for the length */
        case 8 : $b+=($url[$k+7]<<24);
        case 7 : $b+=($url[$k+6]<<16);
        case 6 : $b+=($url[$k+5]<<8);
        case 5 : $b+=($url[$k+4]);
        case 4 : $a+=($url[$k+3]<<24);
        case 3 : $a+=($url[$k+2]<<16);
        case 2 : $a+=($url[$k+1]<<8);
        case 1 : $a+=($url[$k+0]);
        /* case 0: nothing left to add */
    }
    $mix = mix($a,$b,$c);
    /*-------------------------------------------- report the result */
    return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {
    for($i=0;$i<strlen($string);$i++) {
        $result[$i] = ord($string{$i});
    }
    return $result;
}

function get_pr($url) {
    $result=array("",-1);

    if (($url.""!="")&&($url.""!="http://")):
    // check for protocol
    if (substr(strtolower($url),0,7)!="http://"):
    $url="http://".$url;
    endif;

    $url="info:".$url;
    $checksum=GoogleCH(strord($url));
    $google_url=sprintf("http://www.google.com/search?client=navclient-auto&ch=6%u&features=Rank&q=".$url,$checksum); // url to get from google

    $contents="";

    $handle = fopen($google_url, "rb");
    $contents = '';
    while (!feof($handle)) {
        $contents.= fread($handle, 8192);
    }
    fclose($handle);
    $p=explode(":",$contents);
    if (isset($p[2])):
    $result[1]=$p[2];
    endif;
    endif;

    return $result;
}

function getPR_url($url)
{
    global $db;

    if (eregi('^http://www.',$url)) {
        $url_www = str_replace('http://www.','http://',$url);
    } else {
        $url_www = str_replace('http://','http://www.',$url);
    }

    $pr=get_pr($url);
    $output=$pr[0];
    $pagerank=$pr[1];
    sleep(1);
    $pr=get_pr($url_www);
    $output_www=$pr[0];
    $pagerank_www=$pr[1];

    if ($pagerank<$pagerank_www) {
        $pagerank=$pagerank_www;
    }
    if ($pagerank==-1) {
        $pagerank=0;
    }
    return intval($pagerank);
}

    $pr = getPR_url($_POST['url']);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
real life
Дайм


Зарегистрирован: 26.03.2006
Сообщения: 24
Откуда: Russia

СообщениеДобавлено: Пт Июл 07, 2006 2:44 pm    Заголовок сообщения: Ответить с цитатой

отлично спасибо

а это официальный вариант от гугль?
с чем связана такая сложность?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alien
Никель


Зарегистрирован: 22.06.2004
Сообщения: 6

СообщениеДобавлено: Пт Июл 07, 2006 3:50 pm    Заголовок сообщения: Ответить с цитатой

Официальный вариант от гугла - только в тулбаре Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов SeoChase -> SEO Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group