首页 文章

处理没有(有效)日期的RSS提要项

提问于
浏览
0

我目前正在研究一个简单的RSS阅读器 . 为了从RSS提要中检索项目,我使用SimplePie . 在检索时,项目存储在具有 Headers ,链接和日期的数据库中 . 向用户呈现他们订阅的订阅源中的项目列表,最新的 .

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

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

1 回答

  • 0

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

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

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

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

相关问题