Retrieve Steem and SBD Balances and Voting Power of Your Account Using Python and steem-python Modules
This post contains a variation on code that I published in a previous post. The difference between this post and that post is that here I fully use the steem-python library classes "Account", "Amount", and "utils". The previous post only used the "Steem" class and the Python "datetime" class. The previous post where I don't use the steem-python classes lets you know what is going on "under the hood".
I used two-fewer lines of code and my code is more elegant and simple when I use the steem-python library classes.
Tips on installing and using steem-python on an Apple or Linux computer
Download and install steem-python
Download and install Python
#This script will print out the SBD and STEEM balances and the current user's voting
# power.
from steem.account import Account
from steem.amount import Amount
from steem import utils
# Substitute your username for "numberjocky".
userName = 'numberjocky'
# Get the account data for userName
userAcct = Account(userName)
# The SBD and Steem balances of the account are the values of the "sbd_balance" and
# "balance" keys in the userAcct dictionary object. The keys are two-word
# strings that can be input into the steem-python "Amount" module and the values
# of the balances can be extracted using the "amount" variable of the Amount object.
# N.B. Amount only works on two-word strings, not one-word values
sbdBalance = Amount(userAcct['sbd_balance']).amount
steemBalance = Amount(userAcct['balance']).amount
# The voting_power and last_vote_time store the voting power of the user the last time
# they voted. To compute the present voting power, the last_vote_time must be subtracted
# from the present time and the difference multiplied by the vote replenishment factor
# of 20% per day. Then, the result is added to the voting power at the last vote time to
# determine the current voting power. The "time_elapsed" function in the steem-python
# "utils" module is used to calculate the amount of time since the last vote. It outputs
# a "timedelta" object (timeSinceLastVote) as defined in Python's own "datetime" module.
votingPowerLast = userAcct['voting_power']/100
timeSinceLastVote = utils.time_elapsed(userAcct['last_vote_time'])
votingPower = timeSinceLastVote.seconds*20/86400+votingPowerLast
if votingPower > 100:
votingPower = 100
# Print out the results
print("%s" % userName)
print("%s SBD" % sbdBalance)
print("%s STEEM" % steemBalance)
print("%.5s voting power" % votingPower)
Enjoy!