BTC->ZCL-USD exchange rates, ux
This commit is contained in:
parent
e97eb82d2b
commit
037a27e3cf
|
@ -1,635 +1,7 @@
|
||||||
{
|
{
|
||||||
"BTCChina": [
|
"CryptoCompare": [
|
||||||
"CNY"
|
"USD",
|
||||||
],
|
|
||||||
"BitPay": [
|
|
||||||
"AED",
|
|
||||||
"AFN",
|
|
||||||
"ALL",
|
|
||||||
"AMD",
|
|
||||||
"ANG",
|
|
||||||
"AOA",
|
|
||||||
"ARS",
|
|
||||||
"AUD",
|
|
||||||
"AWG",
|
|
||||||
"AZN",
|
|
||||||
"BAM",
|
|
||||||
"BBD",
|
|
||||||
"BDT",
|
|
||||||
"BGN",
|
|
||||||
"BHD",
|
|
||||||
"BIF",
|
|
||||||
"BMD",
|
|
||||||
"BND",
|
|
||||||
"BOB",
|
|
||||||
"BRL",
|
|
||||||
"BSD",
|
|
||||||
"BTC",
|
|
||||||
"BTN",
|
|
||||||
"BWP",
|
|
||||||
"BZD",
|
|
||||||
"CAD",
|
|
||||||
"CDF",
|
|
||||||
"CHF",
|
|
||||||
"CLF",
|
|
||||||
"CLP",
|
|
||||||
"CNY",
|
|
||||||
"COP",
|
|
||||||
"CRC",
|
|
||||||
"CUP",
|
|
||||||
"CVE",
|
|
||||||
"CZK",
|
|
||||||
"DJF",
|
|
||||||
"DKK",
|
|
||||||
"DOP",
|
|
||||||
"DZD",
|
|
||||||
"EGP",
|
|
||||||
"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",
|
|
||||||
"LYD",
|
|
||||||
"MAD",
|
|
||||||
"MDL",
|
|
||||||
"MGA",
|
|
||||||
"MKD",
|
|
||||||
"MMK",
|
|
||||||
"MNT",
|
|
||||||
"MOP",
|
|
||||||
"MRO",
|
|
||||||
"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",
|
|
||||||
"XCD",
|
|
||||||
"XOF",
|
|
||||||
"XPF",
|
|
||||||
"YER",
|
|
||||||
"ZAR",
|
|
||||||
"ZMW",
|
|
||||||
"ZWL"
|
|
||||||
],
|
|
||||||
"BitStamp": [
|
|
||||||
"USD"
|
|
||||||
],
|
|
||||||
"BitcoinAverage": [
|
|
||||||
"AED",
|
|
||||||
"AFN",
|
|
||||||
"ALL",
|
|
||||||
"AMD",
|
|
||||||
"ANG",
|
|
||||||
"AOA",
|
|
||||||
"ARS",
|
|
||||||
"AUD",
|
|
||||||
"AWG",
|
|
||||||
"AZN",
|
|
||||||
"BAM",
|
|
||||||
"BBD",
|
|
||||||
"BDT",
|
|
||||||
"BGN",
|
|
||||||
"BHD",
|
|
||||||
"BIF",
|
|
||||||
"BMD",
|
|
||||||
"BND",
|
|
||||||
"BOB",
|
|
||||||
"BRL",
|
|
||||||
"BSD",
|
|
||||||
"BTN",
|
|
||||||
"BWP",
|
|
||||||
"BYN",
|
|
||||||
"BZD",
|
|
||||||
"CAD",
|
|
||||||
"CDF",
|
|
||||||
"CHF",
|
|
||||||
"CLF",
|
|
||||||
"CLP",
|
|
||||||
"CNH",
|
|
||||||
"CNY",
|
|
||||||
"COP",
|
|
||||||
"CRC",
|
|
||||||
"CUC",
|
|
||||||
"CUP",
|
|
||||||
"CVE",
|
|
||||||
"CZK",
|
|
||||||
"DJF",
|
|
||||||
"DKK",
|
|
||||||
"DOP",
|
|
||||||
"DZD",
|
|
||||||
"EGP",
|
|
||||||
"ERN",
|
|
||||||
"ETB",
|
|
||||||
"ETH",
|
|
||||||
"EUR",
|
|
||||||
"FJD",
|
|
||||||
"FKP",
|
|
||||||
"GBP",
|
|
||||||
"GEL",
|
|
||||||
"GGP",
|
|
||||||
"GHS",
|
|
||||||
"GIP",
|
|
||||||
"GMD",
|
|
||||||
"GNF",
|
|
||||||
"GTQ",
|
|
||||||
"GYD",
|
|
||||||
"HKD",
|
|
||||||
"HNL",
|
|
||||||
"HRK",
|
|
||||||
"HTG",
|
|
||||||
"HUF",
|
|
||||||
"IDR",
|
|
||||||
"ILS",
|
|
||||||
"IMP",
|
|
||||||
"INR",
|
|
||||||
"IQD",
|
|
||||||
"IRR",
|
|
||||||
"ISK",
|
|
||||||
"JEP",
|
|
||||||
"JMD",
|
|
||||||
"JOD",
|
|
||||||
"JPY",
|
|
||||||
"KES",
|
|
||||||
"KGS",
|
|
||||||
"KHR",
|
|
||||||
"KMF",
|
|
||||||
"KPW",
|
|
||||||
"KRW",
|
|
||||||
"KWD",
|
|
||||||
"KYD",
|
|
||||||
"KZT",
|
|
||||||
"LAK",
|
|
||||||
"LBP",
|
|
||||||
"LKR",
|
|
||||||
"LRD",
|
|
||||||
"LSL",
|
|
||||||
"LTC",
|
|
||||||
"LYD",
|
|
||||||
"MAD",
|
|
||||||
"MDL",
|
|
||||||
"MGA",
|
|
||||||
"MKD",
|
|
||||||
"MMK",
|
|
||||||
"MNT",
|
|
||||||
"MOP",
|
|
||||||
"MRO",
|
|
||||||
"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",
|
|
||||||
"SSP",
|
|
||||||
"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",
|
|
||||||
"XCD",
|
|
||||||
"XDR",
|
|
||||||
"XOF",
|
|
||||||
"XPD",
|
|
||||||
"XPF",
|
|
||||||
"XPT",
|
|
||||||
"XRP",
|
|
||||||
"YER",
|
|
||||||
"ZAR",
|
|
||||||
"ZEC",
|
|
||||||
"ZMW",
|
|
||||||
"ZWL"
|
|
||||||
],
|
|
||||||
"Bitmarket": [
|
|
||||||
"PLN"
|
|
||||||
],
|
|
||||||
"Bitso": [
|
|
||||||
"MXN"
|
|
||||||
],
|
|
||||||
"Bitvalor": [
|
|
||||||
"BRL"
|
|
||||||
],
|
|
||||||
"BlockchainInfo": [
|
|
||||||
"AUD",
|
|
||||||
"BRL",
|
|
||||||
"CAD",
|
|
||||||
"CHF",
|
|
||||||
"CLP",
|
|
||||||
"CNY",
|
|
||||||
"DKK",
|
|
||||||
"EUR",
|
|
||||||
"GBP",
|
|
||||||
"HKD",
|
|
||||||
"INR",
|
|
||||||
"ISK",
|
|
||||||
"JPY",
|
|
||||||
"KRW",
|
|
||||||
"NZD",
|
|
||||||
"PLN",
|
|
||||||
"RUB",
|
|
||||||
"SEK",
|
|
||||||
"SGD",
|
|
||||||
"THB",
|
|
||||||
"TWD",
|
|
||||||
"USD"
|
|
||||||
],
|
|
||||||
"Coinbase": [
|
|
||||||
"AED",
|
|
||||||
"AFN",
|
|
||||||
"ALL",
|
|
||||||
"AMD",
|
|
||||||
"ANG",
|
|
||||||
"AOA",
|
|
||||||
"ARS",
|
|
||||||
"AUD",
|
|
||||||
"AWG",
|
|
||||||
"AZN",
|
|
||||||
"BAM",
|
|
||||||
"BBD",
|
|
||||||
"BDT",
|
|
||||||
"BGN",
|
|
||||||
"BHD",
|
|
||||||
"BIF",
|
|
||||||
"BMD",
|
|
||||||
"BND",
|
|
||||||
"BOB",
|
|
||||||
"BRL",
|
|
||||||
"BSD",
|
|
||||||
"BTN",
|
|
||||||
"BWP",
|
|
||||||
"BYN",
|
|
||||||
"BYR",
|
|
||||||
"BZD",
|
|
||||||
"CAD",
|
|
||||||
"CDF",
|
|
||||||
"CHF",
|
|
||||||
"CLF",
|
|
||||||
"CLP",
|
|
||||||
"CNY",
|
|
||||||
"COP",
|
|
||||||
"CRC",
|
|
||||||
"CUC",
|
|
||||||
"CVE",
|
|
||||||
"CZK",
|
|
||||||
"DJF",
|
|
||||||
"DKK",
|
|
||||||
"DOP",
|
|
||||||
"DZD",
|
|
||||||
"EEK",
|
|
||||||
"EGP",
|
|
||||||
"ERN",
|
|
||||||
"ETB",
|
|
||||||
"ETH",
|
|
||||||
"EUR",
|
|
||||||
"FJD",
|
|
||||||
"FKP",
|
|
||||||
"GBP",
|
|
||||||
"GEL",
|
|
||||||
"GGP",
|
|
||||||
"GHS",
|
|
||||||
"GIP",
|
|
||||||
"GMD",
|
|
||||||
"GNF",
|
|
||||||
"GTQ",
|
|
||||||
"GYD",
|
|
||||||
"HKD",
|
|
||||||
"HNL",
|
|
||||||
"HRK",
|
|
||||||
"HTG",
|
|
||||||
"HUF",
|
|
||||||
"IDR",
|
|
||||||
"ILS",
|
|
||||||
"IMP",
|
|
||||||
"INR",
|
|
||||||
"IQD",
|
|
||||||
"ISK",
|
|
||||||
"JEP",
|
|
||||||
"JMD",
|
|
||||||
"JOD",
|
|
||||||
"JPY",
|
|
||||||
"KES",
|
|
||||||
"KGS",
|
|
||||||
"KHR",
|
|
||||||
"KMF",
|
|
||||||
"KRW",
|
|
||||||
"KWD",
|
|
||||||
"KYD",
|
|
||||||
"KZT",
|
|
||||||
"LAK",
|
|
||||||
"LBP",
|
|
||||||
"LKR",
|
|
||||||
"LRD",
|
|
||||||
"LSL",
|
|
||||||
"LTC",
|
|
||||||
"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",
|
|
||||||
"SEK",
|
|
||||||
"SGD",
|
|
||||||
"SHP",
|
|
||||||
"SLL",
|
|
||||||
"SOS",
|
|
||||||
"SRD",
|
|
||||||
"SSP",
|
|
||||||
"STD",
|
|
||||||
"SVC",
|
|
||||||
"SZL",
|
|
||||||
"THB",
|
|
||||||
"TJS",
|
|
||||||
"TMT",
|
|
||||||
"TND",
|
|
||||||
"TOP",
|
|
||||||
"TRY",
|
|
||||||
"TTD",
|
|
||||||
"TWD",
|
|
||||||
"TZS",
|
|
||||||
"UAH",
|
|
||||||
"UGX",
|
|
||||||
"USD",
|
|
||||||
"UYU",
|
|
||||||
"UZS",
|
|
||||||
"VEF",
|
|
||||||
"VND",
|
|
||||||
"VUV",
|
|
||||||
"WST",
|
|
||||||
"XAF",
|
|
||||||
"XAG",
|
|
||||||
"XAU",
|
|
||||||
"XCD",
|
|
||||||
"XDR",
|
|
||||||
"XOF",
|
|
||||||
"XPD",
|
|
||||||
"XPF",
|
|
||||||
"XPT",
|
|
||||||
"YER",
|
|
||||||
"ZAR",
|
|
||||||
"ZMK",
|
|
||||||
"ZMW",
|
|
||||||
"ZWL"
|
|
||||||
],
|
|
||||||
"Coinsecure": [
|
|
||||||
"INR"
|
|
||||||
],
|
|
||||||
"Foxbit": [
|
|
||||||
"BRL"
|
|
||||||
],
|
|
||||||
"Kraken": [
|
|
||||||
"CAD",
|
|
||||||
"EUR",
|
|
||||||
"GBP",
|
|
||||||
"JPY",
|
|
||||||
"USD"
|
|
||||||
],
|
|
||||||
"LocalBitcoins": [
|
|
||||||
"AED",
|
|
||||||
"ARS",
|
|
||||||
"AUD",
|
|
||||||
"BDT",
|
|
||||||
"BRL",
|
|
||||||
"BYN",
|
|
||||||
"CAD",
|
|
||||||
"CHF",
|
|
||||||
"CLP",
|
|
||||||
"CNY",
|
|
||||||
"COP",
|
|
||||||
"CRC",
|
|
||||||
"CZK",
|
|
||||||
"DKK",
|
|
||||||
"DOP",
|
|
||||||
"EGP",
|
|
||||||
"EUR",
|
|
||||||
"GBP",
|
|
||||||
"GHS",
|
|
||||||
"HKD",
|
|
||||||
"HRK",
|
|
||||||
"HUF",
|
|
||||||
"IDR",
|
|
||||||
"INR",
|
|
||||||
"IRR",
|
|
||||||
"ISK",
|
|
||||||
"JPY",
|
|
||||||
"KES",
|
|
||||||
"KZT",
|
|
||||||
"MAD",
|
|
||||||
"MMK",
|
|
||||||
"MXN",
|
|
||||||
"MYR",
|
|
||||||
"NGN",
|
|
||||||
"NOK",
|
|
||||||
"NZD",
|
|
||||||
"OMR",
|
|
||||||
"PAB",
|
|
||||||
"PEN",
|
|
||||||
"PHP",
|
|
||||||
"PKR",
|
|
||||||
"PLN",
|
|
||||||
"QAR",
|
|
||||||
"RON",
|
|
||||||
"RSD",
|
|
||||||
"RUB",
|
|
||||||
"SAR",
|
|
||||||
"SEK",
|
|
||||||
"SGD",
|
|
||||||
"THB",
|
|
||||||
"TRY",
|
|
||||||
"TWD",
|
|
||||||
"TZS",
|
|
||||||
"UAH",
|
|
||||||
"UGX",
|
|
||||||
"USD",
|
|
||||||
"VEF",
|
|
||||||
"VND",
|
|
||||||
"XAF",
|
|
||||||
"ZAR"
|
|
||||||
],
|
|
||||||
"MercadoBitcoin": [
|
|
||||||
"BRL"
|
|
||||||
],
|
|
||||||
"NegocieCoins": [
|
|
||||||
"BRL"
|
|
||||||
],
|
|
||||||
"Winkdex": [
|
|
||||||
"USD"
|
|
||||||
],
|
|
||||||
"WEX": [
|
|
||||||
"EUR",
|
"EUR",
|
||||||
"RUB",
|
"CNY"
|
||||||
"USD"
|
]
|
||||||
],
|
}
|
||||||
"itBit": []
|
|
||||||
}
|
|
||||||
|
|
|
@ -83,241 +83,15 @@ class ExchangeBase(PrintError):
|
||||||
|
|
||||||
def get_currencies(self):
|
def get_currencies(self):
|
||||||
rates = self.get_rates('')
|
rates = self.get_rates('')
|
||||||
return sorted([str(a) for (a, b) in rates.items() if b is not None and len(a)==3])
|
return sorted([str(a) for (a, b) in rates.items() if b is not None and len(a) in [3,4]])
|
||||||
|
|
||||||
|
|
||||||
class BitcoinAverage(ExchangeBase):
|
class CryptoCompare(ExchangeBase):
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
def get_rates(self, ccy):
|
||||||
json = self.get_json('apiv2.bitcoinaverage.com', '/indices/global/ticker/short')
|
json = self.get_json('min-api.cryptocompare.com',
|
||||||
return dict([(r.replace("BTC", ""), Decimal(json[r]['last']))
|
"/data/pricehistorical?fsym=ZCL&tsyms=USD")
|
||||||
for r in json if r != 'timestamp'])
|
return {'USD': Decimal(json['ZCL']['USD'])}
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return ['AUD', 'BRL', 'CAD', 'CHF', 'CNY', 'EUR', 'GBP', 'IDR', 'ILS',
|
|
||||||
'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RUB', 'SEK', 'SGD', 'USD',
|
|
||||||
'ZAR']
|
|
||||||
|
|
||||||
def historical_rates(self, ccy):
|
|
||||||
history = self.get_csv('apiv2.bitcoinaverage.com',
|
|
||||||
"/indices/global/history/BTC%s?period=alltime&format=csv" % ccy)
|
|
||||||
return dict([(h['DateTime'][:10], h['Average'])
|
|
||||||
for h in history])
|
|
||||||
|
|
||||||
|
|
||||||
class Bitcointoyou(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('bitcointoyou.com', "/API/ticker.aspx")
|
|
||||||
return {'BRL': Decimal(json['ticker']['last'])}
|
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return ['BRL']
|
|
||||||
|
|
||||||
|
|
||||||
class BitcoinVenezuela(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('api.bitcoinvenezuela.com', '/')
|
|
||||||
rates = [(r, json['BTC'][r]) for r in json['BTC']
|
|
||||||
if json['BTC'][r] is not None] # Giving NULL for LTC
|
|
||||||
return dict(rates)
|
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return ['ARS', 'EUR', 'USD', 'VEF']
|
|
||||||
|
|
||||||
def historical_rates(self, ccy):
|
|
||||||
return self.get_json('api.bitcoinvenezuela.com',
|
|
||||||
"/historical/index.php?coin=BTC")[ccy +'_BTC']
|
|
||||||
|
|
||||||
|
|
||||||
class Bitmarket(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('www.bitmarket.pl', '/json/BTCPLN/ticker.json')
|
|
||||||
return {'PLN': Decimal(json['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class BitPay(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('bitpay.com', '/api/rates')
|
|
||||||
return dict([(r['code'], Decimal(r['rate'])) for r in json])
|
|
||||||
|
|
||||||
|
|
||||||
class Bitso(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('api.bitso.com', '/v2/ticker')
|
|
||||||
return {'MXN': Decimal(json['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class BitStamp(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('www.bitstamp.net', '/api/ticker/')
|
|
||||||
return {'USD': Decimal(json['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class Bitvalor(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self,ccy):
|
|
||||||
json = self.get_json('api.bitvalor.com', '/v1/ticker.json')
|
|
||||||
return {'BRL': Decimal(json['ticker_1h']['total']['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class BlockchainInfo(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('blockchain.info', '/ticker')
|
|
||||||
return dict([(r, Decimal(json[r]['15m'])) for r in json])
|
|
||||||
|
|
||||||
|
|
||||||
class BTCChina(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('data.btcchina.com', '/data/ticker')
|
|
||||||
return {'CNY': Decimal(json['ticker']['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class BTCParalelo(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('btcparalelo.com', '/api/price')
|
|
||||||
return {'VEF': Decimal(json['price'])}
|
|
||||||
|
|
||||||
|
|
||||||
class Coinbase(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('coinbase.com',
|
|
||||||
'/api/v1/currencies/exchange_rates')
|
|
||||||
return dict([(r[7:].upper(), Decimal(json[r]))
|
|
||||||
for r in json if r.startswith('btc_to_')])
|
|
||||||
|
|
||||||
|
|
||||||
class CoinDesk(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
dicts = self.get_json('api.coindesk.com',
|
|
||||||
'/v1/bpi/supported-currencies.json')
|
|
||||||
json = self.get_json('api.coindesk.com',
|
|
||||||
'/v1/bpi/currentprice/%s.json' % ccy)
|
|
||||||
ccys = [d['currency'] for d in dicts]
|
|
||||||
result = dict.fromkeys(ccys)
|
|
||||||
result[ccy] = Decimal(json['bpi'][ccy]['rate_float'])
|
|
||||||
return result
|
|
||||||
|
|
||||||
def history_starts(self):
|
|
||||||
return { 'USD': '2012-11-30' }
|
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return self.history_starts().keys()
|
|
||||||
|
|
||||||
def historical_rates(self, ccy):
|
|
||||||
start = self.history_starts()[ccy]
|
|
||||||
end = datetime.today().strftime('%Y-%m-%d')
|
|
||||||
# Note ?currency and ?index don't work as documented. Sigh.
|
|
||||||
query = ('/v1/bpi/historical/close.json?start=%s&end=%s'
|
|
||||||
% (start, end))
|
|
||||||
json = self.get_json('api.coindesk.com', query)
|
|
||||||
return json['bpi']
|
|
||||||
|
|
||||||
|
|
||||||
class Coinsecure(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('api.coinsecure.in', '/v0/noauth/newticker')
|
|
||||||
return {'INR': Decimal(json['lastprice'] / 100.0 )}
|
|
||||||
|
|
||||||
|
|
||||||
class Foxbit(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self,ccy):
|
|
||||||
json = self.get_json('api.bitvalor.com', '/v1/ticker.json')
|
|
||||||
return {'BRL': Decimal(json['ticker_1h']['exchanges']['FOX']['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class itBit(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
ccys = ['USD', 'EUR', 'SGD']
|
|
||||||
json = self.get_json('api.itbit.com', '/v1/markets/XBT%s/ticker' % ccy)
|
|
||||||
result = dict.fromkeys(ccys)
|
|
||||||
if ccy in ccys:
|
|
||||||
result[ccy] = Decimal(json['lastPrice'])
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
class Kraken(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
ccys = ['EUR', 'USD', 'CAD', 'GBP', 'JPY']
|
|
||||||
pairs = ['XBT%s' % c for c in ccys]
|
|
||||||
json = self.get_json('api.kraken.com',
|
|
||||||
'/0/public/Ticker?pair=%s' % ','.join(pairs))
|
|
||||||
return dict((k[-3:], Decimal(float(v['c'][0])))
|
|
||||||
for k, v in json['result'].items())
|
|
||||||
|
|
||||||
|
|
||||||
class LocalBitcoins(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('localbitcoins.com',
|
|
||||||
'/bitcoinaverage/ticker-all-currencies/')
|
|
||||||
return dict([(r, Decimal(json[r]['rates']['last'])) for r in json])
|
|
||||||
|
|
||||||
|
|
||||||
class MercadoBitcoin(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('api.bitvalor.com', '/v1/ticker.json')
|
|
||||||
return {'BRL': Decimal(json['ticker_1h']['exchanges']['MBT']['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class NegocieCoins(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self,ccy):
|
|
||||||
json = self.get_json('api.bitvalor.com', '/v1/ticker.json')
|
|
||||||
return {'BRL': Decimal(json['ticker_1h']['exchanges']['NEG']['last'])}
|
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return ['BRL']
|
|
||||||
|
|
||||||
|
|
||||||
class Unocoin(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('www.unocoin.com', 'trade?buy')
|
|
||||||
return {'INR': Decimal(json)}
|
|
||||||
|
|
||||||
|
|
||||||
class WEX(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json_eur = self.get_json('wex.nz', '/api/3/ticker/btc_eur')
|
|
||||||
json_rub = self.get_json('wex.nz', '/api/3/ticker/btc_rur')
|
|
||||||
json_usd = self.get_json('wex.nz', '/api/3/ticker/btc_usd')
|
|
||||||
return {'EUR': Decimal(json_eur['btc_eur']['last']),
|
|
||||||
'RUB': Decimal(json_rub['btc_rur']['last']),
|
|
||||||
'USD': Decimal(json_usd['btc_usd']['last'])}
|
|
||||||
|
|
||||||
|
|
||||||
class Winkdex(ExchangeBase):
|
|
||||||
|
|
||||||
def get_rates(self, ccy):
|
|
||||||
json = self.get_json('winkdex.com', '/api/v0/price')
|
|
||||||
return {'USD': Decimal(json['price'] / 100.0)}
|
|
||||||
|
|
||||||
def history_ccys(self):
|
|
||||||
return ['USD']
|
|
||||||
|
|
||||||
def historical_rates(self, ccy):
|
|
||||||
json = self.get_json('winkdex.com',
|
|
||||||
"/api/v0/series?start_time=1342915200")
|
|
||||||
history = json['series'][0]['results']
|
|
||||||
return dict([(h['timestamp'][:10], h['price'] / 100.0)
|
|
||||||
for h in history])
|
|
||||||
|
|
||||||
|
|
||||||
def dictinvert(d):
|
def dictinvert(d):
|
||||||
|
@ -419,11 +193,11 @@ class FxThread(ThreadJob):
|
||||||
self.config.set_key('fiat_address', bool(b))
|
self.config.set_key('fiat_address', bool(b))
|
||||||
|
|
||||||
def get_currency(self):
|
def get_currency(self):
|
||||||
'''Use when dynamic fetching is needed'''
|
# Use when dynamic fetching is needed
|
||||||
return self.config.get("currency", "EUR")
|
return self.config.get('currency', 'USD')
|
||||||
|
|
||||||
def config_exchange(self):
|
def config_exchange(self):
|
||||||
return self.config.get('use_exchange', 'BitcoinAverage')
|
return self.config.get('use_exchange', 'CryptoCompare')
|
||||||
|
|
||||||
def show_history(self):
|
def show_history(self):
|
||||||
return self.is_enabled() and self.get_history_config() and self.ccy in self.exchange.history_ccys()
|
return self.is_enabled() and self.get_history_config() and self.ccy in self.exchange.history_ccys()
|
||||||
|
@ -435,7 +209,7 @@ class FxThread(ThreadJob):
|
||||||
self.on_quotes()
|
self.on_quotes()
|
||||||
|
|
||||||
def set_exchange(self, name):
|
def set_exchange(self, name):
|
||||||
class_ = globals().get(name, BitcoinAverage)
|
class_ = globals().get(name, CryptoCompare)
|
||||||
self.print_error("using exchange", name)
|
self.print_error("using exchange", name)
|
||||||
if self.config_exchange() != name:
|
if self.config_exchange() != name:
|
||||||
self.config.set_key('use_exchange', name, True)
|
self.config.set_key('use_exchange', name, True)
|
||||||
|
@ -462,7 +236,7 @@ class FxThread(ThreadJob):
|
||||||
|
|
||||||
def get_fiat_status_text(self, btc_balance, base_unit, decimal_point):
|
def get_fiat_status_text(self, btc_balance, base_unit, decimal_point):
|
||||||
rate = self.exchange_rate()
|
rate = self.exchange_rate()
|
||||||
return _(" (No FX rate available)") if rate is None else " 1 %s~%s %s" % (base_unit,
|
return _(" (No exchange rate available)") if rate is None else " 1 %s=%s %s" % (base_unit,
|
||||||
self.value_str(COIN / (10**(8 - decimal_point)), rate), self.ccy)
|
self.value_str(COIN / (10**(8 - decimal_point)), rate), self.ccy)
|
||||||
|
|
||||||
def value_str(self, satoshis, rate):
|
def value_str(self, satoshis, rate):
|
||||||
|
|
Loading…
Reference in New Issue