From b37f99c25d04d2181e0d24ecbc59d370b0f60613 Mon Sep 17 00:00:00 2001 From: Volko61 <147256076+Volko61@users.noreply.github.com> Date: Sun, 12 Oct 2025 00:59:06 +0800 Subject: [PATCH] Corrected limits as an int, update api version and add intervall --- marketstack.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/marketstack.py b/marketstack.py index fd7c698..f75dafe 100644 --- a/marketstack.py +++ b/marketstack.py @@ -42,9 +42,9 @@ def prep_args(args:dict, only_keys:List[str] =None): return {key: value for key, value in args.items() if key not in ARG_EXCEPTIONS} class MarketStack: - def __init__(self, endpoint: str, symbols: Optional[str] = None, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None, search: Optional[str] = None): - self.base_url = "http://api.marketstack.com/v1/" - self.url = f"http://api.marketstack.com/v1/{self.validate_endpoint(endpoint)}" + def __init__(self, interval: Optional[str], endpoint: str, symbols: Optional[str] = None, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[int] = None, offset: Optional[str] = None, search: Optional[str] = None): + self.base_url = "http://api.marketstack.com/v2/" + self.url = f"http://api.marketstack.com/v2/{self.validate_endpoint(endpoint)}" self.endpoint = endpoint #define parameters for API call. Making sure the API Key is always included. self.params = { @@ -63,6 +63,8 @@ def __init__(self, endpoint: str, symbols: Optional[str] = None, exchange: Optio if symbols: self.params['symbols'] = symbols + if interval: + self.params['interval'] = interval if exchange: self.params['exchange'] = exchange if sort: @@ -208,37 +210,37 @@ def get_data_df(self): class EndOfDay(MarketStack): def __init__(self, symbols: str, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None): args = prep_args(locals()) - super().__init__('eod', **args) + super().__init__(interval=None, endpoint='eod', **args) class Intraday(MarketStack): - def __init__(self, symbols: str, exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None): + def __init__(self, symbols: str, interval: Optional[str], exchange: Optional[str] = None, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None): args = prep_args(locals()) - super().__init__('intraday', **args) + super().__init__(endpoint='intraday', **args) class Splits(MarketStack): def __init__(self, symbols: str, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None): args = prep_args(locals()) - super().__init__('splits', **args) + super().__init__(interval=None, endpoint='splits', **args) class Dividends(MarketStack): def __init__(self, symbols: str, sort: Optional[str] = None, date_from: Optional[str] = None, date_to: Optional[str] = None, limit: Optional[str] = None, offset: Optional[str] = None): args = prep_args(locals()) - super().__init__('dividends', **args) + super().__init__(interval=None, endpoint='dividends', **args) class Currencies(MarketStack): def __init__(self, limit: Optional[int] = None, offset: Optional[int] = None): args = prep_args(locals()) - super().__init__('currencies', **args) + super().__init__(interval=None, endpoint='currencies', **args) class TimeZones(MarketStack): def __init__(self, limit: Optional[int] = None, offset: Optional[int] = None): args = prep_args(locals()) - super().__init__('timezones', **args) + super().__init__(interval=None, endpoint='timezones', **args) class Tickers(MarketStack): def __init__(self, get_symbol: Optional[str] = None, exchange: Optional[str] = None, search: Optional[str] = None, limit: Optional[int] = None, offset: Optional[int] = None, get_splits: bool = False, get_dividends: bool = False, get_eod: bool = False, get_intraday: bool = False, date: Optional[str] = None, get_latest: bool = False): args = prep_args(locals(), only_keys=['exchange', 'search', 'limit', 'offset']) - super().__init__('tickers', **args) + super().__init__(interval=None, endpoint='tickers', **args) self.get_symbol = get_symbol @@ -338,7 +340,7 @@ def build_url(self): class Exchanges(MarketStack): def __init__(self, search: Optional[str] = None, limit: Optional[int] = None, offset: Optional[int] = None, mic: Optional[str] = None, get_tickers: Optional[bool] = False, get_eod: Optional[bool] = False, get_intraday: Optional[bool] = False, date: Optional[str] = None, get_latest: Optional[bool] = False): args = prep_args(locals(), only_keys=['search', 'limit', 'offset']) - super().__init__('exchanges', **args) + super().__init__(interval=None, endpoint='exchanges', **args) self.mic = mic self.get_tickers = get_tickers