Вопрос

Я подумываю о том, чтобы написать демон для циклического просмотра каналов, а затем добавить их в базу данных как объекты ActiveRecord.

Во-первых, одна проблема, с которой я сталкиваюсь, заключается в том, что я не могу надежно найти автора / пользователя истории, используя гем feed-normalizer. Кажется, что иногда он не распознает тег (я не знаю, сталкивался ли кто-нибудь еще с этой проблемой).

Во-вторых, я не видел, чтобы кто-нибудь конвертировал RSS-каналы обратно в записи базы данных. Мне нужно сделать это, так как каждая запись будет иметь ассоциации с другими объектами ActiveRecord. Я не могу найти никаких драгоценных камней, чтобы сделать это специально, но могу ли я каким-то образом взломать что-то вроде acts_as_feed, чтобы сделать это?

Это было полезно?

Решение

Не используйте SimpleRSS. Он не будет декодировать HTML-объекты для вас, а иногда игнорирует структуру канала.

Мне было проще всего проанализировать канал как XML с помощью XMLSimple , но вы можете использовать любой XML-парсер.

Другие советы

SimpleRSS предоставляет очень простой API и прекрасно работает с большинством каналов. Я рекомендую не рассматривать реализацию как ее "синтаксический анализатор" это набор регулярных выражений (что так неправильно на многих уровнях), но это работает хорошо.

Демоны - это хорошая жемчужина для запуска в фоновом режиме.

Если вы используете активную запись, вы должны следовать инструкциям по использованию AR за пределами рельсов, а затем встроенным образом определить классы модели. Это немного уменьшит раздувание.

RSS-каналы довольно противоречивы, это провал, который мы используем

  date = i[:pubDate] || i[:published] || i[:updated]
  body = i[:description] || i[:content] || i[:summary] || ""
  url = i[:guid] || i[:link]

Кроме того, исходя из опыта, убедитесь, что вы пытаетесь спасти все (и помните, что при обычном спасении тайм-ауты не улавливаются). Отстойно, что приходится постоянно подпрыгивать демонам RSS, которые получают плохие данные.

Лучшим подходом является использование Rails Engine , подключенного к API фидов, например, Superfeedr . , Опрос RSS-каналов подразумевает, что вам нужно будет запускать свои собственные асинхронные рабочие и / или систему очередей, которые могут быть довольно сложными для построения и обслуживания сверхурочно. Вам также придется обрабатывать сотни форматов и несоответствий. Вот сообщение в блоге, в котором показано порядок использования RSS-каналов в приложении Rails .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top