1
0
mirror of https://gitlab.com/simple-stock-bots/simple-stock-bot.git synced 2026-06-03 21:00:26 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Anson 25d13533eb fix bug 2023-11-29 03:22:29 +00:00
Anson d5e40a976b black 2023-10-17 00:03:34 -06:00
Anson 2d94d19b52 okay actually finish patch lol 2023-10-16 23:59:23 -06:00
Anson 850598b696 finish patch lol 2023-10-16 23:55:32 -06:00
Anson 43b58fdbe8 patch 2023-10-16 23:53:28 -06:00
2 changed files with 28 additions and 3 deletions
+20 -3
View File
@@ -54,9 +54,12 @@ class MarketData:
self.get_symbol_list() self.get_symbol_list()
schedule.every().day.do(self.get_symbol_list) schedule.every().day.do(self.get_symbol_list)
def get(self, endpoint, params: dict = {}, timeout=10) -> dict: def get(self, endpoint, params=None, timeout=10, headers=None) -> dict:
url = "https://api.marketdata.app/v1/" + endpoint url = "https://api.marketdata.app/v1/" + endpoint
if params is None:
params = {}
# set token param if it wasn't passed. # set token param if it wasn't passed.
params["token"] = self.MARKETDATA_TOKEN params["token"] = self.MARKETDATA_TOKEN
@@ -64,7 +67,13 @@ class MarketData:
# monitored even if someone doesn't make it through an affiliate link. # monitored even if someone doesn't make it through an affiliate link.
params["application"] = "simplestockbot" params["application"] = "simplestockbot"
resp = r.get(url, params=params, timeout=timeout) if headers is None:
headers = {}
headers = {"User-Agent": "Simple Stock Bot anson@ansonbiggs.com"} | headers
resp = r.get(url, params=params, timeout=timeout, headers=headers)
logging.error(resp.headers.items())
# Make sure API returned a proper status code # Make sure API returned a proper status code
try: try:
@@ -95,7 +104,15 @@ class MarketData:
return self.symbol_list.get(symbol.upper(), None) return self.symbol_list.get(symbol.upper(), None)
def get_symbol_list(self): def get_symbol_list(self):
sec_resp = r.get("https://www.sec.gov/files/company_tickers.json") # Doesn't use `self.get`` since needs are much different
sec_resp = r.get(
"https://www.sec.gov/files/company_tickers.json",
headers={
"User-Agent": "Simple Stock Bot anson@ansonbiggs.com",
"Accept-Encoding": "gzip, deflate",
"Host": "www.sec.gov",
},
)
sec_resp.raise_for_status() sec_resp.raise_for_status()
sec_data = sec_resp.json() sec_data = sec_resp.json()
+8
View File
@@ -9,6 +9,8 @@ from markdownify import markdownify
from common.Symbol import Coin from common.Symbol import Coin
from common.utilities import rate_limited from common.utilities import rate_limited
import time
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@@ -34,6 +36,12 @@ class cg_Crypto:
url = "https://api.coingecko.com/api/v3" + endpoint url = "https://api.coingecko.com/api/v3" + endpoint
resp = r.get(url, params=params, timeout=timeout) resp = r.get(url, params=params, timeout=timeout)
# Make sure API returned a proper status code # Make sure API returned a proper status code
if resp.status_code == 429:
log.warning(f"CoinGecko returned 429 - Too Many Requests for endpoint: {endpoint}. Sleeping and trying again.")
time.sleep(10)
return self.get(endpoint=endpoint, params=params, timeout=timeout)
try: try:
resp.raise_for_status() resp.raise_for_status()
except r.exceptions.HTTPError as e: except r.exceptions.HTTPError as e: