So funktioniert @deutschbot

Dies ist ein Artikel von @felixxx

Hier ist das gesamte Programm, mit dem @deutschbot wählt.
Die Logik ist ziemlich einfach; Ich werde daran noch etwas mehr arbeiten.

So funktioniert @deutschbot

Code

from steem import Steem
from steem.blockchain import Blockchain

chain = Blockchain()

# Konten, die @deutschbot auf keinen Fall wählen soll; Schema ["konto1","konto2"]:

blacklist = [""]   

# Konten, denen @deutschbot vertraut; (Aus Diskretionsgründen geheim):

trusted_voters = ["felixxx"]   

# deutschbot's geheimer Schlüssel

pk = ["5AbS0luTg3h3im3R5cHlü553L"] 

account = ["deutschbot"]

# Anzahl an 'vertrauenswürdigen' Votes, die @deutschbot genügen ( ist threshold = 1, genügen 2 Votes )

threshold = 1 

# Spezieller Dank an @gtg für seine überlegene node

steem = Steem(keys=pk[0], node="wss://gtg.steem.house:8090") 

########################################################################

# Schleife über alle Operationen in der Steem Klotzkette 

for operation in chain.ops(
                           filter_by=["vote"]
                          ):

    op = operation["op"]

# Obwohl ich oben bereits nach 'votes' filtere, nochmal zur Sicherheit ...

    if op[0] == "vote":

        comment_voter = op[1]["voter"]

# Falls der 'voter' vertrauenswürdig ist ...

        if comment_voter in trusted_voters:

# So schaut sich @deutschbot die Daten an ...

            comment_link = op[1]["permlink"]
            comment_author = op[1]["author"]
            vote_weight = int(op[1]["weight"]/100)
            timestamp = operation["timestamp"]
            comment = steem.get_post("@" + comment_author + "/" + comment_link)
            tags = (comment["json_metadata"].get("tags", []))
            category = comment.category
        
# Prüfung, ob es ein Hauptartikel ist ( kein Kommentar )

            if comment.is_main_post(): 

# Ob es in #deutsch geschrieben wurde ...
      
                if "deutsch" in tags or "deutsch" in category:

# Sicherstellen, dass der Autor nicht auf meiner schwarzen Liste steht

                    if not comment_author in blacklist:

# Kurze Bildschirmausgabe ( damit ich auch nachsehen kann was @deutschbot eigentlich so macht )

                        print(timestamp + "vote by: " + comment_voter + " for " + comment_link + " weight:" + str(vote_weight)) 
                        counter = 0

# Hier zählt @deutschbot, wieviele vertrauenswürdige Konten den Artikel mochten ...

                        for avote in comment['active_votes']:

                            if avote['voter'] in trusted_voters and not avote['voter'] == comment_voter:

                                print(avote['voter'] + " also liked it")                        
                                counter = counter + 1
                            
# Wenn genug vertrauenswürdige Leser den Artikel mochten ...

                        if counter > threshold:
                          
# Eine Schleife über alle Konten, die wählen sollen ( derzeit nur @deutschbot )

                            for (k,v) in enumerate(account): 

                                already_voted = False

# Noch eine Schleife über alle 'votes' ...

                                for avote in comment['active_votes']:
                                            
# damit ich nicht versehentlich eine vorherige Wahl überschreibe ...

                                    if (avote['voter'] == v):

                                        already_voted=True                                       

                                if not already_voted == True:

# Jetzt wählt das jeweilige Konto ( endlich ) den Artikel

                                    try:

                                      steem = Steem(keys=pk[k], node="wss://gtg.steem.house:8090")
                                      comment.vote(100, v) 
                                      print("... followed with " + v + " with 100%")

# Falls es Fehler oder Ausnahmen gab beim Wählen, sehe ich das so zu Hause 

                                    except Exception as e:

                                      print("... NOT followed with " + v + " because:")
                                      print(str(e))

Zur besseren Verständlichkeit, habe ich das Ganze auf deutsch kommentiert.
Mit diesem Algorithmus wählt @deutschbot jetzt schon seit einiger Zeit von ganz allein.
Dabei schaut er eigentlich nur einigen Nutzern beim Wählen zu und macht es ihnen nach.
Da es derzeit noch recht wenig auf #deutsch zu wählen gibt, ist @deutschbot selbst auch noch nicht sonderlich wählerisch.
Ein großer Vorteil ist, dass @deutschbot nicht schläft und 24 Stunden am Tag aufpasst.

Sinn und Zweck ist:

  • Artikel auf #deutsch zu unterstützen
  • Programmieren zu lernen und zu üben
  • mehr Spaß und mehr Steem für alle

Spezieller Dank geht an @xeroc, der die Python Bibliothek für Steem geschrieben hat und wartet und an @gtg, dessen node ich benutze, um den anderen beim Wählen zuzusehen.

Weiterhin viel Spaß auf Steemit !

@felixxx

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center