Feedzirra - Как получить обновленную RSS-ленту?

Следующий код взят из сути Feedzirra для получения обновленного контента из RSS-канала:

feed = Feedzirra::Feed.fetch_and_parse(feed_url)
feed = Feedzirra::Feed.update(feed)
do_something_with_new_feed(feed.new_entries) if feed.updated?

Я не понимаю, как Feedzirra узнает, что фид был обновлен. Я не могу заставить его работать. Чтобы узнать, мне нужно передать объект Feed, который был возвращен ранее (минуты или часы назад) Feedzirra::Feed.fetch_and_parse(feed_url) в Feedzirra::Feed.update, не так ли? Как он узнает, был ли он обновлен, если я использую фид, который у меня только что был fetch_and_parse?


person user2345093    schedule 19.08.2013    source источник


Ответы (1)


Фиды (сайты, к которым вы обращаетесь) могут, но не обязательно, поддерживать одно или два поля, которые определяют, изменились ли они с момента вашего последнего доступа. Это etag и последнее изменение. Если сайт поддерживает один или оба из них, они будут возвращены вам при доступе к каналу. Ваша модель должна поддерживать эти поля для каждого интересующего канала. Feedzirra::Feed.update использует их, чтобы определить, был ли канал обновлен с момента вашего последнего доступа. Это позволит Feedzirra::Feed.update извлекать записи, которые являются новыми или измененными с момента вашего последнего доступа.

Если у вас нет ни поля etag, ни полей последнего изменения, либо потому, что это ваш первый доступ, либо потому, что сайт их не предоставляет, то Feedzirra::Feed.fetch_and_parse извлечет все записи, доступные с сайта. Это имеет смысл для первого доступа. Это не имеет смысла для последующих обращений, но если сайт не поддерживает это, что вы можете сделать?

Чтобы было ясно, Feedzirra::Feed.fetch_and_parse всегда извлекает все доступные записи. Feedzirra::Feed.update извлекает только те записи, которые являются новыми или измененными с момента предоставления ему тега etag и/или даты последнего изменения.

Записи также поддерживают дату обновления/публикации.

person Richard_G    schedule 04.10.2013