Sorry for being lazy
I like to take news from Gridcoin and support as much as I can. I know that the Gridcoin community is very active on Steemit, generally I take the time to read and vote. But I'm starting to become more and more lazy... So I helped myself with this post and I made a script to vote for myself.
As you may have noticed, this script retrieves all posts associated with Gridcoin, upvote each one, adds it to a text file, and wait a little before voting on another post.
Use the script as you like !
Btw, you'll need Python3 and Piston to run it.
import time
import traceback
from typing import List
from piston import Steem
from pistonapi.exceptions import AlreadyVotedSimilarily
# put your details here
# find it in Wallet/Permissons
account = ""
posting_key = ""
# waiting after voting (wait in seconds),
# trying to maximize the vote weight (and avoid NotEnoughtVoteWeight)
vote_delay = 100
# file with each post identifier
history_file = "upvoted.txt"
# number of the posts fetched in one call : 100 MAX
number_of_posts = 50
# sorting : ["trending", "created", "active", "cashout", "payout", "votes", "children", "hot"]
sorting = "created"
# the given tag to fetch posts
tag = "gridcoin"
def feed():
# if you liked my script, uncomment the next line ;)
# send_a_tip(@chronosamoht)
print("Waiting for new posts in tag %s\n" % tag)
steem = Steem(wif=posting_key, node="wss://this.piston.rocks")
all_posts = steem.get_posts(number_of_posts, sorting, tag)
history = load_history()
for post in all_posts:
print("upvote :", "https://steemit.com/" + post.identifier)
if post.identifier not in history and worker(post):
time.sleep(vote_delay)
# send $2 in SBD
def send_a_tip(author):
steem = Steem(wif=active_key)
steem.transfer(author, 2.0, "SBD", memo="I love your blog. Here is a small gift for you.", account=account)
def load_history() -> List[str]:
with open(history_file) as file:
content = file.readlines()
return [x.strip() for x in content]
def save_upvoted_posts(text):
with open(history_file, "a") as file:
file.write("\n" + text)
def worker(worker_comment):
try:
worker_comment.vote(100, account)
print("====> Upvoted")
save_upvoted_posts(worker_comment.identifier)
return True
except AlreadyVotedSimilarily as e:
save_upvoted_posts(worker_comment.identifier)
print("Upvoting already done...")
return False
except Exception as e:
print("Upvoting failed...")
print("We have probably reached the upvote rate limit.")
print(str(e), type(e))
time.sleep(vote_delay * 2)
return False
if __name__ == "__main__":
while True:
try:
feed()
except (KeyboardInterrupt, SystemExit):
print("Quitting...")
break
except Exception as e:
traceback.print_exc()
print("### Exception Occurred: Restarting...")
That's all folks !