import argparse import getpass import logging from lib.blockchaininfo import get_bitcoin_current_price_usd, get_bitcoin_current_address_balance from lib.mint import Mint from lib.utils import money_format def main(): # Create argument parser parser = argparse.ArgumentParser(description='Update Mint.com with current value of Bitcoins in specified bitcoin ' 'addresses') parser.add_argument('-e', action='store', dest='email', help='Mint.com Email Address', required=True) parser.add_argument('-p', action='store', dest='password', help='Mint.com Password (will prompt if not provided)') parser.add_argument('-l', action='store', dest='bitcoin_account_label', help='Mint.com Bitcoin account label', required=True) parser.add_argument('-a', action='append', default=[], dest='bitcoin_addresses', help='Bitcoin public address (specify multiple -a for more than one)') parser.add_argument('-f', action='store', dest='bitcoin_address_file', help='Bitcoin public address file containing one address per line') parser.add_argument('--version', action='version', version='%(prog)s 1.3') args = parser.parse_args() # Setup logging logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)-6s line %(lineno)-4s %(message)s') # Get password if not provided if not args.password: args.password = getpass.getpass("Mint.com password: ") # Get addresses from file if not provided by -a argument if not args.bitcoin_addresses: if not args.bitcoin_address_file: print "must provide either -a or -f argument" return f = open(args.bitcoin_address_file,'r') args.bitcoin_addresses = f.read().splitlines() f.closed # Get bitcoin balance and price bitcoin_balance = 0.00000000 for address in args.bitcoin_addresses: bitcoin_balance += get_bitcoin_current_address_balance(address) current_bitcoin_price_usd = get_bitcoin_current_price_usd() # Determine current balance total_usd = bitcoin_balance * current_bitcoin_price_usd total_usd_string = money_format(total_usd) logging.info("Current combined balance for all addresses: {}\n".format(total_usd_string)) # Initialize mint object mint = Mint(args.email, args.password) # Login mint.login() # Get all accounts mint_accounts = mint.get_accounts() # Find Bitcoin account id mint_bitcoin_account_id = mint.get_account_id_by_name(mint_accounts, args.bitcoin_account_label) # Update mint account id with new balance mint.set_account_value(mint_bitcoin_account_id, args.bitcoin_account_label, total_usd_string) # Logout mint.logout() logging.info("Finished") if __name__ == "__main__": main()