UPDATED WINFREY UPVOTE-BOT will vote for EVERYONE who post on STEEMIT with a 2% upvote - except Posts flagged by @cheetah or @steemcleaners

in #upvote-bot8 years ago

This Piston/Python-Bot will upvote EVERYONE who post on Steemit with a 2% upvote except if the post is flagged by @cheetah or @steemcleaners to avoid voting for scam, spam & plagiarism (thank you @anyx for providing the code-snippet and to @inertia for making it work)

The 3 Simple Tasks You Must Do First!

save the following code as: bot.py

# This Piston/Python-Bot will vote for everyone who post except those flagged by
# @cheetah or @steemcleaners. By Default the Upvote is set at 2%
# Created by: @furion, @contentjunkie, @anyx, @inertia, @fyrstikken
# Make sure you have the latest version of Python and Piston installed
# See Original Post for details and step by step process.
# For help come on http://steemspeak.com or http://steemit.chat

from piston.steem import Steem
from piston.steem import BroadcastingError
import threading
import time
import random
import csv

# my favorite blogs on steemit
top_writers = []

# add my favorites 
my_favorites = []

# Skiplist functionality has not been added yet, this will be your personal blacklist
with open('skiplist.txt', mode='r') as infile:
    reader = csv.reader(infile)
    for rows in reader:
        v = rows[0]
        top_writers.append(v)
# Add your Account, Posting key for voting and/or Active Key for tipping 
my_subscriptions = top_writers + my_favorites
account = ["your-account-name"]
posting_key = ["your-private-posting-key"]
active_key = []
# This is the range (in seconds) in which your bot will cast a vote
vote_delay = random.randrange(1200,1800)
 
upvote_history = []
 
def feed():
# Starting The Bot
    print("Upvote Bot Started - Waiting for New Posts to Upvote!")
    steem = Steem(wif=posting_key[0])
    for comment in steem.stream_comments():
 
        if True: 
# Just making sure we vote for the post and not a comment.
            if comment.depth == 0:
 
# check if we already upvoted this. Sometimes the feed will give duplicates.
                if comment.identifier in upvote_history:
                    continue
 
                print("New post by @%s %s" % (comment.author, url_builder(comment)))
                workerThread = threading.Thread(name=comment.identifier, target=worker, args=(comment,))
                workerThread.start()
 
# Tipping Function send $0.001 in STEEM
def send_a_tip(author):
    steem = Steem(wif=active_key)
    steem.transfer(author, 0.001, "STEEM", memo="Keep Blogging", account=account)
 
 
def url_builder(comment):
    return "https://steemit.com/%s/%s" % (comment.category, comment.identifier)
 
def worker(worker_comment):
     time.sleep(vote_delay)
     try:
       for (k,v) in enumerate(account):
         worker_steem = Steem(wif=posting_key[k])
         upvote_comment = worker_steem.get_content(worker_comment.identifier)
# Checking if Post is flagged for Plagarism & Spam
         names = ['steemcleaners', 'cheetah']
         for avote in upvote_comment['active_votes']:
           if (avote['voter'] in names and avote['percent'] < 0):
            print("====> Upvote Skipped - Post Flagged by Cheetah or Steemcleaners")
            return False
# If the post has not been flagged by Cheetah or Steemcleaners, it will now upvote the post
# with a 2 % upvote 
         upvote_comment.vote(2, v)
# Upvote has now been done and it will now print a message to your screen:
         print("====> Post Upvoted Successfully!")
         upvote_history.append(upvote_comment.identifier)
     except BroadcastingError as e:
       print("Upvoting failed...")
       print("We have probably already upvoted this post before the author edited it.")
       print(str(e))
 
       if upvote_comment.author in my_favorites:
         send_a_tip(upvote_comment.author)
         print("====> Sent $0.001 STEEM to @%s" % upvote_comment.author)
 
 
if __name__ == "__main__":
    while True:
        try:
            feed()
        except (KeyboardInterrupt, SystemExit):
            print("Quitting...")
            break
        except Exception as e:
            traceback.print_exc()
            print("### Exception Occurred: Restarting...")

# If you want to add more complexity to the Bot, feel free to do so and share it with
# The Steemit community on your own Blog.


create an empty text file called: skiplist.txt (does not currently have a purpose)

Alright - You are now all set and ready to vote for EVERYONE

When I first arrived to Steemit, everyone was upvoting me - and since then - less and less votes are being cast everyday by everyone to everyone - It is a downward spiral and a vicious circle of doom if we do not change the culture around here and bring people up, new people and returning people - it is very important for the growth of this platform that we are liberal with our votes in a big broad way - voluntarily.

This is how the Voting-Picture looks like on an average day

What you see here is the top 30 list of upvoters ranked after how many posts they have voted for. Now, I want this list to be populated like never seen before, because look at that - the bottom of this list is only 90 votes, and it get much worse if we go down the list, which we will do now:

So as you can see - only a few people is voting and they are for the most part only voting for a few people, this can be more optimised by actively using this bot to bring votes out to content-creators without voting for scam and spam and plagiarism. And is something even 3rd party voting-sites should implement so that we get more votes around every day, because it gets much worse then this if we go further down the list:

You see how meaningless it starting to become when we go down the rabbit-hole in status quo, anyone want this to change? then be the change - start with yourself and make sure that you are on the top of the list, it will cost you nothing and gain you something and new and existing users, as well as yourself will benefit from this voluntarily small but effective generosity, because it only get worse if we keep looking at the list:

So basically we have 100 people that votes and about 600 posts per day and according to SteemD: 125,535 registered accounts... Now what is wrong with that picture? Let me sum it up again:

125,535 Registered accounts
    600 Posts per day (approx)
    100 People voting for almost nobody

If we change the culture, the platform can grow, and there is a good chance that everything will start thriving

Enjoy the bot, and if you have any requests you can reach us all on http://steemspeak.com
and http://steemit.chat

Sort:  

“You think Yoda stops teaching, just because his student does not want to hear? A teacher Yoda is. Yoda teaches like drunkards drink, like killers kill." – Yoda

I made some minor improvements changes to this, as I'm learning Python.
Will blog about it later.

That is awesome!!

That is just what I suggested for the steemit account.

How did I get excluded from your list?
Don't tell me I fall between 90 and 95,...

no, you are not on the list:

Is that because my sp weight is too small?
I certainly voted enough to make the list.

I see could that be why I didn't make the list low sp weight!?

Looks like, though we do count in the math, we don't count on the ui.

Maybe you should not vote on people who have rep < 25 as well.

that is not the purpose of this experiment.
If someone has a low reputation that is in the past. Does not mean that is the future. When I first came to steemit I had ZERO reputation, and if it was not for all the UPVOTES, I would not have stayed.

Would you?

The upvotes and power gaining keep me on steemit.

upvoting is sexy ;)

Well if its not it should be, because we really need people voting it makes no sense as it helps everybody not just the person getting the vote.

@fyrstikken, this bot looks to kick some real ass. I wish this bot the very best and maybe one day I will have him working for me. Thank you for all the bot votes friend. Steem On!

It has been running non stop for a couple of days now to test it and see that it actually works, yeah I hope to see this kind of logic implemented in as many bots and upvote-service sites as possible.

Without the Ebb and the Flo, all we create is a desolated place. So giving and receiving votes is extremely important platform-wide. I hope something good comes out of this.

I have taken a Steemit break this week, so I am guessing that is why my votes are not appearing, I have been about half as active the last few days and it is partly because I work hard on my posts, hardly earning any votes, views, comments or payout 9/10 days -

-- and is discouraging me the last few weeks - like you said in your comments here and why you are doing this

Upvoted and resteemed. I love your dedication to Steemit.

thank you, for better and for worse, right? :)

Where did you pull the voting numbers from?

I took them from: https://steemdb.com/labs/rshares by @jesta and ranked it differently in a google spreadsheet.

This is an interesting idea @fyrstikken. Keep up the work, I appreciate your efforts to help the general community.

tnx, I hope we will see more enthusiasm and growth and cultural change, it has to come from us individually because we want to get to the next level with all onboard.

Can we follow the bot as leader in Streemian if we know the account it is on?

I have to check out @streemian but maybe you can ask them to implement the same logic in their system so their users can have that option. in addition to the other streems (2% upvotes for everybody keeps my voting-power at 100% most of the time)

Good work, keep it coming!!

Great initiative, @fyrstikken!

Oh my lord is this for reals!? I didn't think it was this bad why the heck is nobody voting. Haha I am so gutted these were taken when I was writing content as I normally do votes daily. I guess %2 is better then no votes.

This is really cool! I use Steem Voter for now as I haven't been able to find the time to learn how to code bots myself. I'd love to give it a go, though, and this is one of the clearer tutorials I've seen on the subject, so thanks very much for sharing your knowledge with us! You've got yourself a new follower. :-)

How did you generate that list of upvoters? I'd like to see where I rank on it. I do try to spread my votes around as much as possible via Steam Voter, but I try to keep my voting power around 80-90% to maximize the benefit of my votes. Would be useful to know if my vote count has been really low lately so I can tweak the Steam Voter settings.

EDIT: I think I vote on something like 20-30 posts per day on average, so was somewhat surprised not to see myself on your list.

we have 100 people that votes

I'm not sure you are right... I'm voting every day about 40 times. But:

  • I just have a small SP and my vote is nothing for those posts
  • I'm not in your list because my voting reward is small (because I have a small SP)

If I will vote more with less voting power it still gives nothing to me and other users.

And there are many people like me.

So I want to make an update to your post. It is important that the owners of large SP have done more votes. So they get more rewards, increase the rewards to other users, create interest for new users.

Yes, I totally agree.

I vote roughly 40x/ day every day, pretty much, sometimes more.... sometimes less but certainly not much less on average than that. I have voted so many times at 100% most days my SP drops way way down LOL

Like you, I try to vote lots, help decent content, resteem a lot though I have dialled it way back and try to always look for newer people where my tiny amount of SP will help them a bit, with my higher rep than them

I like how you are always trying to look out for us as a whole, not just a few top writers here being pushed by a certain few people.

Can anyone offer me a little more detailed explanation for how to get this bot to work?

For:

The 3 Simple Tasks You Must Do First!
Install GIT from This Website
Install Python 3+ from This Website
Install Piston from This Website

The first two are straightforward, but I'm not sure how to install Piston, as the site that I'm linked to for it only gives me what appears to be code to enter into ??? (into what?)

Also,

save the following code as: bot.py

Save it as what (notepad file?) and save it where (within one of the command prompts of the previous installs?)?

Lastly,

create an empty text file called: skiplist.txt (does not currently have a purpose)

Where to save it?

I'm sorry to say, I've never dealt a second with programming, so I'm completely lost, here. Any help on this would be greatly appreciated. I'd be willing to throw a $5 tip your way, if you can manage to walk my thick scull ( ;) ) through it. Thanks in advance.

well, there has already been improvements done to this bot, you can download it from : https://github.com/TheBatchman/steemit-autovoter

It votes 2% for everyone by default and 100% upvote to your favorites (can be adjusted).

Keep it all in the same directory.

If you are on linux.

go here to look at the command line install options.

https://git-scm.com/download/linux