fix attribute error on Source and Article class
This commit is contained in:
parent
56224d8d20
commit
85b6f118bc
39
src/feed.py
39
src/feed.py
@ -21,19 +21,19 @@ class Feeds(Enum):
|
|||||||
@dataclass
|
@dataclass
|
||||||
class Source:
|
class Source:
|
||||||
|
|
||||||
name: str
|
name: str | None
|
||||||
url: str
|
url: str | None
|
||||||
icon_url: str
|
icon_url: str | None
|
||||||
feed: FeedParserDict
|
feed: FeedParserDict
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_parsed(cls, feed:FeedParserDict):
|
def from_parsed(cls, feed:FeedParserDict):
|
||||||
|
|
||||||
# print(json.dumps(feed, indent=8))
|
# print(json.dumps(feed, indent=8))
|
||||||
|
|
||||||
return cls(
|
return cls(
|
||||||
name=feed.channel.title,
|
name=feed.get("channel", {}).get("title"),
|
||||||
url=feed.channel.link,
|
url=feed.get("channel", {}).get("link"),
|
||||||
icon_url=feed.feed.image.href,
|
icon_url=feed.get("feed", {}).get("image", {}).get("href"),
|
||||||
feed=feed
|
feed=feed
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,10 +44,10 @@ class Source:
|
|||||||
@dataclass
|
@dataclass
|
||||||
class Article:
|
class Article:
|
||||||
|
|
||||||
title: str
|
title: str | None
|
||||||
description: str
|
description: str | None
|
||||||
url: str
|
url: str | None
|
||||||
published: datetime
|
published: datetime | None
|
||||||
author: str | None
|
author: str | None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -55,12 +55,15 @@ class Article:
|
|||||||
entry = feed.entries[0]
|
entry = feed.entries[0]
|
||||||
# log.debug(json.dumps(entry, indent=8))
|
# log.debug(json.dumps(entry, indent=8))
|
||||||
|
|
||||||
|
published_parsed = entry.get("published_parsed")
|
||||||
|
published = datetime(*entry.published_parsed[0:-2]) if published_parsed else None
|
||||||
|
|
||||||
return cls(
|
return cls(
|
||||||
title=entry.title,
|
title=entry.get("title"),
|
||||||
description=entry.description,
|
description=entry.get("description"),
|
||||||
url=entry.link,
|
url=entry.get("link"),
|
||||||
published=datetime(*entry.published_parsed[0:-2]),
|
published=published,
|
||||||
author = entry.get("author", None)
|
author = entry.get("author")
|
||||||
)
|
)
|
||||||
|
|
||||||
async def get_thumbnail_url(self):
|
async def get_thumbnail_url(self):
|
||||||
@ -78,12 +81,12 @@ class Article:
|
|||||||
return image_element.get("content") if image_element else None
|
return image_element.get("content") if image_element else None
|
||||||
|
|
||||||
|
|
||||||
def get_source(feed: Feeds) -> Source:
|
def get_source(rss_url: str) -> Source:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
parsed_feed = parse("https://gitea.corbz.dev/corbz/BBC-News-Bot/rss/branch/main/src/extensions/news.py")
|
parsed_feed = parse(rss_url)
|
||||||
return Source.from_parsed(parsed_feed)
|
return Source.from_parsed(parsed_feed)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user