STEEM Steuertool

in #deutsch7 years ago

Gestern wurde gefragt, von @stehaller, ob es denn ein Tool geben würde, welches alle Reward Einnahmen auflisten würde.

Es gibt anscheinend noch keines, also hab ich mich kurz hingesetzt und was zusammengeschrieben.

Voraussetzung

Python und Steem-Python ist installiert.
Sorry, ohne das geht es nicht.
Aber es findet sich sicher jemand, der das schnell in eine andere Sprache oder als Webtool umsetzen kann.

Konfiguration

username ändern, das wars. Es kann auch noch filename und currency geändert werden, wenn man will.

Benutzung

Einfach mit Python ausführen, es wird eine neue Datei angelegt, bzw. die alte hergenommen und nachgeschaut, was denn die letzte Transaktion war.

ToDos

Bislang is nur claim reward und producer reward umgesetzt.
Das kann sicher noch um mehr ergänzt werden.

from steem import Steem
from steem.account import Account
from steem.amount import Amount
from steem.converter import Converter
from datetime import datetime
import requests
from dateutil import parser
import os.path

username = 'isnochys'
filename = 'steuer.csv'
currency = 'EUR'

last_id =''
if os.path.exists(filename):
    fileHandle = open(filename,"r" )
    lineList = fileHandle.readlines()
    fileHandle.close()
    if lineList:
        last_id = lineList[-1].split(';')[0]
    
s = Steem()
a = Account(username,s)
con = Converter(s)
hrl = a.history_reverse(filter_by=['producer_reward','claim_reward_balance'])
historical_price ={}
rtaxl = []
vests_steem = con.vests_to_sp(1)

def get_x(cur, stamp):
    #'https://min-api.cryptocompare.com/data/pricehistorical?fsym=STEEM&tsyms=BTC,USD,EUR&ts=1502689400'
    murl = 'https://min-api.cryptocompare.com/data/pricehistorical?fsym='+cur+'&tsyms='+currency+'&ts='+str(stamp)
    f = requests.get(murl)
    d=f.json()
    return d[cur][currency]#rate
    
def get_exchange_rate(timestamp):
    datum = str(timestamp.year)+"-"+str(timestamp.month)+"-"+str(timestamp.day)
    if datum not in historical_price:
        tmpstp = parser.parse(datum+' 00:00:00 UTC').timestamp()
        steemx = get_x('STEEM',tmpstp)
        sbdx = get_x('SBD',tmpstp)
        historical_price[datum]={'STEEM':steemx,'SBD':sbdx}
    ret = historical_price[datum]
    return ret['STEEM'],ret['SBD']
    
for op in hrl:
    if last_id == op['_id']:
        break
    timestamp = parser.parse(op['timestamp']+' UTC')
    steemx,sbdx = get_exchange_rate(timestamp)
    if op['type']== 'claim_reward_balance':
        am = Amount(op['reward_vests']).amount
        euro = am*vests_steem*steemx
        am = Amount(op['reward_sbd']).amount
        euro += am*sbdx
        am = Amount(op['reward_steem']).amount
        euro += am*steemx
    elif op['type']== 'producer_reward':
        am = Amount(op['vesting_shares']).amount
        euro = am*vests_steem*steemx
    rtaxl.append({'id':op['_id'],'timestamp':op['timestamp'],'type':op['type'],'amount':euro})

taxl = rtaxl[::-1]  
fileHandle = open(filename,"a")
for tax in taxl:
    line = tax['id']+";"+tax['timestamp']+";"+tax['type']+";"+str(tax['amount'])
    fileHandle.write(line+"\n")
fileHandle.close()
Sort:  

This post has been upvoted by @millibot with 25.0%!
Thank you for giving your trust and witness vote to my creator @isnochys!
More profits? 100% Payout! Delegate some SteemPower to @millibot: 1 SP, 5 SP, 10 SP

This post has been upvoted by @minibot with 25.0%!
Thank you for giving your trust and witness vote to my creator @isnochys!
More profits? 100% Payout! Delegate some SteemPower to @minibot: 1 SP, 5 SP, 10 SP

Hallo @isnochys, würde dir gerne einen Upvote geben, aber dein Beitrag ist älter als 7 Tage. Schreibe eine Antwort auf diesen Kommentar, dann kann ich diesen upvoten.

Das Tool hört sich vielversprechend an, aber wenn jemand nie mit Python gearbeitet hat,d er wird an der sehr knappen Anleitung scheitern. Mit dem neuen Post könntest du dann zusätzlich für das Tool werben.

Ich kann daraus auch noch ein Utopia Beitrag machen und in mein git repository hochladen.
Danke für die Idee;)
Also, den Kommentar nicht upvoten, sondern auf meinen neuen Beitrag warten, der in kürze..morgen..oder die Tage kommen wird:))

Also, den Kommentar nicht upvoten, sondern auf meinen neuen Beitrag...

Ich bin jetzt ganz dreist und vote einfach beides :-)

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 62227.11
ETH 2400.78
USDT 1.00
SBD 2.50