[#236] Added author and tags attributes to new feed entry event and schema objects.

This commit is contained in:
Fabio Manganiello 2022-12-17 00:21:32 +01:00
parent cd569c76aa
commit 152ebdf737
Signed by untrusted user: blacklight
GPG key ID: D90FBA7F76362774
3 changed files with 53 additions and 24 deletions

View file

@ -1,5 +1,5 @@
from datetime import datetime from datetime import datetime
from typing import Optional from typing import Iterable, Optional
from platypush.message.event import Event from platypush.message.event import Event
@ -10,11 +10,30 @@ class NewFeedEntryEvent(Event):
""" """
def __init__( def __init__(
self, *, feed_url: str, url: str, title: Optional[str] = None, id: Optional[str] = None, self,
feed_title: Optional[str] = None, published: Optional[datetime] = None, summary: Optional[str] = None, *,
content: Optional[str] = None, **kwargs feed_url: str,
url: str,
title: Optional[str] = None,
id: Optional[str] = None,
feed_title: Optional[str] = None,
published: Optional[datetime] = None,
summary: Optional[str] = None,
content: Optional[str] = None,
author: Optional[str] = None,
tags: Optional[Iterable[str]] = None,
**kwargs
): ):
super().__init__( super().__init__(
feed_url=feed_url, url=url, title=title, id=id, feed_title=feed_title, feed_url=feed_url,
published=published, summary=summary, content=content, **kwargs url=url,
title=title,
id=id,
feed_title=feed_title,
published=published,
summary=summary,
content=content,
author=author,
tags=tags or [],
**kwargs
) )

View file

@ -129,6 +129,12 @@ class RssPlugin(RunnablePlugin):
'title': entry.title, 'title': entry.title,
'summary': getattr(entry, 'summary', None), 'summary': getattr(entry, 'summary', None),
'content': self._parse_content(entry), 'content': self._parse_content(entry),
'author': getattr(entry, 'author', None),
'tags': [
tag['term']
for tag in getattr(entry, 'tags', [])
if tag.get('term')
],
} }
for entry in feed.entries for entry in feed.entries
if getattr(entry, 'published_parsed', None) if getattr(entry, 'published_parsed', None)

View file

@ -5,36 +5,40 @@ from platypush.schemas import DateTime
class RssFeedEntrySchema(Schema): class RssFeedEntrySchema(Schema):
feed_title = fields.String(metadata=dict(description='Feed title')) feed_title = fields.String(metadata={'description': 'Feed title'})
feed_url = fields.URL( feed_url = fields.URL(
required=True, required=True,
metadata=dict( metadata={
description='URL of the feed', 'description': 'URL of the feed',
example='https://some-website/rss', 'example': 'https://some-website/rss',
) },
) )
id = fields.String( id = fields.String(
required=True, required=True,
metadata=dict( metadata={
description='Feed entry ID', 'description': 'Feed entry ID',
example='1234', 'example': '1234',
) },
) )
url = fields.URL( url = fields.URL(
required=True, required=True,
metadata=dict( metadata={
description='URL of the feed entry', 'description': 'URL of the feed entry',
example='https://some-website/articles/1234', 'example': 'https://some-website/articles/1234',
) },
) )
published = DateTime( published = DateTime(
required=True, required=True, metadata={'description': 'Entry published time'}
metadata=dict(description='Entry published time')
) )
title = fields.String(metadata=dict(description='Feed entry title')) title = fields.String(metadata={'description': 'Feed entry title'})
summary = fields.String(metadata=dict(description='Feed entry summary')) summary = fields.String(metadata={'description': 'Feed entry summary'})
content = fields.String(metadata=dict(description='Feed entry content')) content = fields.String(metadata={'description': 'Feed entry content'})
author = fields.String(metadata={'description': 'Feed entry author'})
tags = fields.List(
fields.String(),
metadata={'description': 'Feed entry tags'},
)