from typing import Annotated from datetime import datetime from dateutil.relativedelta import relativedelta from .googlenews_utils import getNewsData def get_google_news( query: Annotated[str, "Query to search with"], curr_date: Annotated[str, "Curr date in yyyy-mm-dd format"], look_back_days: Annotated[int, "how many days to look back"], ) -> str: query = query.replace(" ", "+") start_date = datetime.strptime(curr_date, "%Y-%m-%d") before = start_date - relativedelta(days=look_back_days) before = before.strftime("%Y-%m-%d") news_results = getNewsData(query, before, curr_date) news_str = "" for news in news_results: title = str(news.get('title', '')) source = str(news.get('source', '')) snippet = str(news.get('snippet', '')) news_str += f"### {title} (source: {source}) \n\n{snippet}\n\n" if len(news_results) == 0: return "" return f"## {query} Google News, from {before} to {curr_date}:\n\n{news_str}"