From 6b23fe36f42dff02ba32038653ce524b806ff464 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Thu, 22 Oct 2015 14:25:06 -0700 Subject: [PATCH] stock: display after-hours stock data --- plugins/stock.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/plugins/stock.py b/plugins/stock.py index 4229716..5756448 100644 --- a/plugins/stock.py +++ b/plugins/stock.py @@ -8,7 +8,7 @@ def stock(inp): url = ('http://query.yahooapis.com/v1/public/yql?format=json&' 'env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys') - parsed = http.get_json(url, q='select * from yahoo.finance.quote ' + parsed = http.get_json(url, q='select * from yahoo.finance.quotes ' 'where symbol in ("%s")' % inp) # heh, SQLI quote = parsed['query']['results']['quote'] @@ -17,8 +17,19 @@ def stock(inp): if quote['Change'] is None: return "unknown ticker symbol %s" % inp - change = float(quote['Change']) price = float(quote['LastTradePriceOnly']) + change = float(quote['Change']) + if quote['Open'] and quote['Bid'] and quote['Ask']: + open_price = float(quote['Open']) + bid = float(quote['Bid']) + ask = float(quote['Ask']) + if price < bid: + price = bid + elif price > ask: + price = ask + change = price - open_price + quote['LastTradePriceOnly'] = price + quote['Change'] = ("+%.2f" % change) if change >= 0 else change if change < 0: quote['color'] = "5" @@ -27,7 +38,7 @@ def stock(inp): quote['PercentChange'] = 100 * change / (price - change) - ret = "%(Name)s - %(LastTradePriceOnly)s " \ + ret = "%(Name)s - %(LastTradePriceOnly).2f " \ "\x03%(color)s%(Change)s (%(PercentChange).2f%%)\x03 " \ "Day Range: %(DaysRange)s " \ "MCAP: %(MarketCapitalization)s" % quote