FeedBurner API: получить число подписчиков

FeedBurner API

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

Использование FeedBurner API в php

Всё что надо, получить ответ от feedburner.google.com/api/awareness/1.0/GetFeedData:

$twodayago = date('Y-m-d', strtotime('-4 days', time()));
$onedayago = date('Y-m-d', strtotime('-1 days', time()));
$today = date('Y-m-d');

$api = "https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=ваш_uri&dates=$twodayago,$onedayago";

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $api);
$data = curl_exec($ch);
$base_code = curl_getinfo($ch);
curl_close($ch);

Ну, в целом так-то всё. Ответ получен. Что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok">
  <!--This information is part of the FeedBurner Awareness API. If you want to hide this information, you may do so via your FeedBurner Account.-->
  <feed>
    <entry date="2012-09-17" circulation="17" hits="86" reach="26" />
    <entry date="2012-09-18" circulation="0" hits="0" reach="0" />
  </feed>
</rsp>

Это для наглядности, чтобы хоть знали, что API возвращает нам. Теперь только пропарсить:

if ($base_code['http_code']=='401'){
	$burner_count_circulation = 'This feed does not permit Awareness API access';
	$burner_date = $today;
} else {

	$xml = new SimpleXMLElement($data); //парсим XML 
	$bis = $xml->attributes(); 

	if ($bis=='ok'){
		foreach ($xml->feed as $feed) {
			if ($feed->entry[1]['circulation']=='0'){
				$burner_count_circulation = $feed->entry[0]['circulation'];
				$burner_date  =  $feed->entry[0]['date'];
			} else {
				$burner_count_circulation = $feed->entry[1]['circulation'];
				$burner_date  =  $feed->entry[1]['date'];
			}
		}
	}

	if ($bis=='fail'){
		switch ($xml->err['code']) {
			case 1:
				$burner_count_circulation = 'Лента не найдена';
				break;
			case 5:
				$burner_count_circulation = 'Не найден необходимый параметр (URI)';
				break;
			case 6:
				$burner_count_circulation = 'Плохо сформированный параметр (DATES)';
				break;
		}
		$burner_date = $today;
	}

}

В $burner_count_circulation число подписчиков. Тут стоит остановится на датах и на ошибке, которая часто бывает.

There was an internal error retrieving this feed. The FeedBurner support team has been notified.

Сначала стоит сказать о FeedBurner. На сколько я знаю, статистика по подписчикам там обновляется раз в день. Если при получении XML файла даты не задать, то он вернёт только последний расчёт, а он часто баженый…точнее там 0 всегда. Не знаю, в чём проблема. Другой вариант самому сроки указывать, как у меня. Но вот FeedBurner как оказывается иногда с задержками стату делает, так что порой последнее обновление бывает за 3 дня от текущей даты.

Так что рекомендую указывать промежуток от сегодняшней даты на 3-5 дней назад.

И да, если ещё не сделали, то сделайте вашу статистику публичной в админке FeedBurner.

Awareness API

Ошибка в плагине FeedBurner для WordPress

Есть плагин для WP, который автоматические стату в сайдбаре выводить по подписчикам. Там тоже этот баг есть. Так как дата стоит на 1 день от текущий. Так что, лезьте в файл плагина и поправьте число и будет вам счастье.