[modules/stock] update to latest API

This commit is contained in:
tobi-wan-kenobi 2020-04-19 09:49:06 +02:00
parent 6b0e73db9b
commit 63a2881be8

View file

@ -11,51 +11,50 @@ Parameters:
* stock.change : Should we fetch change in stock value (defaults to True)
"""
import bumblebee.input
import bumblebee.output
import bumblebee.engine
import bumblebee.util
import json
import requests
import urllib.request
import logging
class Module(bumblebee.engine.Module):
def __init__(self, engine, config):
super(Module, self).__init__(engine, config,
bumblebee.output.Widget(full_text=self.value)
)
self._symbols = self.parameter('symbols', '')
self._change = bumblebee.util.asbool(self.parameter('change', True))
self._value = None
self.interval_factor(60)
self.interval(60)
import core.module
import core.widget
import core.decorators
import util.format
class Module(core.module.Module):
@core.decorators.every(hours=1)
def __init__(self, config):
super().__init__(config, core.widget.Widget(self.value))
self.__symbols = self.parameter('symbols', '')
self.__change = util.format.asbool(self.parameter('change', True))
self.__value = None
def value(self, widget):
results = []
if not self._value:
if not self.__value:
return 'n/a'
data = json.loads(self._value)
data = json.loads(self.__value)
for symbol in data['quoteResponse']['result']:
valkey = 'regularMarketChange' if self._change else 'regularMarketPrice'
sym = 'n/a' if not 'symbol' in symbol else symbol['symbol']
currency = 'USD' if not 'currency' in symbol else symbol['currency']
valkey = 'regularMarketChange' if self.__change else 'regularMarketPrice'
sym = symbol.get('symbol', 'n/a')
currency = symbol.get('currency', 'USD')
val = 'n/a' if not valkey in symbol else '{:.2f}'.format(symbol[valkey])
results.append('{} {} {}'.format(sym, val, currency))
return u' '.join(results)
def fetch(self):
if self._symbols:
if self.__symbols:
url = 'https://query1.finance.yahoo.com/v7/finance/quote?symbols='
url += self._symbols + '&fields=regularMarketPrice,currency,regularMarketChange'
return requests.get(url).text.strip()
url += self.__symbols + '&fields=regularMarketPrice,currency,regularMarketChange'
return urllib.request.urlopen(url).read().strip()
else:
logging.error('unable to retrieve stock exchange rate')
return None
def update(self, widgets):
self._value = self.fetch()
def update(self):
self.__value = self.fetch()
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4