Dmitry Beresnev commited on
Commit
91b6409
·
1 Parent(s): f64a105

fix requirements.txt, dates, news sample

Browse files
requirements.txt CHANGED
@@ -5,4 +5,5 @@ uvicorn[standard]==0.24.0
5
  httpx>=0.25.0
6
  python-dotenv==1.0.0
7
  pydantic==2.5.0
8
- typing-extensions==4.8.0
 
 
5
  httpx>=0.25.0
6
  python-dotenv==1.0.0
7
  pydantic==2.5.0
8
+ typing-extensions==4.8.0
9
+ pytz==2025.2
src/telegram_bot/telegram_bot_service.py CHANGED
@@ -1,9 +1,11 @@
1
  from typing import Any
2
  from datetime import datetime, timedelta
3
  import time
 
4
 
5
  import httpx
6
  from fastapi import HTTPException
 
7
 
8
  from src.telegram_bot.logger import main_logger
9
  from src.telegram_bot.config import Config
@@ -212,13 +214,19 @@ class TelegramBotService:
212
  ) -> None:
213
  await self.send_message_via_proxy(chat_id, f"Fetching latest financial news for ticker {ticker} ...")
214
  try:
215
- current_date = datetime.now() - timedelta(days=1)
 
 
 
 
 
 
216
  feed = fetch_comp_financial_news(ticker=ticker,
217
  date_from=current_date.strftime('%Y-%m-%d'),
218
  date_to=current_date.strftime('%Y-%m-%d'))
219
  main_logger.info(f"Processed: {len(feed)} news items for ticker {ticker}")
220
  client = OpenRouterClient(api_key=Config.OPENROUTER_API_KEY)
221
- sample_news = feed[:5] # Limit to first 5 news items for processing
222
  for news in sample_news:
223
  start_time = time.perf_counter()
224
  prompt = PromptGenerator.format_prompt(news)
 
1
  from typing import Any
2
  from datetime import datetime, timedelta
3
  import time
4
+ import random
5
 
6
  import httpx
7
  from fastapi import HTTPException
8
+ from pytz import timezone
9
 
10
  from src.telegram_bot.logger import main_logger
11
  from src.telegram_bot.config import Config
 
214
  ) -> None:
215
  await self.send_message_via_proxy(chat_id, f"Fetching latest financial news for ticker {ticker} ...")
216
  try:
217
+ eastern = timezone("US/Eastern")
218
+ now_eastern = datetime.now(eastern)
219
+ if now_eastern.hour < 9 or (now_eastern.hour == 9 and now_eastern.minute < 30) or now_eastern.hour >= 16:
220
+ # Before 9:30 AM or after 4:00 PM Eastern, use yesterday
221
+ current_date = (now_eastern - timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0)
222
+ else:
223
+ current_date = now_eastern.replace(hour=0, minute=0, second=0, microsecond=0)
224
  feed = fetch_comp_financial_news(ticker=ticker,
225
  date_from=current_date.strftime('%Y-%m-%d'),
226
  date_to=current_date.strftime('%Y-%m-%d'))
227
  main_logger.info(f"Processed: {len(feed)} news items for ticker {ticker}")
228
  client = OpenRouterClient(api_key=Config.OPENROUTER_API_KEY)
229
+ sample_news = random.sample(feed, min(5, len(feed))) # Select up to 5 random news items for processing
230
  for news in sample_news:
231
  start_time = time.perf_counter()
232
  prompt = PromptGenerator.format_prompt(news)