Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал Vlad 13 октября 2009 в 17:41.
Категории: Delphi в Web.


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 &lt;&gt; 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"

Мой блог находят по следующим фразам

--------------------
Вот думаю: какой автомобиль лучше купить? Российского производителя как-то не тянет поддерживать. Вот наткнулся на сайт про автомобили Renault Logan и Ford Focus. По-моему неплохой вариант.
--------------------
Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

1 комментарий

WP_Cloudy
  • Antiman пишет:

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

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник

   


Как создать собственный сайт: оптимизация сайта. Всё возможно. --|--. полупрофессиональные фотоаппараты Челябинск