open source Пингатор.

Я полагаю все читали про Модуль привязки LS к Яндекс-блогам. Пингатор.

Что там в этом модуле не знаю, но судя по описанию желанный модуль многими. Я тоже хотел бы такой модуль, вот только незадача дороговато для Меня он стоит.(Не будим разводить холивар на тему почему для Меня это дорого)

Я нашёл обсуждения автоматической отправки пингов на многих сайтах в интернете. И решил немного обобщить и поразмышлять вместе с присоединившимися что и как сделать в свободном пилингаторе для LS.

Первое это отправка пингов:


По мнению AKela вот простейший способ их отправки

$siteName = $oTopic->getBlogTitle();          
          $siteURL  = $oTopic->getBlogUrlFull();                              
          $feedURL  = $oTopic->getBlogRssURL();
          $pageURL  = $oTopic->getUrl();                    
                    
          echo $siteName.' - '.$pageURL.' - ';                              
          /**Яндекс.Блоги*/
          $pingClient = new IXR_Client('ping.blogs.yandex.ru', '/RPC2');          
          if($pingClient->query('weblogUpdates.ping', $siteName, $siteURL, $pageURL)){
               echo 'пропинговали Яндекс! ';
          }
          else{
               echo 'не пропинговали Яндекс  ';
          }          
          
          /**Google*/
          $pingClient = new IXR_Client('blogsearch.google.com', '/ping/RPC2');          
          if($pingClient->query('weblogUpdates.extendedPing', $siteName, $siteURL, $pageURL, $feedURL)){
               echo 'пропинговали Гугл! ';
          }
          else{
               echo 'не пропинговали Гугл  ';
          }
          echo '
';


Далее Я нашёл усовершенствованный способ от jurius

Закинул вот такую функцию в конец файла include/function.php:

function ping ($url, $blogname, $blogurl) {
    $tb_send='<?xml version="1.0" encoding="utf-8"?>
<methodCall>
    <methodName>weblogUpdates.ping</methodName>
<params>
<param>
            <value>'.$blogname.'</value>
        </param>
<param>
            <value>'.$blogurl.'</value>
        </param>
    </params>
</methodCall>';
 
    $target=parse_url($url);
 
    $tb_sock = fsockopen($target["host"],  80);
    fputs($tb_sock, "POST ". $target["path"]. $target["query"]. " HTTP/1.1\r\n");
    fputs($tb_sock, "User-Agent: The Incutio XML-RPC PHP Library (multicall client)\r\n");
    fputs($tb_sock, "Host: ". $target["host"]. "\r\n");
    fputs($tb_sock, "Content-Type: text/xml\r\n");
    fputs($tb_sock, "Content-length: ". strlen($tb_send). "\r\n");
    fputs($tb_sock, "Connection: close\r\n\r\n");
    fputs($tb_sock, $tb_send);
    // Gather result
    while (!feof($tb_sock)) {
        $response .= fgets($tb_sock, 128);
    }
    // Close socket
    fclose($tb_sock);
    // Did the trackback ping work
    strpos($response, '<error>0</error>')? $return = true: $return = false;
    // send result
    return $return;
}


Дописываем в Topic.entity.class.php:

public function getRssUrl() {
                if ($this->getBlogType()=='personal') {
                return DIR_WEB_ROOT.'/rss/log/'.$this->getUserLogin().'/';
        } else {
                return DIR_WEB_ROOT.'/rss/blog/'.$this->getBlogUrl().'/';
        }
        }

В файле classes/modules/Topic/Topic.class.php дописал в методы AddTopic и UpdateTopic:
ping ("ping.blogs.yandex.ru/RPC2", $oTopic->getUserLogin(),$oTopic->getRssUrl()); 

В первом случае отправляется ссылка на rss блога при добавлении новой статьи в этот блог. Во втором случае ссылка на блог, но как Я понял ссылку лучше отправлять на rss блога.

Второе rss для Яндекс-блогов.

Стандартные rss не очень подходят к требованиям Яндекс-блогов.

Тогда возникает вопрос какие rss и как надо создать для Яндекс-блогов. Я пока узнал про следующие:

rss для блогов site.ru/rss/ping/blog/name (содержимое пока не ясно)
rss для пользователей site.ru/rss/ping/user/name (содержимое пока не ясно)
rss для коментариев site.ru/rss/ping/comments (содержимое пока не ясно)

Какие ещё rss надо отправлять и как их оформить на ваш взгляд.

Третье как отправлять все пинги.


Как отправить пинг при добавлении статьи мы видели пример выше. Для комментариев думаю аналогично. Как сделать для пользователей не знаю.

Обобщение


Предлагаю обсудить как это всё сделать. Скармливать Яндексу новые статьи в блогах, новые комментарии в статьях. Так чтобы это всё появлялось в Яндекс-блогах.
______________________________________________
Благодарю за внимание, с уважением Finist

Внимание Мы продолжаем тут. Плагин свободный появился!
Не работает с «Nice URL»

5 комментариев

avatar
Насчёт пинга гугла то можно feedburner подключить там автоматам пингуется, вот с яшей проблема… я не очень в php но может как-то можно написать скрипт который будет работать на crone, раз в сутки брать rss или как-то по другому и пиноговать новы посты…
avatar
Скрипт, примерный есть выше. Как Я понял надо в пинг отправлять ссылки на rss блогов и комментариев. К сожалению Я тоже не мастер программирования.
Я пока сделал отдельную rss для пинга и вручную отправляю ссылки на блоги. Покаих не много всё не так сложно, но…
Поэтому и обратился сюда за помощью.
avatar
Вот нашёл простой скрипт пингатора. Возможно поможет в общем деле.

< ?
$gurl = "http://blogsearch.google.com/ping?url=";
$furl=array();
/*загружаем файл с URL, каждый на новой строке*/
$furl = file('urls.txt');
echo "Мы начинаем пинговать:)";
for($i=0; $i if(file_get_contents($gurl.$furl[$i])) echo $furl[$i]." - пропингован
";
}
$i--;
echo "Пропинговано ".$i." урлов";
?>

Как Я понял надо вместо urls.txt добавлять файл с ссылками для пинга.
avatar
Написал плагин по мотивам ваших рассуждений. Предлагаю дальнейшие рассуждения перенести туда.
avatar
Респект за плагин! Советую!!!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.