""" News View """ __docformat__ = "numpy" import os import logging from typing import Optional import pandas as pd from openbb_terminal.decorators import check_api_key from openbb_terminal.common import newsapi_model from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import export_data from openbb_terminal.helper_funcs import print_rich_table logger = logging.getLogger(__name__) @log_start_end(log=logger) @check_api_key(["API_NEWS_TOKEN"]) def display_news( query: str, limit: int = 3, start_date: Optional[str] = None, show_newest: bool = True, sources: str = "", export: str = "", ) -> None: """Prints table showing news for a given term. [Source: NewsAPI] Parameters ---------- query : str term to search on the news articles start_date: Optional[str] date to start searching articles from formatted YYYY-MM-DD limit : int number of articles to display show_newest: bool flag to show newest articles first sources: str sources to exclusively show news from export : str Export dataframe data to csv,json,xlsx file """ tables = newsapi_model.get_news(query, limit, start_date, show_newest, sources) if tables: for table in tables: print_rich_table(table[0], title=table[1]["title"]) export_data( export, os.path.dirname(os.path.abspath(__file__)), f"news_{query}_{'_'.join(sources)}", pd.DataFrame(tables), )