уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

FeedBurnerВидимо в Сети в настоящее время практически не осталось standalone-блогов, которые не использовали бы сервис FeedBurner для ведения статистики по подписчикам блога.

Действительно,  этот сервис наилучшим образом походит для оценки и анализа RSS-ленты блога, просмотра статистики и т.д. Кроме того большинство RSS-лент и каталогов блогов сегодня просят при регистрации предоставлять адрес RSS-канала именно в FeedBurner’е.

Вы, наверное, уже замечали и не раз, что некоторые сервисы, например тот же Блогун, каким-то образом умудряются «выдернуть» из адреса Вашей RSS-ленты количество подписчиков? Сегодня мы с Вами и разберемся каким образом это происходит.

Чем хорош Google — так это тем, что практически на каждый из своих сервисов он предоставляет в распоряжение разработчиков API.  Не исключение и FeedBurner. Ознакомиться с документацией по Awarness API можно здесь. Ну, а если есть API, то решение вопроса становиться до безобразия простым: достаточно подобрать запрос из API, отправить его Googl’у, получить ответ и проанализировать его.

На мой взгляд, для определения количества подписчиков в FeedBurner наиболее подходящим является запрос вида:

https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=feeduri

где feeduri — это идентификатор Вашего фида. Для нашего блога, например, uri=myDelphi.

В ответном документе содержится следующая информация:

  1. date — дата формирования данных
  2. circulation — количество подписчиков
  3. hits — количество запросов фида за последние 24 часа
  4. reach — охват

Теперь остается добраться до узла entry и вытащить из него значения атрибутов. Продемонстрируем это всё на примере нашего блога.

Открываем Delphi, создаем новый проект и размещаем на главной форме элементы как показано на рисунке:

feedburner counterВсю работу с документом будем осуществлять через компонент XMLDocument. В принципе, можно было воспользоваться и RegExp, но это ни к чему раз есть готовый компонент.

Итак, в качестве входных данных у нас будет адрес RSS-ленты, т.к. именно в этом адресе содержится uri. Процесс определения uri по адресу ленты может быть таким:

  • определяем последнее вхождение подстроки «/» в строку адреса
  • копирование uri

Процедура определения последнего вхождения подстроки в строку может быть вот такой:

function PosR2L(const FindS, SrcS: string): Integer;
  function InvertS(const S: string): string;
  var i, Len: Integer;
  begin
    Len := Length(S);
    SetLength(Result, Len);
    for i := 1 to Len do
      Result[i] := S[Len - i + 1];
  end;
var ps: Integer;
begin
  ps := Pos(InvertS(FindS), InvertS(SrcS));
  if ps <> 0 then
    Result := Length(SrcS) - Length(FindS) - ps + 2
  else
    Result := 0;
end;

Далее, копируем uri, отправляем запрос и анализируем ответ:

procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
  uri: string;
  date: TDate;
  count:integer;
  rich: integer;
  hits: integer;
  Node:IDOMNodeList;
begin
  i:=PosR2L('/', Edit1.Text);
  uri:=copy(Edit1.Text,i+1,length(Edit1.Text)-i);
  XMLDocument1.LoadFromFile('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='+uri);
Node:=XMLDocument1.DOMDocument.getElementsByTagName('entry')as IDOMNodeList;
  date:=VarToDateTime(Node.item[0].attributes.item[0].nodeValue);
  count:=StrToInt(Node.item[0].attributes.item[1].nodeValue);
  rich:=StrToInt(Node.item[0].attributes.item[3].nodeValue);
  hits:=StrToInt(Node.item[0].attributes.item[2].nodeValue);
  //выводим данные на форму
  label10.Caption:=DateToStr(date);
  label6.Caption:=IntToStr(Count);
  label7.Caption:=IntToStr(hits);
  label8.Caption:=IntToStr(rich);
end;

Вообще, можно было ограничится одной переменной — Node:IDOMNodeList, но для наглядности я показал как можно получать все данные из запроса для последующего их анализа.

Теперь можете скомпилировать Ваше приложение и проверить его работу. Неправда ли все просто?) Можете поизучать API и научиться, например, строить графики изменения подписчиков за определенные период времени или вообще — создать свое собственное приложение по анализу подписчиков — всё в Ваших руках. За основу можно принять представленный Выше пример работы с XML документом. А мы пока ставим ещё одну «галочку» в списке «Delphi в Web«

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
2 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Antiman
Antiman
25/10/2009 18:29

Спасибо. Нечаянно наткнулся, но заинтересовало!

trackback
Модуль FeedBurner API для Delphi 2010. | Delphi в Internet
09/12/2012 05:12

[…] в одном из постов я рассматривал вопрос о том, как получить количество […]