Add news API functionality and update tests for article retrieval

This commit is contained in:
2025-09-29 19:21:08 +02:00
parent badd3e2a6c
commit fc4753a245
3 changed files with 23 additions and 6 deletions

View File

@@ -17,16 +17,17 @@ class NewsAPI:
assert api_key is not None, "NEWS_API_KEY environment variable not set"
self.client = newsapi.NewsApiClient(api_key=api_key)
self.category = "business"
self.language = "en"
self.page_size = 100
self.category = "business" # Cryptocurrency is under business
self.language = "en" # TODO Only English articles for now?
self.max_page_size = 100
def get_top_headlines(self, query:str, total:int=100) -> list[Article]:
page_size = min(self.page_size, total)
page_size = min(self.max_page_size, total)
pages = (total // page_size) + (1 if total % page_size > 0 else 0)
articles = []
for page in range(1, pages + 1):
headlines = self.client.get_top_headlines(category=self.category, language=self.language, page_size=page_size, page=page)
headlines = self.client.get_top_headlines(q=query, category=self.category, language=self.language, page_size=page_size, page=page)
results = [result_to_article(article) for article in headlines.get("articles", [])]
articles.extend(results)
return articles