Окт 14

Как получить кол-во FeedBurner подписчиков, зная домен

Рубрики: Php  Количество просмотров: 901

Сегодня утром именно такой вопрос стоял. Полазил по API фидбернера, ничего не нашел подобного. Дело в том, что на сайте может быть вообще куча разных каналов, а мне нужно узнать количество подписчиков главной новостной ленты сайта, прожженой ч-з фидбернер.

Полазил по рейтингам блогов – там вообще все тупо спрашивают у юзера адрес фида… лол… зачем делать дополнительное действие, раз фид и так получить можно.

Остановился на таком алгоритме:

  1. Скачиваем страницу, например http://www.samborsky.com
  2. Ищем link теги, с атрибутом application/rss+xml
  3. Получаем полный адрес фида, например, если он указан локально /feed/
  4. Заходим на полный адрес фида, получаем таким образом адрес редиректа – http://feeds.feedburner.com/samborsky
  5. Имея на руках полный адрес ленты в фидбернере – получить кол-во подписчиков – дело техники

Привожу кусок класса, кто заметит ошибку, или знает, как сделать лучше пишите.

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';
}

———
морские перевозки в Одессе
салон красоты отзывы москва
поселок Золотые ключи Одесса

Другие статьи автора

Комментарии

  1. Цитировать Flector

    при этом еще автор блога должен открыть публичную статистику на фидбернере – иначе дергать данные не получится.

  2. Цитировать wlad2

    в блоге димка, есть сылка на плагин который все это делает.

  3. Цитировать azbuka

    Жень, а ты не можешь сделать такой сервис у себя на сайте? вбил домен- узнал кол-во подписчиков.

  4. Цитировать Max

    http://www.blogperfume.com/feed-analysis/ – вот очень простое решение данной проблемы. Считает и кол-во подписчиков и динамику изменений:) Очень красиво.

  5. Цитировать Samborsky

    Макс, а может он считать кол-во подписчиков скажем только по названию домена?

    Я нашел там форму

    Please input your Feed URI:
    For example, http://feeds.feedburner.com/webappers
    or just the feed name: webappers

    Но в ней нужно ввести именно ID в фидбернере

  6. Цитировать Зайва Игорь Леонидович

    Эх, сделал бы кто однопиксельными столбцами стату Фида картинкой 16х32 px за последние 30 дней – плагин бы имел успех… Я б себе с удовольствием его поставил :)

    А по фиду плагинов хватает, типа того, что здесь приведен… В Кодексе ВП ;)

  7. Цитировать Зайва Игорь Леонидович

    Хм, а как сию фичу поставить? просто код вставил в сайдбар, а он ошибку выдает в каждой строке, где есть $this ???

  8. Цитировать Samborsky

    Игорь, это кусок из класса CodeIgniter, я опубликовал его скорее как теоретический материал.

    Насчет использования статистики – скоро увидите. этот код часть крупного проекта, который в примерно ноябре выйдет в свет.

  9. Цитировать CPU

    Да, действительно, есть такой плагин, и назване ему – Feed Subscriber Stats.

  10. Цитировать Блог-шоу - выпуск 29 - Продвижение сайтов, веб-дизайн и креатив

    [...] Евгений Самборский описал интересный метод, Как получить кол-во FeedBurner подписчиков, зная домен. [...]

  11. Цитировать Alexander

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


    if( preg_match("/href=("|\')?(.+)("|\')?( |\/|>)/i",$link,$href) ) {
    ...
    }

  12. Цитировать Samborsky

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

    Есть определенные причины почему я сделал с использованием трех регулярок.
    То, что можно сделать все одной строкой я естественно в курсе.

  13. Цитировать Feedburner - TitleTag.ru - SEO/манимейкинг

    [...] Как получить кол-во FeedBurner подписчиков, зная домен 14.10.2009 feedburner  seobar  пузомерки  [...]

Добавить комментарий