25 lines
795 B
Python
25 lines
795 B
Python
import feedparser
|
|
from datetime import datetime
|
|
from time import mktime
|
|
from domain.entities import Article
|
|
|
|
class RssFeedAdapter():
|
|
def __init__(self, feed_url: str):
|
|
self.feed_url = feed_url
|
|
|
|
def fetch_articles(self) -> list[Article]:
|
|
# On consomme le flux externe
|
|
feed = feedparser.parse(self.feed_url)
|
|
articles = []
|
|
|
|
for entry in feed.entries:
|
|
# On convertit le format spécifique RSS vers notre Entité
|
|
published = datetime.fromtimestamp(mktime(entry.published_parsed)) #type: ignore
|
|
|
|
articles.append(Article(
|
|
title=entry.title,
|
|
url=entry.link,
|
|
published_at=published,
|
|
source=feed.feed.title
|
|
))
|
|
return articles |