Давно уже сам юзаю. Но порой ошибка при получение данных была, но на следующий день опять норм. Там у гугли на форумах многие про эту ошибку спрашивали. Решил гайдик накатать.
Использование 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.
Ошибка в плагине FeedBurner для WordPress
Есть плагин для WP, который автоматические стату в сайдбаре выводить по подписчикам. Там тоже этот баг есть. Так как дата стоит на 1 день от текущий. Так что, лезьте в файл плагина и поправьте число и будет вам счастье.
А, где-то в сентябре или октябре, Google закрыл FB Api :( Они об этом поговаривали с апреля.
В ближайшее время планирую заняться поиском какой-нибудь альтернативы.