update cron job
This commit is contained in:
parent
9ba244dfbc
commit
c280d40167
@ -123,7 +123,7 @@ def add_rank(data):
|
||||
item['rank'] = index
|
||||
return data
|
||||
|
||||
async def get_gainer_loser_active_stocks():
|
||||
async def get_gainer_loser_active_stocks(symbols):
|
||||
|
||||
#Database read 1y and 3y data
|
||||
query_fundamental_template = """
|
||||
@ -160,7 +160,6 @@ async def get_gainer_loser_active_stocks():
|
||||
gainer_json, loser_json, active_json = await asyncio.gather(*tasks)
|
||||
|
||||
|
||||
|
||||
gainer_json = [{k: v for k, v in stock.items() if stock['symbol'] in symbols} for stock in gainer_json]
|
||||
gainer_json = [entry for entry in gainer_json if entry]
|
||||
|
||||
@ -222,17 +221,26 @@ async def get_gainer_loser_active_stocks():
|
||||
entry['marketCap'] = None
|
||||
entry['volume'] = None
|
||||
|
||||
|
||||
filtered_active_json = sorted(filtered_active_json, key=lambda x: (x['marketCap'] >= 10**9, x['volume']), reverse=True)
|
||||
|
||||
|
||||
stocks = filtered_gainer_json[:20] + filtered_loser_json[:20] + filtered_active_json[:20]
|
||||
# Get the original lengths
|
||||
gainer_length = len(filtered_gainer_json)
|
||||
loser_length = len(filtered_loser_json)
|
||||
active_length = len(filtered_active_json)
|
||||
|
||||
#remove change key element
|
||||
# Combine all lists
|
||||
stocks = filtered_gainer_json + filtered_loser_json + filtered_active_json
|
||||
|
||||
# Remove change key element
|
||||
stocks = [{k: v for k, v in stock.items() if k != "change"} for stock in stocks]
|
||||
|
||||
day_gainer_json = stocks[:20]
|
||||
day_loser_json = stocks[20:40]
|
||||
day_active_json = stocks[40:60]
|
||||
|
||||
# Slice based on the original lengths
|
||||
day_gainer_json = stocks[:gainer_length]
|
||||
day_loser_json = stocks[gainer_length:gainer_length + loser_length]
|
||||
day_active_json = stocks[gainer_length + loser_length:]
|
||||
|
||||
|
||||
query_market_movers = """
|
||||
SELECT
|
||||
@ -338,8 +346,8 @@ async def get_pre_after_market_movers(symbols):
|
||||
|
||||
|
||||
# Sort the list by changesPercentage in descending order and slice the top 10
|
||||
gainers = sorted(res_list, key=lambda x: x['changesPercentage'], reverse=True)[:20]
|
||||
losers = sorted(res_list, key=lambda x: x['changesPercentage'], reverse=False)[:20]
|
||||
gainers = sorted(res_list, key=lambda x: x['changesPercentage'], reverse=True)[:50]
|
||||
losers = sorted(res_list, key=lambda x: x['changesPercentage'], reverse=False)[:50]
|
||||
|
||||
for index, item in enumerate(gainers, start=1):
|
||||
item['rank'] = index # Add rank field
|
||||
@ -380,14 +388,14 @@ try:
|
||||
con = sqlite3.connect('stocks.db')
|
||||
cursor = con.cursor()
|
||||
cursor.execute("PRAGMA journal_mode = wal")
|
||||
cursor.execute("SELECT DISTINCT symbol FROM stocks WHERE (exchangeShortName = 'NYSE' OR exchangeShortName = 'NASDAQ' or exchangeShortName = 'AMEX')")
|
||||
cursor.execute("SELECT DISTINCT symbol FROM stocks")
|
||||
symbols = [row[0] for row in cursor.fetchall()]
|
||||
#Filter out tickers
|
||||
symbols = [symbol for symbol in symbols if symbol != "STEC"]
|
||||
#symbols = [symbol for symbol in symbols if symbol != "STEC"]
|
||||
|
||||
|
||||
|
||||
data = asyncio.run(get_gainer_loser_active_stocks())
|
||||
data = asyncio.run(get_gainer_loser_active_stocks(symbols))
|
||||
with open(f"json/market-movers/data.json", 'w') as file:
|
||||
ujson.dump(data, file)
|
||||
|
||||
|
||||
@ -175,29 +175,50 @@ def format_upcoming_dividends_data(dividends_data):
|
||||
return "".join(formatted_items)
|
||||
|
||||
|
||||
import os
|
||||
from datetime import datetime
|
||||
import orjson
|
||||
import praw
|
||||
from dotenv import load_dotenv
|
||||
|
||||
def post_to_reddit():
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
# Get current date
|
||||
# Get current date with formatting
|
||||
today = datetime.now()
|
||||
month_str = today.strftime("%b")
|
||||
day = today.day
|
||||
year = today.year # Added the year variable
|
||||
year = today.year
|
||||
day_suffix = "th" if 11 <= day <= 13 else {1: "st", 2: "nd", 3: "rd"}.get(day % 10, "th")
|
||||
formatted_date = f"{month_str} {day}{day_suffix} {year}"
|
||||
|
||||
# Load and format data
|
||||
# Load and parse data from JSON file
|
||||
with open("json/dashboard/data.json", "rb") as file:
|
||||
data = orjson.loads(file.read())
|
||||
|
||||
#formatted_text = format_upcoming_earnings_data(data.get('upcomingEarnings', []))
|
||||
#title = f"Upcoming Earnings for {formatted_date}"
|
||||
|
||||
#formatted_text = format_recent_earnings_data(data.get('recentEarnings', []))
|
||||
#title = f"Recent Earnings for {formatted_date}"
|
||||
formatted_text = format_upcoming_dividends_data(data.get('recentDividends', []))
|
||||
title = f"Upcoming Dividend Announcements for {formatted_date}"
|
||||
# Define the post configurations
|
||||
post_configs = [
|
||||
{
|
||||
"data_key": "upcomingEarnings",
|
||||
"format_func": format_upcoming_earnings_data,
|
||||
"title": f"Upcoming Earnings for {formatted_date}",
|
||||
"flair_id": "b9f76638-772e-11ef-96c1-0afbf26bd890"
|
||||
},
|
||||
{
|
||||
"data_key": "recentEarnings",
|
||||
"format_func": format_recent_earnings_data,
|
||||
"title": f"Recent Earnings for {formatted_date}",
|
||||
"flair_id": "b9f76638-772e-11ef-96c1-0afbf26bd890"
|
||||
},
|
||||
{
|
||||
"data_key": "recentDividends",
|
||||
"format_func": format_upcoming_dividends_data,
|
||||
"title": f"Upcoming Dividend Announcements for {formatted_date}",
|
||||
"flair_id": "27d56764-9bc8-11ef-9264-322a4c2c1b46"
|
||||
}
|
||||
]
|
||||
|
||||
try:
|
||||
# Initialize Reddit instance
|
||||
reddit = praw.Reddit(
|
||||
@ -208,31 +229,27 @@ def post_to_reddit():
|
||||
user_agent=os.getenv('REDDIT_USER_AGENT', 'script:my_bot:v1.0 (by /u/username)')
|
||||
)
|
||||
|
||||
# Define the subreddit and post details
|
||||
# Define the subreddit
|
||||
subreddit = reddit.subreddit("stocknear")
|
||||
|
||||
#for flair in subreddit.flair.link_templates:
|
||||
# print(f"Flair ID: {flair['id']}, Flair Text: {flair['text']}")
|
||||
|
||||
earnings_flair_id = 'b9f76638-772e-11ef-96c1-0afbf26bd890'
|
||||
dividends_flair_id = '27d56764-9bc8-11ef-9264-322a4c2c1b46'
|
||||
|
||||
# Submit the post with the formatted text
|
||||
|
||||
post = subreddit.submit(
|
||||
title=title,
|
||||
selftext=formatted_text,
|
||||
flair_id=dividends_flair_id
|
||||
)
|
||||
print(f"Post created successfully with 'Earnings' flair: {post.url}")
|
||||
|
||||
# Loop through post configurations to submit each post
|
||||
for config in post_configs:
|
||||
formatted_text = config["format_func"](data.get(config["data_key"], []))
|
||||
title = config["title"]
|
||||
flair_id = config["flair_id"]
|
||||
|
||||
# Submit the post
|
||||
post = subreddit.submit(
|
||||
title=title,
|
||||
selftext=formatted_text,
|
||||
flair_id=flair_id
|
||||
)
|
||||
print(f"Post created successfully: {post.url}")
|
||||
|
||||
except praw.exceptions.PRAWException as e:
|
||||
print(f"Error posting to Reddit: {str(e)}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Unexpected error: {str(e)}")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
post_to_reddit()
|
||||
post_to_reddit()
|
||||
|
||||
@ -86,11 +86,11 @@ class Past_Market_Movers:
|
||||
performance_data.sort(key=lambda x: x[3], reverse=True)
|
||||
high_volume = sorted(performance_data, key=lambda x: x[4], reverse=True)
|
||||
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in performance_data[:20]:
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in performance_data[:50]:
|
||||
gainer_data.append({'symbol': symbol, 'name': name, 'price': price, 'changesPercentage': changes_percentage, 'volume': volume, 'marketCap': market_cap})
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in performance_data[-20:]:
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in performance_data[-50:]:
|
||||
loser_data.append({'symbol': symbol, 'name': name, 'price': price, 'changesPercentage': changes_percentage, 'volume': volume, 'marketCap': market_cap})
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in high_volume[:20]:
|
||||
for symbol, name, price, changes_percentage, volume, market_cap in high_volume[:50]:
|
||||
active_data.append({'symbol': symbol, 'name': name, 'price': price, 'changesPercentage': changes_percentage, 'volume': volume, 'marketCap': market_cap})
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user