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

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

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

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

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

Привожу кусок класса.

function feedburner(){

	if( !$this->page_loaded ){
		$this->domain_source();
	}

	if( $this->page_loaded ){

		$feed = '';

		// Найдем RSS фид
		preg_match_all('//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';
}