PDA

View Full Version : Отображение тИЦ сайтов в каталоге


rivlex
02-10-2008, 05:54 PM
Возможно ли в eSyndiCat сделать отображение и упорядочивание по тИЦ (индекс цитирования Яндекса) сайтов?

mgarkunov
02-11-2008, 06:42 PM
rivlex, вряд эта функция появится в eSyndiCat, так как тИЦ не в ходу на западе.
Можно попробовать самому забирать тИЦ через xml (адрес можно подсмотреть у SeoQuake, я не помню.)

Sergey Ten
02-12-2008, 04:06 AM
Привет,

Я почитал про тИЦ, это яндексовский аналог ПР :) даже алгоритм подсчета немного похож.

Попробую заинтегрить его в скрипт. :)

Vologdarest
02-12-2008, 09:52 AM
Привет,

Я почитал про тИЦ, это яндексовский аналог ПР :) даже алгоритм подсчета немного похож.

Попробую заинтегрить его в скрипт. :)

Было бы совсем не лишним, для русскоязычных пользователей скрипта. Важная функция, на которую многие обращают внимание.
Удачи.

Vologdarest
02-20-2008, 06:56 PM
Привет,

Вот примерно готовый рабочий код для определения ТиЦ, может его можно встроить в каталог?
КОД:

function get_yandex_tic($url, $proxy = '')
{
if ($url{strlen($url) - 1} == '/' || $url{strlen($url) - 1} == '\\')
$url = substr($url, 0, -1);

if (preg_match('/^www\./is', $url))
$url2 = $url . ',' . substr($url, 4);
else
$url2 = 'www.' . $url . ',' . $url;

$yandex_url = '/yca/cy/ch/' . $url . '/';

$host = 'search.yaca.yandex.ru';
$result = '';
if ($proxy == '')
{
$fp = @fsockopen($host, 80, $errno, $errstr, 20);
if ($fp)
{
$out = '';
$out .= "GET $yandex_url HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-icq, application/x-shockwave-flash, */*\r\n";
$out .= "Accept-Language: ru\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
$result .= fgets($fp, 1024);

fclose($fp);
}
}
else
{
preg_match('/^(?:http\:\/\/)?(.+)\:(\d{0,5})$/is', $proxy, $arr);
$ip = $arr[1];
$port = $arr[2];

$fp = @fsockopen($ip, $port, $errno, $errstr, 20);
if ($fp)
{
$out = '';
$out .= "GET http://$host$yandex_url HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-icq, application/x-shockwave-flash, */*\r\n";
$out .= "Accept-Language: ru\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
$result .= fgets($fp, 1024);

fclose($fp);
}
}

if (preg_match('/индекс цитирования (?:www\.)?(.+?)\s\<\/TITLE\>/is', $result, $arr))
$url2 = 'www.' . $arr[1] . ',' . $arr[1];

//фильтруем спец. символы preg_*
$url2 = preg_replace('/([^\w\d]|_)/is', '\\\\\\1', $url2);

if (preg_match("/$url2\&.+?\>(\d+)\<\/a\>/is", $result, $arr))
return intval(@$arr[1]);
else if (preg_match('/Индекс цитирования \(тИЦ\) ресурса..?меньше 10/is', $result))
return 0;
else
return '-';
}

function yandex_tic($url, $proxy = '')
{
if (!is_array($url))
$url = array($url);

$tic_arr = array();

foreach ($url as $key => $val)
{
if (preg_match('/^http\:\/\//is', $val))
$val = substr($val, 7);

$url_www = $val;
if (preg_match('/^www\./is', $val))
$val = str_replace('www.', '', $val);
else
$url_www = 'www.' . $val;

$tic = get_yandex_tic($val, $proxy);

$tic_www = get_yandex_tic($url_www, $proxy);

if ($tic_www > $tic)
$tic_arr[] = $tic_www;
else
$tic_arr[] = $tic;
}
rsort($tic_arr, SORT_NUMERIC);
return $tic_arr[0];
}

Было бы неплохо.. ))

Sergey Ten
02-21-2008, 11:18 AM
Vologdarest,

Спасибо за код. Я взгляну на него :)