GetDailyStock/GetDailyv2.py

79 lines
2.4 KiB
Python

#Get stock symbols in a file
#Get daily quote at end of day
#Send email
#Using yfinance from https://pypi.org/project/yfinance/
import yfinance as yf
import smtplib, ssl, sys, os, configparser
import sqlite3
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from smtplib import SMTP
#Username/Password for email service, change location of the file
config = configparser.ConfigParser()
config.read("c:/Users/Seb/pythonmodule/Module1/testenv.txt")
emailp = config.get("config","test")
#Yfinance tests
#https://pypi.org/project/yfinance/
#Change these values for the desired tickers
data2 = yf.download("CRSR VTI VOO DIS UI TSLA TTWO GME", period="1d")
#Setup date format
Dayclose = data2["Close"].round(decimals=2)
#Email variables for multiple recipients use coma
recipients = ["sebastien.trudel@pirolian.com"]
emaillist = [elem.strip().split(',') for elem in recipients]
msg = MIMEMultipart()
msg["Subject"] = "Daily Stock report"
msg["From"] = "strudel@pirolian.com"
#Email format as HTML, using a table
html = """\
<html>
<head></head>
<body>
{0}
</body>
</html>
""".format(Dayclose.to_html())
part1 = MIMEText(html, "html")
msg.attach(part1)
context = ssl.create_default_context()
Email_Port = 465 # If you are not using a gmail account, you will need to look up the port for your specific email host
with smtplib.SMTP_SSL("smtppro.zoho.com", Email_Port, context=context) as server:
server.login("strudel@pirolian.com", emailp) # This statement is of the form: server.login(<Your email>, "Your email password")
# server.sendmail("strudel@pirolian.com", "sebastien.trudel@pirolian.com", Body_of_Email) # This statement is of the form: server.sendmail(<Your email>, <Email receiving message>, Body_of_Email)
server.sendmail(msg["From"], emaillist, msg.as_string()) # This statement is of the form: server.sendmail(<Your email>, <Email receiving message>, Body_of_Email)
#Put data in a sqlite database
#DB is dbstocks.sqlite, table is dailystocks, fields are date as text, ticker as text, test as text and price as int
try:
sqliteConnection = sqlite3.connect('dbstocks.sqlite')
cursor = sqliteConnection.cursor()
print("Successfully Connected to SQLite")
except sqlite3.Error as error:
print("Error while executing sqlite script", error)
#cursor.execute('SELECT * from dailystocks')
#rows = cursor.fetchall()
#for row in rows:
# print(row)