Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_manabar(self):
""""Return manabar"""
max_mana = self.get_effective_vesting_shares()
if max_mana == 0:
props = self.steem.get_chain_properties()
required_fee_steem = Amount(props["account_creation_fee"], steem_instance=self.steem)
max_mana = int(self.steem.sp_to_vests(required_fee_steem))
last_mana = int(self["voting_manabar"]["current_mana"])
last_update_time = self["voting_manabar"]["last_update_time"]
last_update = datetime.utcfromtimestamp(last_update_time)
diff_in_seconds = (addTzInfo(datetime.utcnow()) - addTzInfo(last_update)).total_seconds()
current_mana = int(last_mana + diff_in_seconds * max_mana / STEEM_VOTING_MANA_REGENERATION_SECONDS)
if current_mana > max_mana:
current_mana = max_mana
if max_mana > 0:
current_mana_pct = current_mana / max_mana * 100
else:
current_mana_pct = 0
return {"last_mana": last_mana, "last_update_time": last_update_time,
"current_mana": current_mana, "max_mana": max_mana, "current_mana_pct": current_mana_pct}
When intervall is set to None, all trades are received between start and stop.
This can take a while.
:param datetime start: Start date
:param datetime stop: Stop date
:param timedelta intervall: Defines the intervall
:param int limit: Defines how many trades are fetched at each intervall point
:param bool raw_data: when True, the raw data are returned
"""
utc = pytz.timezone('UTC')
if not stop:
stop = utc.localize(datetime.utcnow())
if not start:
start = stop - timedelta(hours=1)
start = addTzInfo(start)
stop = addTzInfo(stop)
current_start = start
filled_order = []
fo = self.trades(start=current_start, stop=stop, limit=limit, raw_data=raw_data)
if intervall is None and len(fo) > 0:
current_start = fo[-1]["date"]
filled_order += fo
elif intervall is not None:
current_start += intervall
filled_order += [fo]
last_date = fo[-1]["date"]
while (len(fo) > 0 and last_date < stop):
fo = self.trades(start=current_start, stop=stop, limit=limit, raw_data=raw_data)
if len(fo) == 0 or fo[-1]["date"] == last_date:
break
last_date = fo[-1]["date"]
if intervall is None:
allocated_bandwidth = (max_virtual_bandwidth * (vesting_shares + received_vesting_shares) / total_vesting_shares)
allocated_bandwidth = round(allocated_bandwidth / 1000000)
if not not self.steem.is_connected() and self.steem.rpc.get_use_appbase():
account_bandwidth = self.get_account_bandwidth(bandwidth_type=1, account=account)
if account_bandwidth is None:
return {"used": 0,
"allocated": allocated_bandwidth}
last_bandwidth_update = formatTimeString(account_bandwidth["last_bandwidth_update"])
average_bandwidth = float(account_bandwidth["average_bandwidth"])
else:
last_bandwidth_update = (self["last_bandwidth_update"])
average_bandwidth = float(self["average_bandwidth"])
total_seconds = 604800
seconds_since_last_update = addTzInfo(datetime.utcnow()) - last_bandwidth_update
seconds_since_last_update = seconds_since_last_update.total_seconds()
used_bandwidth = 0
if seconds_since_last_update < total_seconds:
used_bandwidth = (((total_seconds - seconds_since_last_update) * average_bandwidth) / total_seconds)
used_bandwidth = round(used_bandwidth / 1000000)
return {"used": used_bandwidth,
"allocated": allocated_bandwidth}
# print("bandwidth percent used: " + str(100 * used_bandwidth / allocated_bandwidth))
"Key", "Value"
])
t.align = "r"
t.add_row([tag_type + " count", str(len(self))])
own_mvest = []
eff_sp = []
rep = []
last_vote_h = []
last_post_d = []
no_vote = 0
no_post = 0
for f in self:
rep.append(f.rep)
own_mvest.append(f.balances["available"][2].amount / 1e6)
eff_sp.append(f.get_steem_power())
last_vote = addTzInfo(datetime.utcnow()) - (f["last_vote_time"])
if last_vote.days >= 365:
no_vote += 1
else:
last_vote_h.append(last_vote.total_seconds() / 60 / 60)
last_post = addTzInfo(datetime.utcnow()) - (f["last_root_post"])
if last_post.days >= 365:
no_post += 1
else:
last_post_d.append(last_post.total_seconds() / 60 / 60 / 24)
t.add_row(["Summed MVest value", "%.2f" % sum(own_mvest)])
if (len(rep) > 0):
t.add_row(["Mean Rep.", "%.2f" % (sum(rep) / len(rep))])
t.add_row(["Max Rep.", "%.2f" % (max(rep))])
if (len(eff_sp) > 0):
t.add_row(["Summed eff. SP", "%.2f" % sum(eff_sp)])
def get_manabar_recharge_time(self, manabar, recharge_pct_goal=100):
""" Returns the account mana recharge time in minutes
:param dict manabar: manabar dict from get_manabar() or get_rc_manabar()
:param float recharge_pct_goal: mana recovery goal in percentage (default is 100)
"""
return addTzInfo(datetime.utcnow()) + self.get_manabar_recharge_timedelta(manabar, recharge_pct_goal)
start_time = datetime(2018, 4, 1, 0, 0, 0)
stop_time = datetime(2018, 3, 1, 0, 0, 0)
# Returns the account operation from 1.4.2018 back to 1.3.2018
acc_op = []
for h in acc.history_reverse(start=start_time, stop=stop_time):
acc_op.append(h)
len(acc_op)
.. testoutput::
0
"""
_limit = batch_size
first = self.virtual_op_count()
start = addTzInfo(start)
stop = addTzInfo(stop)
if not first or not batch_size:
return
if start is not None and isinstance(start, int) and start < 0 and not use_block_num:
start += first
elif start is not None and isinstance(start, int) and not use_block_num:
first = start
elif start is not None and first > batch_size:
op_est = self.estimate_virtual_op_num(start, stop_diff=1)
est_diff = 0
if isinstance(start, (datetime, date, time)):
for h in self.get_account_history(op_est, 0):
block_date = formatTimeString(h["timestamp"])
while(op_est + est_diff + batch_size < first and block_date < start):
est_diff += batch_size
if op_est + est_diff > first:
.. note::
only_ops and exclude_ops takes an array of strings:
The full list of operation ID's can be found in
beembase.operationids.ops.
Example: ['transfer', 'vote']
"""
if order != -1 and order != 1:
raise ValueError("order must be -1 or 1!")
# self.steem.rpc.set_next_node_on_empty_reply(True)
txs = self._get_account_history(start=index, limit=limit)
if txs is None:
return
start = addTzInfo(start)
stop = addTzInfo(stop)
if order == -1:
txs_list = reversed(txs)
else:
txs_list = txs
for item in txs_list:
item_index, event = item
if start and isinstance(start, (datetime, date, time)):
timediff = start - formatTimeString(event["timestamp"])
if timediff.total_seconds() * float(order) > 0:
continue
elif start is not None and use_block_num and order == 1 and event['block'] < start:
continue
elif start is not None and use_block_num and order == -1 and event['block'] > start:
continue
elif start is not None and not use_block_num and order == 1 and item_index < start: