我有一大堆播客供稿网址,我会定期轮询以检查更新。我真的很难找到一种强有力的方法来检测饲料是否已经改变,没有任何误报。我希望不仅可以检测是否有新剧集,而且还可以检测现有剧集是否已更新。
RSS和Atom供稿提供pubDate
,lastBuildDate
或updated
元素。但是,我发现这些经常被滥用,因此Feed实际上是在每个请求中将当前日期时间插入这些字段。这使得他们很难依赖于检测变化。
我的下一个想法是从播客中删除所有日期信息,然后MD5散列Feed内容。然后,我可以比较Feed哈希值以检测Feed的更改。
这似乎适用于大约90%的案例。但是,仍有数百个播客将动态数据插入到其Feed中。
一个播客有以下作为他们的播客封面艺术:
http://erikglassman.hipcast.com/albumart/1000.1439649026.jpg
我认为1439649026
是时间戳。第二个数字随其Feed的每个请求而变化。
这开始看起来像是一场失败的战斗。如果我无法可靠地信任播客源的日期字段,并且如果某些百分比的播客将动态数据插入其Feed文本中,我如何能够以可靠的方式可靠地检测到对Feed的更改?
答案 0 :(得分:3)
您说的一切都是正确的,因此尝试检测Feed级别的更改并不是一个好主意,而是在项目级别查找它们。
这通常有效,如果它没有任何人不能使用饲料,那么饲料来源可能已经解决了任何问题。这就是我认为它运作良好的原因。
我一直在编写feed阅读器,只要它们已经存在,我现在的产品叫做River4,它可以作为开源MIT许可证使用,所以你可以将它作为示例代码,用于此问题和其他问题。
这是检查项目是否为新项目的地方:
https://github.com/scripting/river4/blob/master/river4.js#L1411
随着代码的更改,这可能会移动,因此请查找名为getItemGuid的例程。它向您展示了如何获取唯一标识项目的值。我将此代码用于我的podcatcher http://podcatch.com/,它似乎捕获了新项目,并且没有出现误报。
希望这有帮助! : - )