diff --git a/lnbits/utils/exchange_rates.py b/lnbits/utils/exchange_rates.py index daa75b93..c1ef9d35 100644 --- a/lnbits/utils/exchange_rates.py +++ b/lnbits/utils/exchange_rates.py @@ -191,6 +191,7 @@ class Provider(NamedTuple): domain: str api_url: str getter: Callable + exclude_to: list = [] exchange_rate_providers = { @@ -200,6 +201,7 @@ exchange_rate_providers = { "binance.com", "https://api.binance.com/api/v3/ticker/price?symbol={FROM}{TO}", lambda data, replacements: data["price"], + ["czk"], ), "blockchain": Provider( "Blockchain", @@ -212,18 +214,21 @@ exchange_rate_providers = { "exir.io", "https://api.exir.io/v1/ticker?symbol={from}-{to}", lambda data, replacements: data["last"], + ["czk", "eur"], ), "bitfinex": Provider( "Bitfinex", "bitfinex.com", "https://api.bitfinex.com/v1/pubticker/{from}{to}", lambda data, replacements: data["last_price"], + ["czk"], ), "bitstamp": Provider( "Bitstamp", "bitstamp.net", "https://www.bitstamp.net/api/v2/ticker/{from}{to}/", lambda data, replacements: data["last"], + ["czk"], ), "coinbase": Provider( "Coinbase", @@ -242,6 +247,7 @@ exchange_rate_providers = { "kraken.com", "https://api.kraken.com/0/public/Ticker?pair=XBT{TO}", lambda data, replacements: data["result"]["XXBTZ" + replacements["TO"]]["c"][0], + ["czk"], ), } @@ -255,6 +261,9 @@ async def btc_price(currency: str) -> float: } async def fetch_price(provider: Provider): + if currency.lower() in provider.exclude_to: + raise Exception(f"Provider {provider.name} does not support {currency}.") + url = provider.api_url.format(**replacements) try: headers = {"User-Agent": settings.user_agent}