Как получить кол-во FeedBurner подписчиков, зная домен
Сегодня утром именно такой вопрос стоял. Полазил по API фидбернера, ничего не нашел подобного. Дело в том, что на сайте может быть вообще куча разных каналов, а мне нужно узнать количество подписчиков главной новостной ленты сайта, прожженой ч-з фидбернер.
Полазил по рейтингам блогов – там вообще все тупо спрашивают у юзера адрес фида… лол… зачем делать дополнительное действие, раз фид и так получить можно.
Остановился на таком алгоритме:
- Скачиваем страницу, например http://www.samborsky.com
- Ищем link теги, с атрибутом application/rss+xml
- Получаем полный адрес фида, например, если он указан локально /feed/
- Заходим на полный адрес фида, получаем таким образом адрес редиректа – http://feeds.feedburner.com/samborsky
- Имея на руках полный адрес ленты в фидбернере – получить кол-во подписчиков – дело техники
Привожу кусок класса, кто заметит ошибку, или знает, как сделать лучше пишите.
function feedburner(){
if( !$this->page_loaded ){
$this->domain_source();
}
if( $this->page_loaded ){
$feed = '';
// Найдем RSS фид
preg_match_all('/<link(.+?)\s*\/?\s*>/i',$this->source_code,$out,PREG_SET_ORDER);
foreach( $out as $link ){
$link = strtolower($link[1]);
if( strpos($link,'application/rss+xml') ){
// Если адрес взят в двойные кавычки
if( preg_match('/href="(.+?)"/i',$link,$href) ){
$feed = $href[1];
break;
}
// Если адрес взят в одинарные кавычки
if( preg_match("/href='(.+?)'/i",$link,$href) ){
$feed = $href[1];
break;
}
// Если адрес указан без кавычек
if( preg_match("/href=\s*(.+)\s*/i",$link,$href) ){
$feed = $href[1];
break;
}
}
}
// Получаем полный адрес фида
$url = parse_url($feed);
if( empty($url['host']) ){
$feed = 'http://' . $this->domain . $feed;
}
// Скачиваем фид, получаем реальный адрес
if( $this->get($feed) ){
// Получаем последний урл, на который редиректили
$feed = $this->get_info(CURLINFO_EFFECTIVE_URL);
if( !empty($feed) ){
// Нужно получить название канала
if( preg_match('/feedburner.com\/(.+?)$/i',$feed,$out) ){
$feed = $out[1];
// Делаем запрос на фидбернер
if( $this->https_get('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $feed) ){
echo $this->data;
if( preg_match('/circulation="(\d+?)"/',$this->data,$match) ){
return $match[1];
}
}
}
}
}
}
return 'n/a';
}
——— Читать далее »

Да, у бобрдобра есть API для постинга закладок, но я усложню себе задачу, и с имитирую заход из браузера, введу программно логин и пароль, заполню поля для сохранения закладки.



