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