2017-03-21 03:59:50 +00:00
#romerito -*- coding: UTF-8 -*-
import sopel . module
import requests
import time
2017-04-26 04:29:09 +00:00
import random
2017-06-01 01:10:54 +00:00
# from apikey import commodity_key
2017-03-21 03:59:50 +00:00
polourl = " https://poloniex.com/public?command=returnTicker "
poloxmrlendurl = " https://poloniex.com/public?command=returnLoanOrders¤cy=XMR&limit=999999 "
2017-05-07 18:00:44 +00:00
polobtclendurl = " https://poloniex.com/public?command=returnLoanOrders¤cy=BTC&limit=999999 "
2017-03-21 03:59:50 +00:00
prevamnt , prevtime = 0 , 0
trexurl = " https://bittrex.com/api/v1.1/public/getmarketsummary?market=btc- "
2017-04-26 04:29:09 +00:00
cryptopiaurl = " https://www.cryptopia.co.nz/api/GetMarkets "
2017-03-21 03:59:50 +00:00
bitsquareurl = " https://market.bitsquare.io/api/ticker/?market=xmr_btc "
fixerurl = ' http://api.fixer.io/latest?base=USD '
finexbtc = ' https://api.bitfinex.com/v1/pubticker/XMRBTC '
finexusd = ' https://api.bitfinex.com/v1/pubticker/XMRUSD '
krakbtc = ' https://api.kraken.com/0/public/Ticker?pair=XMRXBT '
krakbtceur = ' https://api.kraken.com/0/public/Ticker?pair=XBTEUR '
krakusd = ' https://api.kraken.com/0/public/Ticker?pair=XMRUSD '
krakeur = ' https://api.kraken.com/0/public/Ticker?pair=XMREUR '
2017-08-09 00:06:59 +00:00
kraktrig = ' https://api.kraken.com/0/public/Ticker?pair= ' #append coin/trigger in function below
2017-03-21 03:59:50 +00:00
okcquar = ' https://www.okcoin.com/api/v1/future_ticker.do?symbol=btc_usd&contract_type=quarter '
2017-04-26 04:29:09 +00:00
krakusdt = ' http://api.kraken.com/0/public/Ticker?pair=USDTUSD '
2017-06-01 01:10:54 +00:00
bitflyerurl = ' https://api.bitflyer.jp/v1/ticker '
2017-09-07 20:40:29 +00:00
thumbxmrurl = ' https://api.bithumb.com/public/ticker/xmr ' # measured natively in KRW
thumbbtcurl = ' https://api.bithumb.com/public/ticker/btc ' # measured natively in KRW
2018-01-02 05:18:11 +00:00
@sopel.module.commands ( ' forksum ' )
def forksum ( bot , trigger ) :
2017-11-17 22:11:48 +00:00
url = ' https://api.coinmarketcap.com/v1/ticker/?bch '
2017-07-28 04:01:49 +00:00
try :
r = requests . get ( url )
j = r . json ( )
for i in j :
try :
2018-01-02 05:18:11 +00:00
if i [ ' id ' ] == ' bitcoin ' :
btcprice = float ( i [ ' price_usd ' ] )
2017-07-28 04:01:49 +00:00
if i [ ' id ' ] == ' bitcoin-cash ' :
2018-01-02 05:18:11 +00:00
bcashprice = float ( i [ ' price_usd ' ] )
if i [ ' id ' ] == ' bitcoin-gold ' :
bgoldprice = float ( i [ ' price_usd ' ] )
2017-07-28 04:01:49 +00:00
except : pass
2018-01-02 05:18:11 +00:00
bot . say ( " The sum of USD price of BTC, BCH, and BTG is $ {:.2f} " . format ( btcprice + bcashprice + bgoldprice ) )
2017-07-28 04:01:49 +00:00
except :
bot . say ( " Error parsing ticker " )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' bfx ' , ' bitfinex ' )
def bfx ( bot , trigger ) :
stringtosay = ' '
try :
r = requests . get ( finexbtc )
j = r . json ( )
stringtosay + = " Last XMR/BTC trade at {0:.6f} on {1:.2f} 24 h XMR volume. " . format ( float ( j [ ' last_price ' ] ) , float ( j [ ' volume ' ] ) )
except :
bot . say ( " Error getting XMR/BTC data " )
try :
r = requests . get ( finexusd )
j = r . json ( )
stringtosay + = " Last XMR/USD trade at {0:.2f} on {1:.2f} 24 h XMR volume. " . format ( float ( j [ ' last_price ' ] ) , float ( j [ ' volume ' ] ) )
except :
bot . say ( " Error getting XMR/USD data " )
try :
bot . say ( stringtosay )
except :
bot . say ( " Error getting data " )
@sopel.module.commands ( ' krak ' , ' kraken ' )
def krak ( bot , trigger ) :
stringtosay = ' '
2017-08-05 03:01:07 +00:00
if not trigger . group ( 2 ) :
try :
r = requests . get ( krakbtc )
j = r . json ( )
stringtosay + = " Last XMR/BTC trade at {0:.6f} on {1:.2f} 24 h XMR volume. " . format ( float ( j [ ' result ' ] [ ' XXMRXXBT ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' XXMRXXBT ' ] [ ' v ' ] [ 1 ] ) )
except :
bot . say ( " Error getting XMR/BTC data " )
try :
r = requests . get ( krakusd )
j = r . json ( )
stringtosay + = " Last XMR/USD trade at {0:.2f} on {1:.2f} 24 h XMR volume. " . format ( float ( j [ ' result ' ] [ ' XXMRZUSD ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' XXMRZUSD ' ] [ ' v ' ] [ 1 ] ) )
except :
bot . say ( " Error getting XMR/USD data " )
try :
r = requests . get ( ' https://api.kraken.com/0/public/Ticker?pair=XMREUR ' ) #shouldn't this be krakeur?
j = r . json ( )
stringtosay + = " Last XMR/EUR trade at {0:.2f} on {1:.2f} 24 h XMR volume. " . format ( float ( j [ ' result ' ] [ ' XXMRZEUR ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' XXMRZEUR ' ] [ ' v ' ] [ 1 ] ) )
except :
bot . say ( " Error getting XMR/EUR data " )
try :
bot . say ( stringtosay )
except :
bot . say ( " Error getting data " )
else :
coin = trigger . group ( 2 ) . upper ( )
try :
2017-08-09 00:06:59 +00:00
r = requests . get ( kraktrig + coin + ' XBT ' )
2017-08-05 03:01:07 +00:00
j = r . json ( )
2017-08-09 00:09:21 +00:00
stringtosay + = " {0} at {1:.8f} on {2:.2f} 24 h {0} volume. " . format ( coin , float ( j [ ' result ' ] [ ' X ' + str ( coin ) + ' XXBT ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' X ' + str ( coin ) + ' XXBT ' ] [ ' v ' ] [ 1 ] ) )
2017-08-05 03:01:07 +00:00
except :
bot . say ( " Error connecting to Kraken " )
# if len(coin) > 5 or len(coin) < 2:
# bot.say("Coin ticker is too long or short")
# elif coin == "PIVX":
# bot.say("Masternodes + PoS...what could possibly go wrong?")
# else:
try :
bot . say ( stringtosay )
except :
bot . say ( " Error getting data " )
# THIS WAS COPIED FROM THE POLO FUNCTION, AND IS UNUSED, AT LEAST FOR NOW
# label="BTC_" + coin
# try:
# ticker=j[label]
# last=float(ticker['last'])
# change=float(ticker['percentChange'])
# vol=float(ticker['baseVolume'])
# if change >= 0:
# sign = '+'
# else:
# sign = ''
# bot.say("{0} at {1:.8f} BTC; {2}{3:.2f}% over 24 hours on {4:.3f} BTC volume".format(coin, last, sign, change*100, vol))
# except:
# bot.say("ERROR!")
2017-03-21 03:59:50 +00:00
2017-04-26 04:29:09 +00:00
@sopel.module.commands ( ' usdt ' )
def usdt ( bot , trigger ) :
try :
r = requests . get ( krakusdt )
j = r . json ( )
stringtosay = " Last USDT/USD trade at $ {0:.4f} on {1:.2f} USD 24 h volume. Highest bid at $ {2:.4f} " . format ( float ( j [ ' result ' ] [ ' USDTZUSD ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' USDTZUSD ' ] [ ' v ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' USDTZUSD ' ] [ ' b ' ] [ 0 ] ) )
bot . say ( stringtosay )
except :
bot . say ( " Error getting USDT/USD data " )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' btckrak ' , ' btckraken ' , ' btceur ' )
def krakeur ( bot , trigger ) :
stringtosay = ' '
try :
r = requests . get ( krakbtceur )
j = r . json ( )
stringtosay + = " Last BTC/EUR trade at € {0:.2f} on {1:.2f} BTC 24 h volume. " . format ( float ( j [ ' result ' ] [ ' XXBTZEUR ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' XXBTZEUR ' ] [ ' v ' ] [ 0 ] ) )
except :
bot . say ( " Error getting BTC/EUR data " )
try :
bot . say ( stringtosay )
except :
bot . say ( " Error getting data " )
@sopel.module.commands ( ' chart ' )
def chart ( bot , trigger ) :
bot . say ( ' https://cryptowat.ch/poloniex/xmrbtc ' )
@sopel.module.commands ( ' polo ' , ' poloniex ' , ' marco ' )
@sopel.module.interval ( 3600 )
def polo ( bot , trigger ) :
if not trigger . group ( 2 ) :
try :
r = requests . get ( polourl )
j = r . json ( )
xmr = j [ " BTC_XMR " ]
last = float ( xmr [ ' last ' ] )
change = float ( xmr [ ' percentChange ' ] )
vol = float ( xmr [ ' baseVolume ' ] )
if change > = 0 :
sign = ' + '
else :
sign = ' '
face = ' '
if change > 0.10 :
face = u ' \u263d ' . encode ( ' utf8 ' )
if 0.10 > = change > 0.05 :
face = u ' \u2661 ' . encode ( ' utf8 ' )
if 0.05 > = change > 0.02 :
face = u ' \u263a ' . encode ( ' utf8 ' )
if 0.02 > = change > - 0.02 :
face = u ' \u2694 ' . encode ( ' utf8 ' )
if - 0.02 > = change > - 0.05 :
face = u ' \u2639 ' . encode ( ' utf8 ' )
if - 0.05 > = change > - 0.1 :
face = u ' \u2620 ' . encode ( ' utf8 ' )
if change < - 0.1 :
face = u ' \u262d ' . encode ( ' utf8 ' )
bot . say ( " Poloniex at {0:.8f} BTC; {1} {2:.2f} % o ver 24 hours on {3:.3f} BTC volume {4} " . format ( last , sign , change * 100 , vol , face ) )
except :
bot . say ( " Error retrieving data from Poloniex " )
else :
coin = trigger . group ( 2 ) . upper ( )
try :
r = requests . get ( polourl )
j = r . json ( )
except :
bot . say ( " Error connecting to Poloniex " )
if len ( coin ) > 5 or len ( coin ) < 2 :
bot . say ( " Coin ticker is too long or short " )
# elif coin == "PASC":
# bot.say("COBOL only in #monero-markets")
# elif coin == "NAUT":
# bot.say("That ship has sailed...")
2017-04-26 04:29:09 +00:00
elif coin == " PIVX " :
bot . say ( " Masternodes + PoS...what could possibly go wrong? " )
2017-03-21 03:59:50 +00:00
else :
label = " BTC_ " + coin
try :
ticker = j [ label ]
last = float ( ticker [ ' last ' ] )
change = float ( ticker [ ' percentChange ' ] )
vol = float ( ticker [ ' baseVolume ' ] )
if change > = 0 :
sign = ' + '
else :
sign = ' '
bot . say ( " {0} at {1:.8f} BTC; {2} {3:.2f} % o ver 24 hours on {4:.3f} BTC volume " . format ( coin , last , sign , change * 100 , vol ) )
except :
bot . say ( " ERROR! " )
@sopel.module.commands ( ' lending ' )
def lending ( bot , trigger ) :
try :
r = requests . get ( poloxmrlendurl )
j = r . json ( )
amnt = 0
currenttime = time . time ( )
for i in j [ ' offers ' ] :
amnt + = float ( i [ ' amount ' ] )
bot . say ( " Total amount of XMR available {0:,.2f} . Changed by {1:.2f} in the last {2:.2f} hours " . format ( amnt , amnt - prevamnt , ( currenttime - prevtime ) / 3600 ) )
global prevamnt
prevamnt = amnt
global prevtime
prevtime = currenttime
except :
bot . say ( " Something bad happened :o " )
2017-06-01 01:10:54 +00:00
@sopel.module.commands ( ' btclending ' )
def btclending ( bot , trigger ) :
try :
r = requests . get ( polobtclendurl )
j = r . json ( )
amnt = 0
amnt10 = 0
rate10 = 0
amnt100 = 0
rate100 = 0
for i in j [ ' offers ' ] :
if amnt < 10 :
amnt10 = amnt
rate10 = float ( i [ ' rate ' ] )
if amnt < 100 :
amnt100 = amnt
rate100 = float ( i [ ' rate ' ] )
amnt + = float ( i [ ' amount ' ] )
bot . say ( " Minimum rate is {0:.3f} % . To borrow {1:,.2f} BTC need up to rate {2:.3f} % . To borrow {3:,.2f} BTC need up to rate {4:.3f} % . Total amount is {5:,.2f} BTC at max rate {6:.3f} % " . format ( float ( j [ ' offers ' ] [ 0 ] [ ' rate ' ] ) * 100 , amnt10 , rate10 * 100 , amnt100 , rate100 * 100 , amnt , float ( j [ ' offers ' ] [ - 1 ] [ ' rate ' ] ) * 100 ) )
except :
bot . say ( " Something bad happened :o " )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' trex ' , ' bittrex ' )
def trex ( bot , trigger ) :
if not trigger . group ( 2 ) :
geturl = trexurl + ' xmr '
else :
geturl = trexurl + trigger . group ( 2 )
try :
r = requests . get ( geturl )
j = r . json ( )
xmr = j [ ' result ' ] [ 0 ]
last = float ( xmr [ ' Last ' ] )
change = ( ( last / float ( xmr [ ' PrevDay ' ] ) ) - 1 )
vol = float ( xmr [ ' BaseVolume ' ] )
bot . say ( " Bittrex at {0:.8f} BTC; {1:.2f} % o ver 24 hours on {2:.3f} BTC volume " . format ( last , change * 100 , vol ) )
except :
bot . say ( " Error retrieving data from Bittrex " )
@sopel.module.commands ( ' bsq ' , ' bitsquare ' )
def bsq ( bot , trigger ) :
try :
r = requests . get ( bitsquareurl )
j = r . json ( )
xmr = j [ ' xmr_btc ' ]
last = float ( xmr [ ' last ' ] )
vol = float ( xmr [ ' volume_right ' ] )
bot . say ( " Bitsquare at {0:.8f} BTC on {1:.3f} BTC volume " . format ( last , vol ) )
except :
bot . say ( " Error retrieving data from Bitsquare " )
2017-07-15 00:57:04 +00:00
@sopel.module.commands ( ' cryptopia ' , ' shitopia ' , ' topia ' , ' ctop ' )
2017-03-21 03:59:50 +00:00
def cryptopia ( bot , trigger ) :
try :
2017-04-26 04:29:09 +00:00
if not trigger . group ( 2 ) :
coin = ' XMR '
pair = ' BTC '
else :
coin = trigger . group ( 2 ) . split ( ' ' ) [ 0 ] . upper ( )
try :
if len ( trigger . group ( 2 ) . split ( ' ' ) [ 1 ] ) > 1 :
pair = trigger . group ( 2 ) . split ( ' ' ) [ 1 ] . upper ( )
else :
pair = " BTC "
except :
pair = " BTC "
2017-03-21 03:59:50 +00:00
r = requests . get ( cryptopiaurl )
j = r . json ( )
2017-04-26 04:29:09 +00:00
found = False
for i in j [ " Data " ] :
if i [ " Label " ] == coin + " / " + pair :
last = float ( i [ ' LastPrice ' ] )
change = float ( i [ ' Change ' ] )
vol = float ( i [ ' Volume ' ] )
bot . say ( " {0} on Cryptopia at {1:.8f} {2} ; {3:.2f} % o ver 24 hours on {4:.3f} {2} volume " . format ( coin , last , pair , change , vol * last ) )
found = True
if found == False :
bot . say ( " This shit is too shitty even for shitopia " )
2017-03-21 03:59:50 +00:00
except :
bot . say ( " Error retrieving data from Cryptopia " )
@sopel.module.commands ( ' cmc ' , ' coinmarketcap ' )
def cmc ( bot , trigger ) :
try :
2018-01-03 15:36:00 +00:00
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker?limit=1000 ' )
2017-03-21 03:59:50 +00:00
j = r . json ( )
except :
bot . say ( " Can ' t connect to API " )
if not trigger . group ( 2 ) :
symbol = ' XMR '
else :
2017-04-26 04:29:09 +00:00
if trigger . group ( 2 ) . isdigit ( ) :
rank = trigger . group ( 2 )
elif trigger . group ( 2 ) == ' random ' :
2018-01-03 15:36:00 +00:00
rank = random . randint ( 1 , 1000 )
2017-04-26 04:29:09 +00:00
else :
symbol = trigger . group ( 2 )
symbol = symbol . upper ( )
2017-03-21 03:59:50 +00:00
try :
for i in j :
2017-04-26 04:29:09 +00:00
try :
if i [ ' symbol ' ] == symbol :
coin = i
except : pass
try :
if i [ ' rank ' ] == str ( rank ) :
coin = i
except : pass
symbol = coin [ ' symbol ' ]
name = coin [ ' name ' ]
rank = coin [ ' rank ' ]
price_usd = float ( coin [ ' price_usd ' ] )
price_btc = float ( coin [ ' price_btc ' ] )
volume_usd = float ( coin [ ' 24h_volume_usd ' ] )
market_cap_usd = float ( coin [ ' market_cap_usd ' ] )
available_supply = float ( coin [ ' available_supply ' ] )
total_supply = float ( coin [ ' total_supply ' ] )
percent_change_24h = float ( coin [ ' percent_change_24h ' ] )
2017-03-21 03:59:50 +00:00
bot . say ( " {0} ( {1} ) is # {2} . Last price $ {3:.2f} / ฿ {4:.8f} . 24h volume $ {5:,.0f} changed {6} % . Market cap $ {7:,.0f} . Available / total coin supply {8:,.0f} / {9:,.0f} . " . format ( name , symbol , rank , price_usd , price_btc , volume_usd , percent_change_24h , market_cap_usd , available_supply , total_supply ) )
except :
bot . say ( " Error parsing ticker " )
2018-01-02 03:59:15 +00:00
@sopel.module.commands ( ' top ' )
2018-01-02 05:07:47 +00:00
def top ( bot , trigger ) :
2018-01-02 03:59:15 +00:00
if not trigger . group ( 2 ) :
2018-01-03 16:01:13 +00:00
bot . say ( " You want to see the CMC top... how many? Pick a number 1 through 20 " )
2018-01-02 03:59:15 +00:00
else :
2018-01-03 15:58:02 +00:00
try :
limit = int ( trigger . group ( 2 ) )
2018-01-03 16:01:13 +00:00
if limit > 20 :
bot . say ( " Too high! Max is 20! " )
2018-01-03 15:58:02 +00:00
elif limit < 1 :
bot . say ( " Dude... " )
else :
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker?limit= {} ' . format ( limit ) )
j = r . json ( )
except :
bot . say ( " Can ' t connect to API " )
topXstring = " "
for i in j :
symbol = i [ ' symbol ' ]
name = i [ ' name ' ]
rank = i [ ' rank ' ]
price_usd = float ( i [ ' price_usd ' ] )
price_btc = float ( i [ ' price_btc ' ] )
market_cap_usd = float ( i [ ' market_cap_usd ' ] )
if market_cap_usd > = 1000000000 :
market_cap_short = int ( int ( round ( market_cap_usd , - 9 ) ) / int ( 1000000000 ) )
rounded_mcap = str ( market_cap_short ) + " B "
else :
rounded_mcap = " tiny "
topXstring + = " {0} . {1} $ {2} | " . format ( rank , symbol , rounded_mcap ) #TODO: add price_usd, rounded
bot . say ( topXstring )
except :
2018-01-03 16:01:13 +00:00
bot . say ( " The use is ' top ' and then a digit 1 - 20 " )
2018-01-02 03:59:15 +00:00
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' okc ' , ' okcoin ' )
def okc ( bot , trigger ) :
try :
r = requests . get ( okcquar )
j = r . json ( )
xmr = j [ ' ticker ' ]
last = float ( xmr [ ' last ' ] )
vol = float ( xmr [ ' vol ' ] )
bot . say ( " OKcoin quarterly futures at $ {0:.2f} on {1:.0f} volume " . format ( last , vol ) )
except :
bot . say ( " Error retrieving data from OKCoin " )
2017-05-14 19:21:07 +00:00
@sopel.module.commands ( ' tux ' )
def tux ( bot , trigger ) :
try :
r = requests . get ( ' https://tuxexchange.com/api?method=getticker ' )
j = r . json ( )
if not trigger . group ( 2 ) :
ticker = ' XMR '
else :
ticker = trigger . group ( 2 ) . upper ( )
coin = j [ ' BTC_ {} ' . format ( ticker ) ]
last = float ( coin [ ' last ' ] )
vol = float ( coin [ ' baseVolume ' ] )
change = float ( coin [ ' percentChange ' ] )
bot . say ( " {0} at {1:.8f} BTC on {2:.3f} BTC volume, changed {3:.2f} % o ver last 24 hr " . format ( ticker , last , vol , change ) )
except :
bot . say ( " Error retrieving data from Tuxexchange " )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' pepe ' , ' pepecash ' )
def pepe ( bot , trigger ) :
try :
r = requests . get ( ' https://tuxexchange.com/api?method=getticker ' )
j = r . json ( )
pepe = j [ ' BTC_PEPECASH ' ]
last = float ( pepe [ ' last ' ] )
vol = float ( pepe [ ' baseVolume ' ] )
change = float ( pepe [ ' percentChange ' ] )
bot . say ( " Pepecash at {0:.8f} BTC on {1:.3f} BTC volume, changed {2:.2f} % o ver last 24 hr " . format ( last , vol , change ) )
except :
bot . say ( " Error retrieving data from Tuxexchange " )
@sopel.module.commands ( ' pepexmr ' )
def pepexmr ( bot , trigger ) :
try :
r = requests . get ( ' https://tuxexchange.com/api?method=getticker ' )
j = r . json ( )
pepe = j [ ' BTC_PEPECASH ' ]
pepelast = float ( pepe [ ' last ' ] )
r = requests . get ( polourl )
j = r . json ( )
xmr = j [ " BTC_XMR " ]
xmrlast = float ( xmr [ ' last ' ] )
bot . say ( " Pepe/XMR ratio is : {0:.8f} " . format ( pepelast / xmrlast ) )
except :
bot . say ( " FAILURE! " )
@sopel.module.commands ( ' tall ' )
def tall ( bot , trigger ) :
stringtosend = ' '
fixerurl = ' http://api.fixer.io/latest?base=USD '
stampurl = ' https://www.bitstamp.net/api/ticker/ '
btceurl = ' https://btc-e.com/api/3/ticker/btc_usd '
finexurl = ' https://api.bitfinex.com/v1/pubticker/BTCUSD '
# btccurl = 'https://pro-data.btcc.com/data/pro/ticker?symbol=XBTCNY'
btccurl = ' https://data.btcchina.com/data/ticker?market=btccny '
huobiurl = ' http://api.huobi.com/staticmarket/ticker_btc_json.js '
gemiurl = ' https://api.gemini.com/v1/pubticker/btcusd '
2017-06-01 01:10:54 +00:00
# gdaxurl = 'https://api.coinbase.com/v2/exchange-rates?currency=BTC'
gdaxurl = ' https://api.gdax.com/products/BTC-USD/ticker '
2017-03-21 03:59:50 +00:00
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdcny = fixerjson [ ' rates ' ] [ ' CNY ' ]
usdeur = fixerjson [ ' rates ' ] [ ' EUR ' ]
2017-06-01 01:10:54 +00:00
usdjpy = fixerjson [ ' rates ' ] [ ' JPY ' ]
2017-10-05 13:46:29 +00:00
usdkrw = fixerjson [ ' rates ' ] [ ' KRW ' ]
2017-03-21 03:59:50 +00:00
except :
usdcny = 7
2017-10-11 13:43:01 +00:00
usdkrw = 1100
usdjpy = 112
2017-03-21 03:59:50 +00:00
# Bitstamp
try :
stampresult = requests . get ( stampurl )
stampjson = stampresult . json ( )
except :
stampjson = False
if stampjson :
stringtosend + = " Bitstamp last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( stampjson [ ' last ' ] ) , float ( stampjson [ ' volume ' ] ) )
# BTC-E
2017-08-16 03:16:11 +00:00
# try:
# btceresult = requests.get(btceurl)
# btcejson = btceresult.json()
# except:
# btcejson = False
# if btcejson:
# stringtosend += "BTC-E last: {0:,.2f}, vol: {1:,.1f} | ".format(float(btcejson['btc_usd']['last']), float(btcejson['btc_usd']['vol_cur']))
2017-03-21 03:59:50 +00:00
# Gemini
try :
gemiresult = requests . get ( gemiurl )
gemijson = gemiresult . json ( )
except :
gemijson = False
if gemijson :
try :
stringtosend + = " Gemini last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( gemijson [ ' last ' ] ) , float ( gemijson [ ' volume ' ] [ ' BTC ' ] ) )
except :
pass
# Gdax
try :
gdaxresult = requests . get ( gdaxurl )
gdaxjson = gdaxresult . json ( )
2018-01-02 05:18:11 +00:00
gdaxprice = float ( gdaxjson [ ' price ' ] )
gdaxvolume = float ( gdaxjson [ ' volume ' ] )
2017-03-21 03:59:50 +00:00
except :
gdaxjson = False
if gdaxjson :
2018-01-02 05:18:11 +00:00
stringtosend + = " GDAX price: {0:,.2f} , vol: {1:,.1f} | " . format ( gdaxprice , gdaxvolume )
2017-03-21 03:59:50 +00:00
# Bitfinex
try :
finexresult = requests . get ( finexurl )
finexjson = finexresult . json ( )
except :
finexjson = False
if finexjson :
stringtosend + = " Bitfinex last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( finexjson [ ' last_price ' ] ) , float ( finexjson [ ' volume ' ] ) )
2017-10-05 13:46:29 +00:00
# Bitthumb
2017-03-21 03:59:50 +00:00
try :
2017-10-05 13:46:29 +00:00
thumbresult = requests . get ( thumbbtcurl )
thumbjson = thumbresult . json ( )
2017-11-25 21:43:51 +00:00
if thumbjson [ ' data ' ] :
pass
2017-03-21 03:59:50 +00:00
except :
2017-10-05 13:46:29 +00:00
thumbjson = False
if thumbjson :
stringtosend + = " Bithumb last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( thumbjson [ ' data ' ] [ ' buy_price ' ] ) / float ( usdkrw ) , float ( thumbjson [ ' data ' ] [ ' volume_1day ' ] ) )
# BTCC
# try:
# btccresult = requests.get(btccurl)
# btccjson = btccresult.json()
# except:
# btccjson = False
# if btccjson:
# stringtosend += "BTCC last: {0:,.2f}, vol: {1:,.1f} | ".format(float(btccjson['ticker']['last'])/usdcny, float(btccjson['ticker']['vol']))
2017-03-21 03:59:50 +00:00
# Huobi
try :
huobiresult = requests . get ( huobiurl )
huobijson = huobiresult . json ( )
except :
huobijson = False
if huobijson :
stringtosend + = " Huobi last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( huobijson [ ' ticker ' ] [ ' last ' ] ) / usdcny , float ( huobijson [ ' ticker ' ] [ ' vol ' ] ) )
2017-06-01 01:10:54 +00:00
# Bitflyer
try :
bitflyerresult = requests . get ( bitflyerurl )
bitflyerjson = bitflyerresult . json ( )
except :
bitflyerjson = False
if bitflyerjson :
stringtosend + = " Bitflyer last: {0:,.2f} , vol: {1:,.1f} | " . format ( float ( bitflyerjson [ ' ltp ' ] ) / usdjpy , float ( bitflyerjson [ ' volume_by_product ' ] ) )
2017-03-21 03:59:50 +00:00
# Send the tickers to IRC
bot . say ( stringtosend )
2017-09-06 00:47:31 +00:00
2018-01-02 05:18:11 +00:00
@sopel.module.commands ( ' xmrtall ' , ' xmr ' )
2017-09-06 00:47:31 +00:00
def xmrtall ( bot , trigger ) :
stringtosend = ' '
2017-09-07 20:40:29 +00:00
# Bithumb (Note: Must calculate BTCXMR price from BTCKRW and XMRKRW)
try :
xmr_r = requests . get ( thumbxmrurl )
btc_r = requests . get ( thumbbtcurl )
xmrjson = xmr_r . json ( )
btcjson = btc_r . json ( )
# No last price in api. Must average buy and sell price.
2017-09-08 02:46:53 +00:00
thumbXMRbuy = float ( xmrjson [ ' data ' ] [ ' buy_price ' ] )
thumbXMRsell = float ( xmrjson [ ' data ' ] [ ' sell_price ' ] )
2017-09-07 20:40:29 +00:00
thumbXMRkrw = ( thumbXMRbuy + thumbXMRsell ) / 2
# Same for BTC
2017-09-08 02:46:53 +00:00
thumbBTCbuy = float ( btcjson [ ' data ' ] [ ' buy_price ' ] )
thumbBTCsell = float ( btcjson [ ' data ' ] [ ' sell_price ' ] )
2017-09-07 20:40:29 +00:00
thumbBTCkrw = ( thumbBTCbuy + thumbBTCsell ) / 2
# Finally, price in BTC, and volume in XMR
thumbBTCxmr = thumbXMRkrw / thumbBTCkrw
2017-09-08 02:46:53 +00:00
thumbXMRVol = float ( xmrjson [ ' data ' ] [ ' volume_1day ' ] )
stringtosend = " Bithumb last: {0:.6f} BTC on {1:.2f} XMR volume | " . format ( thumbBTCxmr , thumbXMRVol )
2017-09-07 20:40:29 +00:00
except :
2017-09-14 02:43:48 +00:00
bot . say ( " Error - bithumb korea is worst korea. " )
2017-09-07 20:40:29 +00:00
2017-09-06 00:47:31 +00:00
# Polo
try :
r = requests . get ( polourl )
j = r . json ( )
xmr = j [ " BTC_XMR " ]
last = float ( xmr [ ' last ' ] )
# change=float(xmr['percentChange'])
vol = float ( xmr [ ' baseVolume ' ] )
2017-09-06 03:40:37 +00:00
# '''remove?
# if change >= 0:
# sign = '+'
# else:
# sign = ''
# face = ''
# if change > 0.10:
# face = u'\u263d'.encode('utf8')
# if 0.10 >= change > 0.05:
# face = u'\u2661'.encode('utf8')
# if 0.05 >= change > 0.02:
# face = u'\u263a'.encode('utf8')
# if 0.02 >= change > -0.02:
# face = u'\u2694'.encode('utf8')
# if -0.02 >= change > -0.05:
# face = u'\u2639'.encode('utf8')
# if -0.05 >= change > -0.1:
# face = u'\u2620'.encode('utf8')
# if change < -0.1:
# face = u'\u262d'.encode('utf8')
# '''
stringtosend + = " Poloniex last: {0:.6f} BTC on {1:.2f} BTC volume | " . format ( last , vol )
2017-09-06 00:47:31 +00:00
except :
bot . say ( " Something borked ¯ \ (º_o)/¯ " )
# bfx
try :
r = requests . get ( finexbtc )
j = r . json ( )
2017-09-06 03:40:37 +00:00
stringtosend + = " Bitfinex last: {0:.6f} on {1:.2f} XMR volume | " . format ( float ( j [ ' last_price ' ] ) , float ( j [ ' volume ' ] ) )
2017-09-06 00:47:31 +00:00
except :
bot . say ( " Something borked ʕノ•ᴥ•ʔノ ︵ ┻━┻ " )
# Kraken
try :
r = requests . get ( krakbtc )
j = r . json ( )
2017-09-06 03:40:37 +00:00
stringtosend + = " Kraken last: {0:.6f} on {1:.2f} XMR volume | " . format ( float ( j [ ' result ' ] [ ' XXMRXXBT ' ] [ ' c ' ] [ 0 ] ) , float ( j [ ' result ' ] [ ' XXMRXXBT ' ] [ ' v ' ] [ 1 ] ) )
2017-09-06 00:47:31 +00:00
except :
bot . say ( " Something borked ¤ \ ( `⌂´ )/¤ " )
# Trex
geturl = trexurl + ' xmr '
try :
r = requests . get ( geturl )
j = r . json ( )
xmr = j [ ' result ' ] [ 0 ]
last = float ( xmr [ ' Last ' ] )
# change=((last/float(xmr['PrevDay']))-1)
vol = float ( xmr [ ' BaseVolume ' ] )
2017-09-06 03:40:37 +00:00
stringtosend + = " Bittrex last: {0:.6f} BTC on {1:.2f} BTC volume | " . format ( last , vol )
2017-09-06 00:47:31 +00:00
except :
bot . say ( " Something borked -_- " )
# Cryptopia
2017-09-06 03:40:37 +00:00
try :
coin = ' XMR '
pair = ' BTC '
r = requests . get ( cryptopiaurl )
2017-09-06 00:47:31 +00:00
j = r . json ( )
found = False
for i in j [ " Data " ] :
if i [ " Label " ] == coin + " / " + pair :
last = float ( i [ ' LastPrice ' ] )
# change=float(i['Change'])
vol = float ( i [ ' Volume ' ] )
2017-09-06 03:40:37 +00:00
stringtosend + = " Cryptopia last: {0:.6f} {1} on {2:.2f} {1} volume | " . format ( last , pair , vol * last )
2017-09-06 00:47:31 +00:00
found = True
if found == False :
bot . say ( " WTF?!? " )
except :
bot . say ( " Something borked ( -.-) ノ -=≡≡卍 " )
# Tux
try :
r = requests . get ( ' https://tuxexchange.com/api?method=getticker ' )
j = r . json ( )
if not trigger . group ( 2 ) :
ticker = ' XMR '
else :
ticker = trigger . group ( 2 ) . upper ( )
coin = j [ ' BTC_ {} ' . format ( ticker ) ]
last = float ( coin [ ' last ' ] )
vol = float ( coin [ ' baseVolume ' ] )
# change=float(coin['percentChange'])
2017-09-06 03:40:37 +00:00
stringtosend + = " Tux last: {0:.6f} BTC on {1:.2f} BTC volume. " . format ( last , vol )
2017-09-06 00:47:31 +00:00
except :
bot . say ( " Something borked ( ︶︿︶)_╭∩╮ " )
#Finally... print to IRC
bot . say ( stringtosend )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' usd ' )
def usd ( bot , trigger ) :
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] )
bot . say ( " Monero price in USD = $ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' aud ' )
def aud ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdaud = fixerjson [ ' rates ' ] [ ' AUD ' ]
except :
usdaud = 1.35
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdaud
bot . say ( " Monero price in AUD = $ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' cny ' )
def cny ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdcny = fixerjson [ ' rates ' ] [ ' CNY ' ]
except :
usdjpy = 6.8
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdcny
bot . say ( " Monero price in CNY = ¥ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' jpy ' )
def jpy ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdjpy = fixerjson [ ' rates ' ] [ ' JPY ' ]
except :
usdjpy = 110
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdjpy
bot . say ( " Monero price in JPY = ¥ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' eur ' )
def eur ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdeur = fixerjson [ ' rates ' ] [ ' EUR ' ]
except :
usdeur = 0.95
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdeur
bot . say ( " Monero price in EUR = € {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' cad ' )
def cad ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdcad = fixerjson [ ' rates ' ] [ ' CAD ' ]
except :
usdcad = 1.35
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdcad
bot . say ( " Monero price in CAD = $ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' gbp ' )
def gbp ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdgbp = fixerjson [ ' rates ' ] [ ' GBP ' ]
except :
usdgbp = 0.81
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdgbp
bot . say ( " Monero price in GBP = £ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
2017-09-23 03:23:26 +00:00
@sopel.module.commands ( ' inr ' )
def inr ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdthb = fixerjson [ ' rates ' ] [ ' INR ' ]
except :
usdthb = 64
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdthb
bot . say ( " Monero price in INR = ₹ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
2017-03-21 03:59:50 +00:00
@sopel.module.commands ( ' thb ' )
def thb ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdthb = fixerjson [ ' rates ' ] [ ' THB ' ]
except :
usdthb = 1.35
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdthb
bot . say ( " Monero price in THB = ฿ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' zar ' )
def zar ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdzar = fixerjson [ ' rates ' ] [ ' ZAR ' ]
except :
usdzar = 13.05
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdzar
bot . say ( " Monero price in ZAR = R {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' nzd ' )
def nzd ( bot , trigger ) :
# Get conversion rate
try :
fixerresult = requests . get ( fixerurl )
fixerjson = fixerresult . json ( )
usdnzd = fixerjson [ ' rates ' ] [ ' NZD ' ]
except :
usdnzd = 1.405
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdnzd
bot . say ( " Monero price in NZD = $ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' ntd ' )
def ntd ( bot , trigger ) :
# Get conversion rate
try :
ntdurl = r ' https://query.yahooapis.com/v1/public/yql?q=select % 20* %20f rom % 20yahoo.finance.xchange % 20where % 20pair %20i n % 20( " USDTWD " )&format=json&diagnostics=true&env=store % 3A %2F %2F datatables.org %2F alltableswithkeys&callback= '
fixerresult = requests . get ( ntdurl )
fixerjson = fixerresult . json ( )
usdntd = float ( fixerjson [ ' query ' ] [ ' results ' ] [ ' rate ' ] [ ' Rate ' ] )
except :
bot . say ( " Failed to get NTD value " )
usdntd = 32
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdntd
bot . say ( " Monero price in NTD = $ {0:,.2f} " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' ugx ' )
def ugx ( bot , trigger ) :
# Get conversion rate
try :
ugxurl = r ' https://query.yahooapis.com/v1/public/yql?q=select % 20* %20f rom % 20yahoo.finance.xchange % 20where % 20pair %20i n % 20( " USDUGX " )&format=json&diagnostics=true&env=store % 3A %2F %2F datatables.org %2F alltableswithkeys&callback= '
fixerresult = requests . get ( ntdurl )
fixerjson = fixerresult . json ( )
usdugx = florat ( fixerjson [ ' query ' ] [ ' results ' ] [ ' rate ' ] [ ' Rate ' ] )
except :
usdugx = 3200
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker/monero/ ' )
j = r . json ( )
price = float ( j [ 0 ] [ ' price_usd ' ] ) * usdugx
bot . say ( " Monero price in UGX = {0:,.2f} shillings " . format ( price ) )
except :
bot . say ( " Failed to retrieve price. " )
@sopel.module.commands ( ' log ' )
def log ( bot , trigger ) :
volurl = ' https://c-cex.com/t/volume_btc.json '
try :
r = requests . get ( volurl )
j = r . json ( )
last = float ( j [ ' ticker ' ] [ ' log ' ] [ ' last ' ] )
vol = float ( j [ ' ticker ' ] [ ' log ' ] [ ' vol ' ] )
bot . say ( " Last price on c-cex for LOG at {0:.8f} BTC on {1:.3f} BTC volume. " . format ( last , vol ) )
except :
bot . say ( " C-cex sucks " )
2017-04-26 04:29:09 +00:00
@sopel.module.commands ( ' price ' )
def price ( bot , trigger ) :
try :
2018-01-02 05:18:11 +00:00
bot . say ( " 1 XMR = $12,345 USD (Offer valid in participating locations) " )
2017-04-26 04:29:09 +00:00
except :
bot . say ( " C-cex sucks " )
2017-06-01 01:10:54 +00:00
@sopel.module.commands ( ' commodity ' , ' com ' )
def commodity ( bot , trigger ) :
commodity_key = ' B1ZnykTmG6_A1vkwzt9u '
input_com = trigger . group ( 2 ) . upper ( )
if input_com == ( ' AU ' or ' GOLD ' or ' XAU ' ) :
2017-07-02 19:44:20 +00:00
commodity = ' AU_EIB '
2017-06-01 01:10:54 +00:00
unit = ' oz '
elif input_com == ( ' AG ' or ' SILVER ' or ' XAG ' ) :
commodity = ' AG_USD '
unit = ' oz '
elif input_com == ( ' PT ' or ' PLATINUM ' or ' XPT ' ) :
commodity = ' WLD_PLATINUM '
unit = ' oz '
elif input_com == ( ' COFFEE ' ) :
commodity = ' COFFEE_BRZL '
unit = ' lb '
try :
r = requests . get ( " https://www.quandl.com/api/v3/datasets/COM/ {0} .json?&api_key= {1} " . format ( commodity , commodity_key ) )
j = r . json ( )
last = j [ ' dataset ' ] [ ' data ' ] [ 0 ] [ 1 ]
bot . say ( " Last price on {0} was $ {1:.3f} per {2} . " . format ( commodity , last , unit ) )
except :
bot . say ( " Monerobux fails again... " )
2018-01-02 05:18:11 +00:00
@sopel.module.commands ( ' xmy ' )
def xmy ( bot , trigger ) :
try :
r = requests . get ( ' https://api.coinmarketcap.com/v1/ticker?limit=500 ' )
j = r . json ( )
except :
bot . say ( " Can ' t connect to API " )
symbol = ' XMY '
try :
for i in j :
try :
if i [ ' symbol ' ] == symbol :
coin = i
except : pass
try :
if i [ ' rank ' ] == str ( rank ) :
coin = i
except : pass
symbol = coin [ ' symbol ' ]
name = coin [ ' name ' ]
rank = coin [ ' rank ' ]
price_usd = float ( coin [ ' price_usd ' ] )
price_btc = float ( coin [ ' price_btc ' ] )
volume_usd = float ( coin [ ' 24h_volume_usd ' ] )
market_cap_usd = float ( coin [ ' market_cap_usd ' ] )
available_supply = float ( coin [ ' available_supply ' ] )
total_supply = float ( coin [ ' total_supply ' ] )
percent_change_24h = float ( coin [ ' percent_change_24h ' ] )
bot . say ( " {0} ( {1} ) is # {2} . Last price $ {3:.2f} / ฿ {4:.8f} . 24h volume $ {5:,.0f} changed {6} % . Market cap $ {7:,.0f} . Available / total coin supply {8:,.0f} / {9:,.0f} . " . format ( name , symbol , rank , price_usd , price_btc , volume_usd , percent_change_24h , market_cap_usd , available_supply , total_supply ) )
except :
bot . say ( " Error parsing ticker " )