2009-03-19 15 views

Respuesta

9

Encontrado el derecho manera de hacerlo. A medida que el documentation describe, que necesitaba para crear un generador de alimentación a medida por la subclasificación de Rss201rev2Feed y el método predominante

 
add_root_elements() 

así:

class RssFooFeedGenerator(Rss201rev2Feed): 
    def add_root_elements(self, handler): 
     super(RssFooFeedGenerator, self).add_root_elements(handler) 
     handler.addQuickElement(u"image", '', 
      { 
       'url': u"http://www.example.com/images/logo.jpg", 
       'title': u"Some title", 
       'link': u"http://www.example.com/", 
      })  

class RssFooFeed(Feed): 
    feed_type = RssFooFeedGenerator 
    title = u"Foo items" 
    link = u"http://www.example.com/" 
    description = u"Some description" 
+0

Un enfoque similar también funcionará con las alimentaciones Atom mediante la subclasificación de generador de Atom1Feed –

+0

Agregando url/título/enlace como atributos no es correcto y no funciona. Deben ser elementos XML. – AndiDog

+0

Se muestra en chrome (mime-type = application/xml), pero ¿cómo representar el nuevo elemento en firefox u otra aplicación (que aplica cierto estilo al RSS Feed)? – Dineshkumar

4

me sugiere utilizar django-atompub para la generación de Atom. Tiene una abstracción de clase muy agradable con muchas opciones, por lo que no hay ningún código de Python de Python de alto nivel.

Ejemplo:

# Define feed class 
class StreamFeed(Feed): 
    ... [snipped] 
    def item_links(self, item): 
     return [{'rel': 'enclosure', 'href': item.file.url, 'length': item.file.size, 'type': item.mime.name}, 
     {'rel': 'alternate', 'href': full_url(item.get_absolute_url())}] 

he usado en mi fotolog de código abierto aplicación Django. Puede ver ejemplos a través del bitbucket repo.

Complete feed generation code.

6

Por RSS válida 2.0 se deberían poner utiliza este:

class ImageRssFeedGenerator(Rss201rev2Feed): 
    def add_root_elements(self, handler): 
     super(ImageRssFeedGenerator, self).add_root_elements(handler) 
     handler.startElement(u'image', {}) 
     handler.addQuickElement(u"url", self.feed['image_url']) 
     handler.addQuickElement(u"title", self.feed['title']) 
     handler.addQuickElement(u"link", self.feed['link']) 
     handler.endElement(u'image') 

class LastPublishedPromiseFeed(Feed): 
    link = 'http://www.example.com' 
    feed_type = ImageRssFeedGenerator 

    def feed_extra_kwargs(self, obj): 
     return {'image_url': self.link + '/image.jpg'} 
Cuestiones relacionadas