如何生成带任意标签和封装的RSS
现在,我正在使用PyRSS2Gen来生成一个RSS文档(这是对一个用feedparser解析过的RSS源的修改版),但是我不知道怎么在项目中添加一些不常见的标签。
items = [
PyRSS2Gen.RSSItem(
title = x.title,
link = x.link,
description = x.summary,
guid = x.link,
pubDate = datetime(
x.modified_parsed[0],
x.modified_parsed[1],
x.modified_parsed[2],
x.modified_parsed[3],
x.modified_parsed[4],
x.modified_parsed[5])
)
for x in parsed_feed.entries]
rss = PyRSS2Gen.RSS2(
title = "Resyndicator",
link = parsed_feed['feed'].get("link"),
description = "etc",
language = parsed_feed['feed'].get("language"),
copyright = parsed_feed['feed'].get("copyright"),
managingEditor = parsed_feed['feed'].get("managingEditor"),
webMaster = parsed_feed['feed'].get("webMaster"),
pubDate = parsed_feed['feed'].get("pubDate"),
lastBuildDate = parsed_feed['feed'].get("lastBuildDate"),
categories = parsed_feed['feed'].get("categories"),
generator = parsed_feed['feed'].get("generator"),
docs = parsed_feed['feed'].get("docs"),
items = items
)
原来的源里面有一个<show_id></show_id>
标签,还有一个封装标签<enclosure url="http://url.com" length="10" type="" />
,我也需要在生成的版本中包含这些内容。
2 个回答
1
要添加你自己的属性(这对于命名空间声明是必要的),你需要在你自己创建的类中重新定义
element_attrs
或rss_attrs
[这些类是RSS
和RSSData
的子类]。
这就是创建子类的主要目的,不是吗? :)
1
有两种方法。第一种,你可以直接修改代码。编辑'publish',把你想要的内容放到你想放的地方。
但如果你想按照文档的建议来做,可以从RSS2派生,并实现你自己的publish_extensions,像这样:
class YourRSS2Item(PyRSS2Gen.RSSItem):
def publish_extensions(self, handler):
handler.startElement("show_id")
handler.endElement("show_id")
'handler'遵循SAX2的API(包括开始元素、字符和结束元素)。
至于制作一个封装,使用Enclosure类,像这样:
item = RSSItem( .... enclosure = Enclosure("http://url.com", 10, ""), ...)