mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-09 19:02:19 +00:00
Added start date argument to newsapi (#749)
* Added start date argument to newsapi * Fixed typo * Fix getting tail of the news * Show newsapi error * Added show_newest arg to news * Added sort arg to news * Updated news argument
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
""" News View """
|
||||
__docformat__ = "numpy"
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import requests
|
||||
|
||||
from gamestonk_terminal import config_terminal as cfg
|
||||
|
||||
|
||||
def news(term: str, num: int):
|
||||
def news(
|
||||
term: str,
|
||||
num: int,
|
||||
s_from: str,
|
||||
show_newest: bool,
|
||||
):
|
||||
"""Display news for a given title. [Source: NewsAPI]
|
||||
|
||||
Parameters
|
||||
@@ -17,10 +20,12 @@ def news(term: str, num: int):
|
||||
term to search on the news articles
|
||||
num : int
|
||||
number of articles to display
|
||||
s_from: str
|
||||
date to start searching articles from formatted YYYY-MM-DD
|
||||
show_newest: bool
|
||||
flag to show newest articles first
|
||||
"""
|
||||
# TODO: Add argument to specify news source being used
|
||||
# TODO: Add argument to specify date start to search for articles
|
||||
s_from = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")
|
||||
|
||||
response = requests.get(
|
||||
f"https://newsapi.org/v2/everything?q={term}&from={s_from}"
|
||||
@@ -28,7 +33,10 @@ def news(term: str, num: int):
|
||||
)
|
||||
|
||||
# Check that the API response was successful
|
||||
if response.status_code != 200:
|
||||
if response.status_code == 426:
|
||||
print(f"Error in request: {response.json()['message']}", "\n")
|
||||
|
||||
elif response.status_code != 200:
|
||||
print(f"Error in request {response.status_code}. Check News API token", "\n")
|
||||
|
||||
else:
|
||||
@@ -36,7 +44,13 @@ def news(term: str, num: int):
|
||||
f"{response.json()['totalResults']} news articles for {term} were found since {s_from}\n"
|
||||
)
|
||||
|
||||
for idx, article in enumerate(response.json()["articles"]):
|
||||
if show_newest:
|
||||
articles = response.json()["articles"]
|
||||
|
||||
else:
|
||||
articles = response.json()["articles"][::-1]
|
||||
|
||||
for idx, article in enumerate(articles):
|
||||
print(
|
||||
article["publishedAt"].replace("T", " ").replace("Z", ""),
|
||||
" ",
|
||||
|
||||
@@ -2,6 +2,7 @@ import argparse
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
import pandas as pd
|
||||
from colorama import Style
|
||||
from prompt_toolkit.completion import NestedCompleter
|
||||
@@ -31,6 +32,7 @@ from gamestonk_terminal.stocks.research import res_controller
|
||||
from gamestonk_terminal.stocks.screener import screener_controller
|
||||
from gamestonk_terminal.stocks.stocks_helper import candle, load, quote
|
||||
from gamestonk_terminal.stocks.technical_analysis import ta_controller
|
||||
from gamestonk_terminal.helper_funcs import valid_date
|
||||
|
||||
# pylint: disable=R1710
|
||||
|
||||
@@ -232,6 +234,24 @@ Market {('CLOSED', 'OPEN')[b_is_stock_market_open()]}
|
||||
default=5,
|
||||
help="Number of latest news being printed.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-d",
|
||||
"--date",
|
||||
action="store",
|
||||
dest="n_start_date",
|
||||
type=valid_date,
|
||||
default=datetime.now() - timedelta(days=7),
|
||||
help="The starting date (format YYYY-MM-DD) to search articles from",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--oldest",
|
||||
action="store_false",
|
||||
dest="n_oldest",
|
||||
default=True,
|
||||
help="Show oldest articles first",
|
||||
)
|
||||
|
||||
try:
|
||||
ns_parser = parse_known_args_and_warn(parser, other_args)
|
||||
if not ns_parser:
|
||||
@@ -240,6 +260,8 @@ Market {('CLOSED', 'OPEN')[b_is_stock_market_open()]}
|
||||
newsapi_view.news(
|
||||
term=self.ticker,
|
||||
num=ns_parser.n_num,
|
||||
s_from=ns_parser.n_start_date.strftime("%Y-%m-%d"),
|
||||
show_newest=ns_parser.n_oldest,
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user