4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

Upvote script by tag

http://i.imgur.com/Z7mIqIs.png

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 !

Feel free to follow !

grid

11 upvotes $0.29

Replies (4)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: