Skip to content

Instantly share code, notes, and snippets.

@osmamige
Created July 15, 2016 15:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save osmamige/30ef60f40b2ba9b7503eb65ef750a66d to your computer and use it in GitHub Desktop.
Save osmamige/30ef60f40b2ba9b7503eb65ef750a66d to your computer and use it in GitHub Desktop.
from lxml import html
import requests
import re
import sys
class CoinMarketCap(object):
def __init__(self):
self.tree = html.fromstring(requests.get('http://coinmarketcap.com').text)
self.euro_dollar = float(self.tree.xpath('//div[@id="currency-exchange-rates"]/@data-eur')[0])
def get_price(self, coin_name, dollar=False):
rate = float(self.tree.xpath('//tr[@id="id-%s"]/td[4]/a[@class="price"]/text()'%coin_name.strip().lower())[0].split(' ')[1])
if dollar:
return rate
else:
return rate/self.euro_dollar
class Steem(object):
def __init__(self, user_name, ratio_steem_fiat, ratio_fiat_dollar):
assert(user_name)
self.steemd_url = 'https://steemd.com/@{}'.format(user_name)
self.steemd_page = requests.get(self.steemd_url).text
self.steem_per_mvests = float(re.search("steem_per_mvests</samp></th></tr><tr><td><i>([0-9]*\.?[0-9]*)</i>", requests.get('https://steemd.com/').text).group(1))
self.ratio_steem_fiat = ratio_steem_fiat
self.ratio_fiat_dollar = ratio_fiat_dollar
def print_balance(self):
steem_vests = float(re.search(r'<th>Vesting shares</th><td>([0-9]*\,?[0-9]*i*\.?[0-9]*)<m>', self.steemd_page).group(1).replace(',',''))
steems = float(re.search(r'<th>Balance</th><td>([0-9]*\.?[0-9]*) STEEM</td>', self.steemd_page).group(1))
steem_dollars = float(re.search(r'\$([0-9]*\.?[0-9]*)', self.steemd_page).group(1))
steem_vests_in_euros = steem_vests*self.steem_per_mvests*self.ratio_steem_fiat
steems_in_euros = steems*self.ratio_steem_fiat
steem_dollars_in_euros = steem_dollars/self.ratio_fiat_dollar
print('Steem balance')
print('\tSteem vests: \t{0:.2f}M \t({1:.2f} euros)'.format(steem_vests, steem_vests_in_euros))
print('\tSteem: \t\t{0:.3f} \t({1:.2f} euros)'.format(steems, steems_in_euros))
print('\tSteem Dollars: \t{0:.3f} \t({1:.2f} euros)'.format(steem_dollars, steem_dollars_in_euros))
print('Total: \t\t\t\t{0:.2f} euros'.format(steem_vests_in_euros+steems_in_euros+steem_dollars_in_euros))
if __name__ == '__main__':
coinm = CoinMarketCap()
ratio_euro_dollar = coinm.euro_dollar
ratio_steem_fiat = coinm.get_price('STEEM')
username = 'oscarp' if len(sys.argv) < 2 else sys.argv[1]
Steem(username, ratio_steem_fiat, ratio_euro_dollar).print_balance()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment