Видимо в Сети в настоящее время практически не осталось standalone-блогов, которые не использовали бы сервис FeedBurner для ведения статистики по подписчикам блога.
Действительно, этот сервис наилучшим образом походит для оценки и анализа блога, просмотра статистики и т.д. Кроме того большинство 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.
В ответном документе содержится следующая информация:
- date - дата формирования данных
- circulation - количество подписчиков
- hits - количество запросов фида за последние 24 часа
- reach - охват
Теперь остается добраться до узла entry и вытащить из него значения атрибутов. Продемонстрируем это всё на примере нашего блога.
Открываем Delphi, создаем новый проект и размещаем на главной форме элементы как показано на рисунке:
Всю работу с документом будем осуществлять через компонент 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"
Мой блог находят по следующим фразам
- Delphi IStream
- схема работы xml-rpc
- yandsearch text определить кодировку
- браузер lazarus
- Все формулы в lazarus
- условия лицензии delphi 2010
Вот думаю: какой автомобиль лучше купить? Российского производителя как-то не тянет поддерживать. Вот наткнулся на сайт про автомобили Renault Logan и Ford Focus. По-моему неплохой вариант.
--------------------
| Делись! | Загружай! | Плюсуй! |
| | |









25 Окт 2009 в 6:29 пп
Спасибо. Нечаянно наткнулся, но заинтересовало!