修复Pelican RSS Feeds中的验证错误

时间:2013-08-08 12:31:49

标签: python rss pelican

我正在使用Pelican 3.2生成一个包含RSS Feed的博客。但是,通过W3C的Feed验证程序运行RSS提要会引发以下错误:

guid must be a full URL, unless isPermaLink attribute is false

其中一条违规行

<guid>tag:foo,2013-08-07:bar.html</guid>

Pelican似乎使用feedgenerator,但我找不到任何相关的配置选项。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我认为解决方案是修改feedgenerator,更改:

handler.addQuickElement("guid", item['unique_id'])

...为:

handler.addQuickElement('guid isPermaLink="false"', item['unique_id'])

RSS已经有link属性; feedgenerator目前假定unique_id是一个网址,不应该这样做。我怀疑这是解决问题的最佳方法。

答案 1 :(得分:1)

我认为Justin Mayer的答案是试图做正确的事情,但并不是很正确。至少,使用Pelican 3.6.3和feedgenerator 1.7,该修复产生了非格式良好的XML:

<guid isPermaLink="false"> ... </guid isPermaLink="false">

相反,我更改了同一行

handler.addQuickElement("guid", item['unique_id'])

(在feedgenerator.py的第283行,在版本1.7中):

handler.addQuickElement('guid', item['unique_id'],
                        attrs={"isPermaLink": "false"})

这将Pelican为我生成的无效RSS转换为在http://validator.w3.org/feed/check.cgi正确验证的RSS。