处理没有(有效)日期的RSS源项目

时间:2014-05-16 18:21:36

标签: rss rss-reader simplepie

我目前正在开发一个简单的RSS阅读器。为了从RSS提要中检索项目,我使用SimplePie。在检索时,项目存储在具有标题,链接和日期的数据库中。向用户显示他们订阅的订阅源中的项目列表,最新的。

某些RSS Feed没有每个项目的有效日期,或根本没有提供任何日期。例如,Three Word Phrase's feed的日期类似Thurs, 11 Oct 2012,这些日期无效(导致SimplePie返回null)。 Nerd Rage's feed甚至没有提供与日期相关的元素。

由于Feed项目最新显示,因此需要与之关联的有效日期。但是,如果没有提供这样的日期,我就不知道如何处理。没有全面的方法来修复无效的日期,我也无法凭空捏造日期。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是为无日期项目提供检索的时间戳。根据您刷新Feed的频率,这可以提供相当准确的时间戳。

虽然这对于已经检索过一次项目的Feed很有效,但新的Feed表现得不那么优雅。第一次加载无日期源时,它将获取其所有项目并为它们分配所有相同的时间戳,从而使它们挤在“最新的第一个”项目列表的顶部,因为它们可能具有最新的时间戳。

要解决此问题,请在首次检索该Feed的项目时为源项目使用旧的(0可正常工作)时间戳。在后续刷新时遇到该Feed的新项目时,请为其提供检索时间戳。这样,加载新的无日期Feed不会将其所有项目都推到顶部,但是当它们出现时,该Feed的新项目将获得相当准确的日期。

总结一下,对于无日期物品/饲料:
第一次从Feed中获取项目时:timestamp = 0
从后续时间获取Feed时的项目:timestamp = current