from feedgen.feed import FeedGenerator class Feed(FeedGenerator): def __init__(self,ident='root'): super().__init__() super().add_entry self.ident = ident self.id(f'http://ebk.euer.krebsco.de/{ident}') self.title(f'Ebay Kleinanzeigen Feed {ident}') self.author({'name':'Felix Richter', 'email': 'ebk-notify@syntax-fehler.de'}) self.link( href=f'http://ebk.euer.krebsco.de/{ident}.atom', rel='self' ) self.subtitle(f'Results for ebay kleinanzeingen for identity {ident}') self.language('de') def load_cache(self,cache) -> None: for item in sorted(cache.store.values(),key= lambda f: f['notify']['creation']): fe = self.add_entry(order='prepend') available = 'available' if item['notify']['seen'] else 'sold' fe.id(f"{item['notify']['url']}#{available}") fe.category({'term':item['category']['localized-name']['value']}) fe.link({'href':item['notify']['url'],'title':'Link to item'}) fe.pubDate(item['notify']['creation']) fe.title(f"{item['title']['value']} {item['notify']['price']}€ ({available})") fe.content(f'''
{item['description']['value']}
''',type='CDATA') def add_article(self,entry) -> None: pass def to_atom(self) -> str: return self.atom_str(pretty=True) def to_atom_file(self,filename=None) -> None: if not filename: filename = f'{self.ident}.atom' self.atom_file(filename)