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

Сам по себе модуль разрабатывался для одной цели — выбрать и правильно представить информацию по отдельному элементу фида (записи).

Думаю, что этот модуль пригодится тем, кто разрабатывает или планирует разрабатывать приложения так или иначе взаимодействующие с FeedBurner’ом. Простым примером такого приложения может быть программа для работы с пинг-сервисами. В ней модуль используется как раз для того, чтобы правильно заполнить необходимые поля формы.

Кстати, тот факт, что модуль написан в Lazarus не говорит о то, что Вы не сможете применять его в разработках в Delphi. Думаю, что при незначительных поправках в коде он легко интегрируется в Ваше приложение написанное на Delphi.

Итак, рассмотрим, что представляет из себя модуль и как с ним работать.В модуле определен класс TFeedChanel. Для того, чтобы класс был готов к работе достаточно его создать, используя конструктор:

constructor TFeedChanel.Create(cURL: string);
begin
  inherited Create;
  GetDocument(cURL);
end;

где cURL — это URL вашего фида. При этом URL может описан либо так:

http://feeds.feedburner.com/myDelphi

либо так:

http://feeds.feedburner.com/myDelphi?format=xml

После того, как объект создан в поле FDocument будет содержаться весь XML фида, что избавит нас от лишнего расхода трафика.

Далее можно приступать к использованию свойств.

property ItemsCount: integer read GetItemsCount;

Содержит общее количество записей фида. Количество записей подсчитывается по количеству узлов item в XML-документе.

property FeedAddress: string read FFeedAdress write SetFeedAdress;

URL обрабатываемого фида. При этом, если вы меняете адрес фида, то автоматически пересоздается FDocument, избавляя нас от лишних проверок тот ли фид мы обрабатываем.

property Title[i:integer]:string read GetTitle;

Читает заголовок i-го элемента фида:

function TFeedChanel.GetTitle(const i: integer): string;
begin
if i>ItemsCount then Exit;
Result:=TDOMElement(FDocument.DocumentElement.GetElementsByTagName('item').Item[i]).GetElementsByTagName('title').Item[0].TextContent;
{$IFDEF win32}
Result:=UTF8Encode(Result);
{$ENDIF}
end;

Если i>ItemsCount то возвращается пустая строка.

property Description[i:integer]:string read GetDescr;

Описание для элемента фида. При этом выводится всё содержимое тега description. Если Вам необходимо выводить, например, только 255 первых символов, то это свойство необходимо немного доработать.

property Tags[i:integer]:TstringList read GetTags;

Выводит содержимое тегов category каждого элемента фида. Слудует отметить, что у FeedBurner’а нет различий между названием категории и тегов записи — все они оформляются одинаково.

property DirectLink[i:integer]: string read GetDirectLink;

Ссылка назапись в блоге для выбранного элемента фида. Здесь следует отразить следующий момент. Не знаю как у Вас, а у меня в фиде ссылки на посты выглядят следующим образом:

А в блоге все ссылки с ЧПУ, т.е. вида:

Поэтому, чтобы не было разночтений между тем, что содержится в фиде и тем, что есть на самом деле в методе GetDirectLink проводится следующая дополнительная обработка:

[...]
with (THTTPSend.Create) do
begin
  HTTPMethod('get',result);
  case ResultCode of
  301,302:begin
                for j:=0 to Headers.Count-1 do
                  begin
                    if pos('Location: ',Headers.Strings[j])>0 then
                      begin
                         Result:=copy(Headers.Strings[j],11, length(Headers.Strings[j])-10);
                         break;
                      end;
                  end;
          end;
  400:Result:='';
  end;
end;

т.е, идёт проверка возвращаемого результата. Если есть редирект, то соответственно выбираем ссылку из заголовка (Location), если вернулся код 404 — страницы недоступна и, соответственно ссылку не показываем. Здесь проводится проверка только на редиректы и отсутствие страницы, вы моете доработать проверку под свои нужды, например добавить проверку на код 500 и т.д., но в общем случае, думаю это не потребуется.

property BlogTitle: string read GetBlogTitle;

Выводит название блога (первый тег title в XML-документе)

property BlogURL: string read GetBlogURL;

Выводит URL блога.

Вот пожалуй всй, что можно получить из фида, используя модуль. Кстати, дополниельно можете использовать модуль для работы с API FeedBurner’а (разработан в Delphi)

Скачать модуль можно, как всегда, здесь либо со страницы исходников.

3 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии