Created
July 27, 2016 07:45
-
-
Save osmamige/8821f4fe7bd9102a265dc899280b71d0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from lxml import html | |
import requests | |
import re | |
import sys | |
from optparse import OptionParser | |
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]) | |
#print("Euro dollar rate: %f"%self.euro_dollar) | |
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 | |
def get_market_cap(self, coin_name, dollar=False): | |
cap = float(self.tree.xpath('//tr[@id="id-%s"]/td[@class="no-wrap market-cap text-right"]/text()'%coin_name.strip().lower())[0].strip().split(' ')[1].replace(',','')) | |
if dollar: | |
return cap | |
else: | |
return cap/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 | |
self.steem_accounts_total = float(re.search(r'<samp>registered_accounts</samp></th></tr><tr><td><i>([0-9]*\,?[0-9]*)</i>', requests.get('https://steemd.com').text ).group(1).replace(',','')) | |
def print_balance(self, dollar=False): | |
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 | |
fiat_label = 'euros' if not dollar else 'dollars' | |
print('Steem balance') | |
print('\tSteem vests: \t{0:.2f}M \t({1:.2f} {2})'.format(steem_vests, steem_vests_in_euros, fiat_label)) | |
print('\tSteem: \t\t{0:.3f} \t({1:.2f} {2})'.format(steems, steems_in_euros, fiat_label)) | |
print('\tSteem Dollars: \t{0:.3f} \t({1:.2f} {2})'.format(steem_dollars, steem_dollars_in_euros, fiat_label)) | |
print('Total: \t\t\t\t{0:.2f} {1}'.format(steem_vests_in_euros+steems_in_euros+steem_dollars_in_euros, fiat_label)) | |
if __name__ == '__main__': | |
coinm = CoinMarketCap() | |
steem_market_cap = coinm.get_market_cap('STEEM', True) | |
total_users = Steem('foo', None, None).steem_accounts_total | |
print(" Market Cap is $ {0} and total users is {1} with ${2} per user".format(int(steem_market_cap), int(total_users), int(steem_market_cap/total_users))) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment