Seit meinem letzten Update sind 13 Tage vergangen und mittlerweile hat sich wieder viel getan, von dem ich nun berichten will. Eigentlich sollte dieser Post schon bisschen früher entsehen, hatte aber aufgrund einer kurzen Erkältung keine große Lust.
Der letzte Stand meines Steem-Bots war ja, dass er deutsche Posts nach genau 14 Minuten upvotet, wenn diese bestimmte Mindeststandards erfüllen. Umso besser einige Kriterien wie Wortanzahl, Bilder usw. erfüllt sind, desto mehr % Upvote erhält so ein Post. Diese Kriterien sind natürlich nicht 100% sicher Garant für Qualität, aber sie sind ein Indiz. Manuelles Upvoten ist nach wie vor am besten und der Bot eine super Ergänzung.
Mit folgenden Funktionen wurde der Bot nun erweitert.
1. Bestimmte Tags ausschließen
Es gibt Themenbereiche die will ich nicht einfach so von einer Maschine upvoten lassen, deshalb habe ich eine Liste erstellt, die geprüft wird, bevor der Bot den Vote vergibt. Ganz besonders betrifft das den Tag #politik, welcher definitiv keinen vollautomatschen ungeprüften Upvote erhalten soll. Aber auch #giveaway und #contest wollte ich nicht einfach so upvoten. Diese und einige andere Tags sind momentan auf einer Blacklist, die sich jederzeit ohne Probleme erweitern lässt
blacklist_tags = ["politik", "giveaway", "contest"]
s = Steem()
post_info = s.get_content(author, permlink)
tags_post = ast.literal_eval(post_info["json_metadata"])
for blacktag in blacklist_tags:
if blacktag in tags_post["tags"]:
title = "Ein Tag steht auf der Blacklist"
break
Momentan nutze ich für die Blacklist eine kleine Liste, werde diese aber bei Bedarf auf ein eigenes Textdokument auslagern. Ich habe noch mehr Tags auf der Blacklist und bin auch stets am Analysieren, welche Tags ich ebenfalls ausschließen will.
2. User ausschließen
Ebenso wie mit den Tags gibt es immer bestimmte User, die nicht gevotet werden sollen.
ausnahmen = ["thebluewin", "auminda"]
if author in ausnahmen:
title = "User steht auf der Ausnahmenliste"
Selber möchte ich mich nicht aus Versehen durch den Bot upvoten lassen, ebenso stehen hier User, bei denen mir meine eigenen Curation Rewards egal sind.
3. Mit mehreren Accounts nacheinander voten
Erst habe ich den Bot nur für mich entwickelt, damit er mit @thebluewin gute Posts upvotet. Allerdings kam schnell der Wunsch das mit weiteren Accounts gleichzeitig machen zu können. Dazu musste ich mein Programm nur etwas umschreiben und kann nun x beliebige Accounts den gleichen Post upvoten lassen - mit individueller Voting Weight!
Account1 votet beispielsweise immer mit dem Standardwert (1), was wohl etwa einem Durchschnittsvote von 33% entspricht. Account zwei votet mit deinem Wert von (2), was einen Durchschnittsvote von 66% ergeben würde.
Hier ein kurzer Einblick, wie ein einzelner Vote funktioniert.
voters= ["thebluewin", "PrivatePostingKey", "1"]
identifier = ('@'+author+'/'+permlink)
try:
s = Steem(keys=[voters[1]])
real_weight = round(post_bewertung * voters[2] / 3 * autoren_bewertung, 0)
if real_weight > 100:
real_weight = 100
s.commit.vote(identifier, float(real_weight), voters[0])
print("Erfolgreich gevotet: " + voters[0] + " mit " + str(real_weight) + "%")
except (RPCErrorRecoverable, RPCError) as err:
print("Exception encountered. Unable to vote")
continue
4. Autorenbewertung nach Curation Effizienz
Das größte und beste Update, das mein Bot bekommen hat, ist die Autorenbewertung. Ein Programm analysiert die Effizienz der durch den Bot geleisteten Upvotes, was die Curation Rewards betrifft. Wenn mir ein Upvote besonders viel Curation Rewards gebracht hat, erhält der Autor des Posts eine bessere Bewertung. Beim nächsten mal wenn dieser einen Post schreibt, bekommt der Post einen besseren Upvote, oder eben einen schlechteren, wenn der Curation Reward schlecht war. So hat jeder Autor einen eigenen Wert, der jederzeit verbessert oder verschlechtert werden kann.
Dieser Teil zielt natürlich fast nur darauf ab meine Curation Rewards zu verbessern. Autoren die noch ganz neu sind und trotz sehr guter Posts kaum Upvotes in Steem erhalten, werden an dieser Stelle auch von meinem Bot benachteiligt, da sie mir logischwerweise keine guten Curation Rewards eingebracht haben. Allerdings schaue ich mir immer nochmal persönlich alle Posts an und wenn wirklich richtig gute dabei sind, passe ich die Autorenbewertung manuell an.
So ist der Ablauf der automatischen Bewertung:
- Gevotete Posts werden in einem Dokument gespeichert
- Ein Skript prüft das Dokument
- Alle Posts in dem Dokument zwischen 7 und 14 Tage Alter werden analysiert
- Es wird ein Durchschnittwert für die Curation Effizienz gebildet
- Jeder einzelne Post der noch nie verarbeitet wurde wird analysiert und mit dem Durchschnittwert verglichen
- Der Autor erhält eine neue Bewertung welche in ein eigenes Dokument gespeichert wird
Der schwerste Teil war es für mich zu berechnen, wie hoch die Curation Rewards bei einem Post für mich sind. Leider wird das nicht einfach so in der Blockchain gespeichert, sondern nur alle einzelnen Votes für einen Post. Ich habe es dann hinbekommen, bin mir aber nicht 100% sicher, ob das Programm die komplett richtigen Werte berechnet. Sie sind aber soweit richtig, dass sie für mein Programm reichen.
for vote in sorted(votes[0:], key=lambda x: float(x["zeit"]), reverse=False):
reward = (vote["zeit"] / 900)
if reward > 1:
reward = 1
if vote["voter"] == "thebluewin":
change = 1
verlust = 1 - reward
eigener_wert = int(vote["rshares"])
if change != 1:
vor_mir_shares = vor_mir_shares + int(vote["rshares"])
else:
nach_mir_shares = nach_mir_shares + int(vote["rshares"])
komplette_shares = vor_mir_shares + nach_mir_shares
verlust = verlust * 0.25
vor_mir_shares = vor_mir_shares * 0.25
eigener_wert = eigener_wert * 0.25
komplette_shares = komplette_shares * 0.25
gesamtreward = (math.sqrt((vor_mir_shares + eigener_wert)) - math.sqrt(vor_mir_shares)) * math.sqrt(komplette_shares)* (1 - verlust)
effizienz = gesamtreward / eigener_wert
Fazit
Mein Bot läuft jetzt bereits so lange, dass sich schon eine relativ gute Liste mit Autoren und deren Bewertung angesammelt hat. Ich werde nun beobachten wie sich meine Curation Rewards auf diese Art und Weise über die nächsten Wochen verändern und dann davon berichten.
Ansonsten möchte ich mich als nächstes auf die Contentbewertung eines Posts konzentrieren um diese hoffentlich noch stark verbessern zu können.
Hier die ersten beiden Teile meiner Programmier-Serie:
- /deutsch/@thebluewin/ich-lerne-programmieren-und-du-kannst-das-auch-teil-1
- /deutsch/@thebluewin/ich-lerne-programmieren-und-du-kannst-das-auch-teil-2-erster-bot-mit-python
Ich bin schon zu blöd Steemit in Python zu integrieren. Mache zwar alles nach Anleitung, aber es kommt immer eine Fehlermeldung. Und um mich genauer da rein zu arbeiten fehlt mir im Moment einfach die Zeit. Es gibt ja einige Anleitungen, aber nie so richtig Punkt für Punkt. Immer werden gewisse Dinge einfach voraus gesetzt was es einem als Anfänger manchmal doch sehr schwer macht.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Da stimme ich dir zu, meist werden bestimmte Dinge vorausgesetzt. Ich hab wirklich viel Zeit mit Google und Ausprobieren verbracht. Wenn ich mal noch mehr Erfahrung habe, will ich Schritt für Schritt Anleitungen zu bestimmten Sachen in Python und Steem erstellen, die alles genauestens erklären.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Dann warte ich noch ein wenig. Vielleicht klappt es ja dann mit deiner Anleitung.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Das ist gut, den darauf auch warte ich auch :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ich verzweifel so langsam. Ich lese hunderte von Anleitungen. Ich schnalle es nicht. Selbst die Anleitungen für Dummies sind mir zu hoch. Ich glaube ja auch mittlerweile alles durcheinander zu versuchen. Von Python über Java, Anaconda, Node js, npm und wie der ganze Kram heißt. Mein PC ist mittlerweile voll gemüllt mit Programmiertools. Ich habe null Plan was da wohin gehört. Gibt es denn nirgens eine simple Anleitung am besten in deutsch und für Windows. Schritt für Schritt. Nicht immer 5 Schritte überspringen. Das nervt mich, dass ich mit der Kram kein Stückchen vorwärts komme.
Soviel mal zu meiner momentanen Gefühlslage. Das musste ich jetzt mal loswerden. Und ganz so doof bin ich eigentlich nicht.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Was ist denn dein aktuelles Vorhaben, bzw. wo genau kommst du gerade nicht weiter?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Spannender Einblick, vielen Dank dafür. Wie genau kannst du voraussehen wie hoch deine Curationrewards sein werden? Das hängt doch von der Anzahl und Höhe der Votes ab, die nach deinem Upvote folgen oder täusche ich mich da?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Danke :) Für die Curation Bewertung analysiere ich nur Posts die bereits mindestens 7 Tage alt sind, sodass sich nichts mehr an der Curation ändern kann. Die Höhe der Curation ist von der Anzahl und Höhe der nach mir erfolgten Votes abhängig, das stimmt.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Klingt super willst du als nächstes einen Curation Report für Helpie-caster machen oder dir das script von chiren anschauen? (vielleicht bekommst du das ja zum laufen )
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Klar, schau ich mir gern mal an! Schicks mir einfach mal in Discord, dann schau ich's mir an und probiere bissl rum, bis es (hoffentlich) läuft.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ich bin echt beeindruckt wie gut das schon läuft! Gleichzeitig erinnert dieser post mich daran wie lang ich jetzt schon nicht mehr an meinem Projekt weiter gemacht habe...
Ich bin gespannt wie du den Parameter für den Inhalt optimieren willst :)
Posted using Partiko iOS
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ich bin tatsächlich auch begeistert und hätte am Anfang nicht gedacht, dass es SO schnell geht etwas funktionierendes zu programmieren.
Ich bin auch schon auf deinen nächsten Bericht gespannt :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ist schon beeindruckend, wie weit Dein projekt schon ist. viele helfende hände sind gut, umsetzen muss man es aber trotzdem alleine. RESPEKT!!! bin auf Deinen nächsten bericht gespannt. lg michael
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Vielen dank! Ich freue mich auch schon auf meinen nächsten Bericht, mal schauen wie es sich entwickelt. Es ist auf jeden Fall schön, dass sich andere dafür interessieren, das motiviert mich noch mehr :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ein sehr interessantes Projekt. das könnte auch was für mich sein 🤨
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Du hast doch schon einen Bot am Start ... ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Danke, ich kann es jedem nur empfehlen sich in Python einzuarbeiten. Macht echt Spaß hier in Steem und es lassen sich viele nützliche Dinge damit anstellen.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Schade, ich hätte ja schon gern gewußt, welchen Namen Dein Bot trägt, so rein aus Recherchegründen, die morgen klar werden werden. ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ich nutze nicht speziell einen eigenen Bot-Account, es ist vielmehr so, dass mein Bot-Programm für mich selber (@thebluewin) Votes tätigt. Am Tag vergebe ich aktuell etwa die Hälfte meiner Votepower automatisch durch mein Programm. Langfristig will ich einen weiteren Account nutzen, der dann komplett nur als Bot votet ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ok danke. Ich dachte schon, der "heilige Tinitus" wär Deiner. ;)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Wie heißt denn der Account vom "heiligen Tinitus"?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @thebluewin! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word
STOP
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey, Du wurdest von @altobot gevotet!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi @thebluewin!
Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 1.822 which ranks you at #29733 across all Steem accounts.
Your rank has not changed in the last three days.
In our last Algorithmic Curation Round, consisting of 209 contributions, your post is ranked at #88.
Evaluation of your UA score:
Feel free to join our @steem-ua Discord server
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Guten Tag,
Mein Name ist GermanBot und du hast von mir ein Upvote erhalten. Als UpvoteBot möchte ich dich und dein sehr schönen Beitrag unterstützen. Jeden Tag erscheint ein Voting Report um 19 Uhr, in dem dein Beitrag mit aufgelistet wird. In dem Voting Report kannst du auch vieles von mir erfahren, auch werden meine Unterstützer mit erwähnt. Schau mal bei mir vorbei, hier die Votings Reports. Mach weiter so, denn ich schaue öfter bei dir vorbei.
Euer GermanBot
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Du hast ein Upvote von mir erhalten. Ich bin ein automatischer VotingBot und veröffentliche einmal am Tag einen Post in dem alle Votes zu finden sind.
Der @curationvoter wünscht Dir und deinen Lieben ein angenehmes Wochenende
Bis denne
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Eine sehr übersichtliche Anleitung hast du geschrieben.
Danke für deine Hinweise. Ich werde einige mal ausprobieren.
Alles Gute und viele Grüße.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit