Ticker: Add a stock ticker plugin (#822)
Pull stock info from Yahoo (via yfinance) and display a customizable ticker. Signed-off-by: David Wahlstrom <david.wahlstrom@gmail.com>
This commit is contained in:
parent
d0912be27e
commit
ac71437b29
@ -68,7 +68,8 @@ MOCK_MODULES = [
|
|||||||
"requests.adapters",
|
"requests.adapters",
|
||||||
"exchangelib",
|
"exchangelib",
|
||||||
"soco",
|
"soco",
|
||||||
"tesla_api"
|
"tesla_api",
|
||||||
|
"yfinance"
|
||||||
]
|
]
|
||||||
|
|
||||||
for mod_name in MOCK_MODULES:
|
for mod_name in MOCK_MODULES:
|
||||||
|
48
i3pystatus/ticker.py
Normal file
48
i3pystatus/ticker.py
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
from i3pystatus import IntervalModule
|
||||||
|
import yfinance as yf
|
||||||
|
|
||||||
|
|
||||||
|
class Ticker(IntervalModule):
|
||||||
|
"""
|
||||||
|
Displays stock ticker information from yahoo finance
|
||||||
|
Requires: yfinance
|
||||||
|
"""
|
||||||
|
|
||||||
|
settings = (
|
||||||
|
("symbol", "Stock symbol to track"),
|
||||||
|
("interval", "Update interval (in seconds)"),
|
||||||
|
("good_color", "Color of text while 'regularMarketPrice' is above "
|
||||||
|
"good_threshold"),
|
||||||
|
("bad_color", "Color of text while 'regularMarketPrice' is below "
|
||||||
|
"bad_threshold"),
|
||||||
|
("caution_color", "Color of text while 'regularMarketPrice' is between good "
|
||||||
|
"and bad thresholds"),
|
||||||
|
("good_threshold", "The target value for consindering the stock a good value"),
|
||||||
|
("bad_threshold", "The target value for consindering the stock a poor value"),
|
||||||
|
"format"
|
||||||
|
)
|
||||||
|
#required = "symbol"
|
||||||
|
good_color = "#00FF00" # green
|
||||||
|
caution_color = "#FFFF00" # yellow
|
||||||
|
bad_color = "#FF0000" # red
|
||||||
|
good_threshold = 100
|
||||||
|
bad_threshold = 50
|
||||||
|
interval = 300
|
||||||
|
format = "{symbol}: {regularMarketPrice} ({regularMarketDayHigh}/{regularMarketDayLow})"
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
|
||||||
|
stock = yf.Ticker(self.symbol)
|
||||||
|
tick = stock.info
|
||||||
|
|
||||||
|
if tick['regularMarketPrice'] >= float(self.good_threshold):
|
||||||
|
color = self.good_color
|
||||||
|
elif tick['regularMarketPrice'] <= float(self.bad_threshold):
|
||||||
|
color = self.bad_color
|
||||||
|
else:
|
||||||
|
color = self.caution_color
|
||||||
|
|
||||||
|
self.output = {
|
||||||
|
"full_text": self.format.format(**tick),
|
||||||
|
"color": color
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user