[создаем feed для RSS-рассылки]материал подготовил: Михаил Брод 23.06.2004
Тема нашего сегодняшнего разговора – как самому сделать RSS-рассылку. Для этого нам опять придется немного вернуться к теме формата RSS, а затем разобраться, как превратить ваши новости в информационный поток, доступный для подписчиков, где и как его разместить, как представить его на своем сайте… В общем, вопросов много. Поэтому начнем с самого первого – какой формат RSS выбрать для своей рассылки.
Если вы читали наши статьи или знакомились с технологией RSS на других сайтах, то вы знаете, что сегодня существует семь подвидов стандарта – от RSS 0.90 до RSS 2.0. Прочитав значительное количество статей, посвященных этим разновидностям, могу сказать, что многие разработчики в большей степени склоняются к использованию стандарта RSS 2.0, как наиболее развитому. Самый полный сравнительный анализ версий можно увидеть в статье “Что такое RSS” (автор Mark Pilgrim), а стандарт RSS 2.0 опубликован на сайте Technology at Harvard Law.
RSS-рассылка – это файл, созданный в формате RSS. именно этот файл “вбирают” в себя программы-агрегаторы, когда вы, подписавшись на рассылку, подключаетесь к новостному каналу. Тем, кто знаком с XML, понять формат рассылки (этот файл еще называют “фид” – feed) будет несложно. Фид “строится” из предопределенных строительных элементов – тегов, располагаемых в предопределенной последовательности. Разберем, какие теги используются в создании фида. Для примера возьмем фид проекта Softkey.info, который предлагает своим читателям подписку на новости и статьи.
Первые две строки – служебные. В одной описывается стандарт XML, во второй – стандарт RSS, используемые для создания фида. Кроме того, в описании версии RSS указаны источники пространства имен, применяемые в данном стандарте. больше в фиде никакой служебной информации нет – все остальное относится непосредственно к рассылке.
В стандарте 2.0 вся рассылка обрамляется тегом <channel>, а сами новости вложены внутрь этого тега (в версии 1.0 новости не входят в состав тега <channel>). Вот как будет выглядеть начало фида по версии 2.0:
В описании канала (рассылки) – три обязательных параметра:
title – название вашего канала либо ресурса. По нему будут ссылаться на ваш ресурс.
link – ссылка на источник, соответствующий данному каналу
description – краткое описание канала
Кроме обязательных, в состав описания могут входить и необязательные элементы. К ним относятся:
Language – язык, на котором вы пишете свои новости.
copyright – авторские права (ваши, но – на английском)
managingEditor – электронный адрес издателя – наверное, ваш.
webMaster – электронный адрес веб-мастера.
pubDate – дата публикации (требование к формату описано в RFC 822).
generator – может использоваться, если канал формируется с помощью какой-либо программы.
image – описывает картинку, которая может показываться агрегаторами для данного канала. Формат изображения – GIF, JPEG или PNG. В свою очередь, состоит также из нескольких тегов, описывающих ссылку на картинку и некоторые иные параметры.
skipHours и skipDays предназначены для агрегаторов. В этих тегах указывается, в какое время и какие дни “появление” агрегаторов нежелательно.
Есть еще ряд тегов, которые могут использоваться в описании заголовка канала, но они применяются довольно редко и поэтому о них лучше прочитать в описании стандарта.
Файл в формате RSS называется “Фид” (feed)
Следующий блок канала – сами сообщения. Каждое сообщение обрамляется элементом item. Все остальные элементы, относящиеся к новости, содержатся внутри него. Элементов item в вашем фиде будет столько, сколько новостей вы будете в нем размещать. Все они, входящие в item, являются необязательными, тем не менее желательно, чтобы присутствовал хотя бы один элемент title или description. итак, какие элементы могут включаться в описание новости?
Как уже отмечалось, в состав описания новости могут включаться элементы:
title – заголовок записи.
link – ссылка на запись.
Description – аннотация либо полная публикация.
category – описывает категорию, к которой можно отнести новость.
pubDate – дата публикации документа. Может содержать будущую дату, по отношению к текущей. В этом случае агрегаторы должны пропускать такую новость.
Есть еще ряд элементов, которые могут входить в описание, но сейчас мы на них останавливаться не будем.
Теперь посмотрим, как все, что было описано выше, выглядит в реальном фиде (точнее, в его небольшой части).
<item> <title>Firefox – подготовка к выходу</title> <link>http://www.softkey.info/news/news2788.php</link> <description>Специалисты Mozilla Foundation объявили о выходе предварительной версии браузера Firefox.</description> <enclosure url=”http://www.softkey.info/images/upload/17569/19313183df09869c99c9f7f6041280c3.gif” length=”1845″ type=”image/gif”/> <category>Новости мира ПО</category> <pubDate>Fri, 11 Jun 2004 13:46:30 +0400</pubDate> </item> </channel> </rss>
Как видите, ничего особенно сложного в это нет. Если вы делаете RSS-файл вручную, вам остается добавлять в него очередные новости, удаляя, по мере необходимости, старые. Добавлять новости лучше в начало файла – тогда это действительно будет похоже на ленту новостей, в которой свежие новости постепенно вытесняют старые.
В фиде может быть неограниченное количество сообщений
Но новости, а тем более, новостные каналы, пишутся, в первую очередь, для посетителей (и почитателей) вашего проекта. Следовательно, нужно дать им возможность подписаться на ваши новости. Для этого на странице новостей (хотя можно и на другой – главное, чтобы они были заметными) нужно разместить специальные кнопки. Их придумано много, но чаще всего на сайтах, публикующих RSS-новости, размещают такую кнопку:
или такую:
Вторая кнопка предназначена для программ-агрегаторов. При нажатии на нее происходит подписка на ссылающуюся ленту новостей. При этом используется специально разработанный протокол – feed.
Почему же для этого не используется обычный http-протокол? На это есть две причины – протокол http не может определять действия, а также не умеет запускать через ваш браузер программу-агрегатор для осуществления подписки. Этот протокол вызывается поверх иных сетевых протоколов – http, ftp и ссылок на локальные файлы. Примеры записи этого протокола:
Если вы ведете несколько рассылок RSS-новостей или, помимо своей, предлагаете вашим посетителям возможность подписаться на еще какие-либо рассылки, то на кнопку подписки можно “навесить” дополнительное меню с перечнем доступных подписок. Для этого можно использовать свободно распространяемую программу quickSub.
Но можно не ограничиться размещением кнопки или меню на своем сайте. Вы можете включить свою рассылку в список, формируемый некоторыми специальными проектами – службами синдикации. Одна из наиболее известных служб – NewsIsFree. Количество рассылок, включенных в базу данных, превышает шесть с половиной тысяч, в их числе есть и российские. Из российских проектов возможность подписаться не только на свои рассылки предлагает “Яндекс”.