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 !
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 !