Another use{ful, less} utility from me
This time, I spent a little more time making it better, refactored with error checks and most options I can think of, but without further adieu:
Hornet.py
#!/bin/env python3
import time
from pprint import pprint
import click
from beem import Steem
from beem.account import Account
from beem.instance import set_shared_steem_instance, shared_steem_instance
from beem.wallet import Wallet
@click.command()
@click.option('--chain', '-c', default=["steem", "hive"], show_default=True,
help='Hive or Steem or both')
@click.option('--mana', '-m', default=10000, show_default=True,
help='How much Mana you want to save')
def claim_it(chain, mana):
"""Very simple Utility to claim HIVE and/or STEEM account tokens"""
api = {"steem": "https://api.steemit.com", "hive": "https://api.hive.blog"}
wif = click.prompt("Enter private key", confirmation_prompt=False, hide_input=True)
for network in chain:
steem = Steem(node=api[network], keys=wif)
set_shared_steem_instance(steem)
wallet = Wallet(shared_steem_instance())
steemid = wallet.getAccountFromPrivateKey(wif)
account = Account(steemid, steem_instance=shared_steem_instance())
mana_old = account.get_rc_manabar()
mana_human_readable = mana_old["current_mana"] / 1e9
tries = 2
for i in range(tries):
try:
if mana_human_readable > mana:
click.echo(f"[Mana on {network} Before: %f RC]" % (mana_old["current_mana"] / 1e9))
tx = steem.claim_account(creator=steemid, fee=None)
pprint(tx)
time.sleep(5)
mana_new = account.get_rc_manabar()
click.echo(f"[Mana on {network} After: %f RC]" % (mana_new["current_mana"] / 1e9))
rc_costs = mana_old["current_mana"] - mana_new["current_mana"]
click.echo("[Mana cost: %f RC]" % (rc_costs / 1e9))
else:
click.echo(
f"[Skipping claim account: current mana of %f lower than the set limit of %f on {network}]" % (
mana_human_readable, mana))
time.sleep(5)
except Exception as e:
click.echo('[Error:', e, ' - Trying Again]')
time.sleep(2)
if i < tries:
continue
else:
click.echo('[Failed to claim]')
else:
break
if __name__ == '__main__':
claim_it()
A successful run (older copy, ran out of RC)
Low on Mana Message
And again here is the always up to date: Gist on GitHub
Future ideas for it, read WIF from the os.env instead of passing a flag (to make it useful to run in cron) and any other slight tweaks it might need.
Now, I have been posting these little snippets and plan to continue to do so, time permitting, as long as there is interest (also, if run out of bee type names). I am still sort of learning the ropes of Python from a very, very long hiatus. I considered running a Learning Python by Jumping into the Deep End sort of "teaching" if you could call it that. If you like what I do, want to see more, or just want to be nice, follow me here, or on GitHub, or just drop me a comment.
EDIT: Big shoutout to @holger80 who pointed out a glaring security issue it has since been updated. (private key in plaintext and in bash/zsh history)
As always stay safe out there,
Michael Garcia a.k.a. @TheCrazyGM
I was looking for some way to start learning to code on Hive, looks like your simple python code is a great point to start for me.
hit me up if you want to collaborate or something :)
I'll do that if I ever finish doing homework with my kids.