1

現在、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="" />があり、生成されたバージョンにも含める必要があります。

4

2 に答える 2

1

2つの方法があります。まず、コードを直接変更できます。'publish'を編集して、好きな場所に好きな場所に置いてください。

ただし、ドキュメントから提案を取得する場合は、RSS2から派生し、次のように独自のpublish_extensionsを実装します。

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

'handler'はSAX2API(start_element、characters、end_element)に従います。

また、エンクロージャーの作成については、次のようにEnclosureクラスを使用します。

item = RSSItem( .... enclosure = Enclosure("http://url.com", 10, ""), ...)
于 2009-11-25T06:58:28.660 に答える
1

ドキュメントでは次のように説明されています。

独自の属性 (名前空間の宣言に必要) を追加するに は、サブクラス [of and ]でelement_attrsorを再定義します。rss_attrsRSSRSSData

それがサブクラス化の要点ですよね? :)

于 2009-11-19T22:16:44.967 に答える