sanjeevl10
First Check-in
1a2a035
from alpaca_trade_api import REST
import os
from dotenv import load_dotenv
class AlpacaNewsFetcher:
"""
A class for fetching news articles related to a specific stock from Alpaca API.
Attributes:
- api_key (str): Alpaca API key for authentication.
- api_secret (str): Alpaca API secret for authentication.
- rest_client (alpaca_trade_api.REST): Alpaca REST API client.
"""
def __init__(self, api_key, api_secret):
"""
Initializes the AlpacaNewsFetcher object.
Args:
- api_key (str): Alpaca API key for authentication.
- api_secret (str): Alpaca API secret for authentication.
"""
self.api_key = api_key
self.api_secret = api_secret
self.rest_client = REST(api_key, api_secret)
load_dotenv()
self.no_of_newsarticles_to_fetch = os.environ["NO_OF_NEWSARTICLES_TO_FETCH"]
def fetch_news(self, symbol, start_date, end_date):
"""
Fetches news articles for a given stock symbol within a specified date range.
Args:
- symbol (str): Stock symbol for which news articles are to be fetched (e.g., "AAPL").
- start_date (str): Start date of the range in the format "YYYY-MM-DD".
- end_date (str): End date of the range in the format "YYYY-MM-DD".
Returns:
- list: A list of dictionaries containing relevant information for each news article.
"""
news_articles = self.rest_client.get_news(symbol, start_date, end_date, limit=self.no_of_newsarticles_to_fetch )
formatted_news = []
print("-----------------------------------------------------")
print(len(news_articles))
print("-----------------------------------------------------")
for article in news_articles:
summary = article.summary
title = article.headline
timestamp = article.created_at
relevant_info = {
'timestamp': timestamp,
'title': title,
'summary': summary
}
formatted_news.append(relevant_info)
return formatted_news