Browse Source

Fix CoinDesk exchange rates and update currencies.json

3.1
ThomasV 7 years ago
parent
commit
95c5815fe3
  1. 205
      lib/currencies.json
  2. 15
      lib/exchange_rate.py

205
lib/currencies.json

@ -1,7 +1,4 @@
{ {
"BTCChina": [
"CNY"
],
"BitPay": [ "BitPay": [
"AED", "AED",
"AFN", "AFN",
@ -15,6 +12,7 @@
"AZN", "AZN",
"BAM", "BAM",
"BBD", "BBD",
"BCH",
"BDT", "BDT",
"BGN", "BGN",
"BHD", "BHD",
@ -211,7 +209,6 @@
"EGP", "EGP",
"ERN", "ERN",
"ETB", "ETB",
"ETH",
"EUR", "EUR",
"FJD", "FJD",
"FKP", "FKP",
@ -254,7 +251,6 @@
"LKR", "LKR",
"LRD", "LRD",
"LSL", "LSL",
"LTC",
"LYD", "LYD",
"MAD", "MAD",
"MDL", "MDL",
@ -331,10 +327,8 @@
"XPD", "XPD",
"XPF", "XPF",
"XPT", "XPT",
"XRP",
"YER", "YER",
"ZAR", "ZAR",
"ZEC",
"ZMW", "ZMW",
"ZWL" "ZWL"
], ],
@ -371,6 +365,175 @@
"TWD", "TWD",
"USD" "USD"
], ],
"CoinDesk": [
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BHD",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BTC",
"BTN",
"BWP",
"BYR",
"BZD",
"CAD",
"CDF",
"CHF",
"CLF",
"CLP",
"CNY",
"COP",
"CRC",
"CUP",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EEK",
"EGP",
"ERN",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GHS",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HRK",
"HTG",
"HUF",
"IDR",
"ILS",
"INR",
"IQD",
"IRR",
"ISK",
"JEP",
"JMD",
"JOD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KPW",
"KRW",
"KWD",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"LTL",
"LVL",
"LYD",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRO",
"MTL",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"OMR",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SDG",
"SEK",
"SGD",
"SHP",
"SLL",
"SOS",
"SRD",
"STD",
"SVC",
"SYP",
"SZL",
"THB",
"TJS",
"TMT",
"TND",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"USD",
"UYU",
"UZS",
"VEF",
"VND",
"VUV",
"WST",
"XAF",
"XAG",
"XAU",
"XBT",
"XCD",
"XDR",
"XOF",
"XPF",
"YER",
"ZAR",
"ZMK",
"ZMW",
"ZWL"
],
"Coinbase": [ "Coinbase": [
"AED", "AED",
"AFN", "AFN",
@ -384,6 +547,7 @@
"AZN", "AZN",
"BAM", "BAM",
"BBD", "BBD",
"BCH",
"BDT", "BDT",
"BGN", "BGN",
"BHD", "BHD",
@ -403,6 +567,7 @@
"CHF", "CHF",
"CLF", "CLF",
"CLP", "CLP",
"CNH",
"CNY", "CNY",
"COP", "COP",
"CRC", "CRC",
@ -542,9 +707,6 @@
"ZMW", "ZMW",
"ZWL" "ZWL"
], ],
"Coinsecure": [
"INR"
],
"Foxbit": [ "Foxbit": [
"BRL" "BRL"
], ],
@ -559,7 +721,10 @@
"AED", "AED",
"ARS", "ARS",
"AUD", "AUD",
"BAM",
"BDT", "BDT",
"BHD",
"BOB",
"BRL", "BRL",
"BYN", "BYN",
"CAD", "CAD",
@ -572,6 +737,7 @@
"DKK", "DKK",
"DOP", "DOP",
"EGP", "EGP",
"ETH",
"EUR", "EUR",
"GBP", "GBP",
"GHS", "GHS",
@ -579,20 +745,21 @@
"HRK", "HRK",
"HUF", "HUF",
"IDR", "IDR",
"ILS",
"INR", "INR",
"IRR", "IRR",
"ISK", "JOD",
"JPY", "JPY",
"KES", "KES",
"KRW",
"KZT", "KZT",
"LKR",
"MAD", "MAD",
"MMK",
"MXN", "MXN",
"MYR", "MYR",
"NGN", "NGN",
"NOK", "NOK",
"NZD", "NZD",
"OMR",
"PAB", "PAB",
"PEN", "PEN",
"PHP", "PHP",
@ -602,20 +769,23 @@
"RON", "RON",
"RSD", "RSD",
"RUB", "RUB",
"RWF",
"SAR", "SAR",
"SEK", "SEK",
"SGD", "SGD",
"THB", "THB",
"TRY", "TRY",
"TWD", "TTD",
"TZS", "TZS",
"UAH", "UAH",
"UGX", "UGX",
"USD", "USD",
"UYU",
"VEF", "VEF",
"VND", "VND",
"XAF", "XAR",
"ZAR" "ZAR",
"ZMW"
], ],
"MercadoBitcoin": [ "MercadoBitcoin": [
"BRL" "BRL"
@ -623,9 +793,6 @@
"NegocieCoins": [ "NegocieCoins": [
"BRL" "BRL"
], ],
"Winkdex": [
"USD"
],
"WEX": [ "WEX": [
"EUR", "EUR",
"RUB", "RUB",

15
lib/exchange_rate.py

@ -33,7 +33,7 @@ class ExchangeBase(PrintError):
def get_json(self, site, get_string): def get_json(self, site, get_string):
# APIs must have https # APIs must have https
url = ''.join(['https://', site, get_string]) url = ''.join(['https://', site, get_string])
response = requests.request('GET', url, headers={'User-Agent' : 'Electrum'}) response = requests.request('GET', url, headers={'User-Agent' : 'Electrum'}, timeout=10)
return response.json() return response.json()
def get_csv(self, site, get_string): def get_csv(self, site, get_string):
@ -199,18 +199,19 @@ class Coinbase(ExchangeBase):
class CoinDesk(ExchangeBase): class CoinDesk(ExchangeBase):
def get_rates(self, ccy): def get_currencies(self):
dicts = self.get_json('api.coindesk.com', dicts = self.get_json('api.coindesk.com',
'/v1/bpi/supported-currencies.json') '/v1/bpi/supported-currencies.json')
return [d['currency'] for d in dicts]
def get_rates(self, ccy):
json = self.get_json('api.coindesk.com', json = self.get_json('api.coindesk.com',
'/v1/bpi/currentprice/%s.json' % ccy) '/v1/bpi/currentprice/%s.json' % ccy)
ccys = [d['currency'] for d in dicts] result = {ccy: Decimal(json['bpi'][ccy]['rate_float'])}
result = dict.fromkeys(ccys)
result[ccy] = Decimal(json['bpi'][ccy]['rate_float'])
return result return result
def history_starts(self): def history_starts(self):
return { 'USD': '2012-11-30' } return { 'USD': '2012-11-30', 'EUR': '2013-09-01' }
def history_ccys(self): def history_ccys(self):
return self.history_starts().keys() return self.history_starts().keys()
@ -346,7 +347,9 @@ def get_exchanges_and_currencies():
exchange = klass(None, None) exchange = klass(None, None)
try: try:
d[name] = exchange.get_currencies() d[name] = exchange.get_currencies()
print(name, "ok")
except: except:
print(name, "error")
continue continue
with open(path, 'w') as f: with open(path, 'w') as f:
f.write(json.dumps(d, indent=4, sort_keys=True)) f.write(json.dumps(d, indent=4, sort_keys=True))

Loading…
Cancel
Save