aprsd-stock-plugin/aprsd_stock_plugin/stock.py

61 lines
1.5 KiB
Python

import logging
import re
import yfinance as yf
from aprsd import plugin
import aprsd_stock_plugin
LOG = logging.getLogger("APRSD")
class YahooStockQuote(plugin.APRSDRegexCommandPluginBase):
version = aprsd_stock_plugin.__version__
# Look for any command that starts with s or S
command_regex = "^[sS]"
# the command is for ?
command_name = "stock"
enabled = False
def setup(self):
# Do some checks here?
self.enabled = True
def process(self, packet):
LOG.info(self.__class__.__name__)
# fromcall = packet.get("from")
message = packet.get("message_text", None)
# ack = packet.get("msgNo", "0")
a = re.search(r"^.*\s+(.*)", message)
if a is not None:
searchcall = a.group(1)
stock_symbol = searchcall.upper()
else:
reply = "No stock symbol"
return reply
LOG.info(f"Fetch stock quote for '{stock_symbol}'")
try:
stock = yf.Ticker(stock_symbol)
reply = "{} - ask: {} high: {} low: {}".format(
stock_symbol,
stock.info["ask"],
stock.info["dayHigh"],
stock.info["dayLow"],
)
except Exception as e:
LOG.error(
f"Failed to fetch stock '{stock_symbol}' from yahoo '{e}'",
)
reply = f"Failed to fetch stock '{stock_symbol}'"
return reply.rstrip()