2009-11-19 50 views
1

現在,我正在使用PyRSS2Gen生成一個RSS文檔(resyndicating對使用feedparser解析的RSS feed的修改),但我無法弄清楚如何將不常見的標籤添加到該項目。我如何使用任意標籤和附件生成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="" />和我需要包括在所生成的版本,以及。

回答

1

有兩種方法。首先,您可以直接更改代碼。編輯'發佈',並把你想要的任何東西放在任何你想要的地方。

但是,如果你想從文檔獲取建議,從RSS2派生並實現自己的publish_extensions,像這樣:

class YourRSS2Item(PyRSS2Gen.RSSItem): 
    def publish_extensions(self, handler): 
     handler.startElement("show_id") 
     handler.endElement("show_id") 

'處理' 緊跟在SAX2 API(START_ELEMENT,人物,END_ELEMENT)。

至於製作的外殼,使用防護等級,如

item = RSSItem(.... enclosure = Enclosure("http://url.com", 10, ""), ...) 
+0

如何使用這個類(YourRSS2Item)來實際編寫我自己的元素?你能舉一個完整的例子嗎? – Stavros 2013-06-28 16:08:08

1

The documentation explains:

要添加 自己的屬性(需要命名空間 聲明),在[的RSSRSSData]您 子類重新定義 element_attrsrss_attrs

這就是關於繼承的重點,不是嗎? :)

+0

雖然我想我找到了「element_attrs」,我不能換我圍​​繞着如何使「publish_extensions」頭添加新元素,因爲到目前爲止我還沒有很多關於python繼承的經驗。 – Cev 2009-11-19 23:42:57