The Winfrey Bot 2.0 - BIG UPDATE & GUILD-UPDATE

in curation-guild •  8 years ago 

This is the underlying functionality that is used. It now has an additional new flag-authority @fubar-bdhr along with no votes for negative reputation accounts. It will also not upvote anything that @steemcleaners or @cheetah upvotes because an upvote from @cheetah now a days is really just another way of flagging accounts without the person caught plagiarizing knowing about it. Also, @blacklist is being updated and is not active right now as it undergoes rules-changes. There is also no longer any 40 STEEM removal fee if you should be flagged by that account.

And last but not least - we have upgraded our Guild-Server with 16GB of RAM to be able to handle all the accounts that participate in the guild at the moment. Keep Joining, it is a good guild!

JOIN THE WINFREY GUILD HERE - IF YOU CANNOT RUN YOUR OWN BOT


#############################################################################
#                             THE WINFREY BOT                               #
# Created by: @furion, @contentjunkie, @anyx, @inertia, @fyrstikken, @pfunk #
#                                                                           #
# Want to run the bot but no way to do it? Join http://guild.steemspeak.com #
#############################################################################

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 = ["YOURACCOUNTNAME"]
posting_key = ["YOUR PRIVATE POSTING KEY HERE"]
active_key = []
vote_delay = random.randrange(1800,3600)
 
upvote_history = []
 
def feed():
###############################################################################
#                         Starting The Bot                                    #
###############################################################################
    print("Upvote Bot Started - Waiting for New Posts to Upvote!")
    steem = Steem(node='wss://node.steem.ws', 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(node='wss://node.steem.ws', 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(node='wss://node.steem.ws', wif=posting_key[k])
         upvote_comment = worker_steem.get_content(worker_comment.identifier)
###############################################################################
#          Checking if Post is flagged for Plagarism & Spam                   #
###############################################################################
         names = ['blacklist', 'fubar-bdhr']
         if ( '-' in str(upvote_comment['author_reputation']) ):
          print("@%s %s ====> Upvote Skipped - Author rep too low")
          return False
         for avote in upvote_comment['active_votes']:
           if (avote['voter'] in names and avote['percent'] < 0):
            print("@%s %s ====> Upvote Skipped - Flagged by blacklist or Fubar-bdhr")
            return False
# Checking if we already voted for this post:
         names = ['YOURACCOUNTNAME']
         for avote in upvote_comment['active_votes']:
           if (avote['voter'] in names):
            print("@%s %s ====> Post Upvoted already")
            return False
# Checking if there is markings from Cheetah or Steemcleaners:
         names = ['cheetah', 'steemcleaners']
         for avote in upvote_comment['active_votes']:
           if (avote['voter'] in names):
            print("@%s %s ====> Post Marked by SteemCleaners or Cheetah")
            return False

#   If Everything is OK - We now go ahead and upvote this post with an upvote  #
################################################################################ 
#                          UPVOTING ZE POST                                    #
################################################################################
         upvote_comment.vote(1, v)
#                                                                              #
################################################################################
# Upvote has now been done and it will now print a message to your screen:     #
################################################################################
         print("@%s %s ====> UPVOTED")
         upvote_history.append(upvote_comment.identifier)
     except BroadcastingError as e:
       print("@%s %s =====> ERROR - Upvoting failed...")
       print("We have probably already upvoted this post before the author edited it.")
       print(str(e))
################################################################################
#               TIPPING AUTHORS YOU REALLY LIKE REQUIRES ACTIVE KEY            #
################################################################################
       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.

Want to optimize or make this bot even better and smarter? Take the code and do with it what you want and post your update on your own steemit-account. This bot has been made by: @furion, @contentjunkie, @anyx, @inertia, @fyrstikken, @thebatchman & @pfunk. It is designed to upvote most people and cause as little damage as possible.

JOIN THE WINFREY GUILD HERE - IF YOU CANNOT RUN YOUR OWN BOT

One day I hope @ned and @dan / @dantheman find some time to put this kind of functionality directly on @steemit so that it is possible to do tasks like these without having to use a third party server or application.


I am on @steemspeak every day - Join me there for a talk :)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

As I said --

I hope you don't have 100 accounts all voting 1% on each post. It's spammy, bloats the blockchain with dust, and increases reindex time. Why not just vote 100% with one account per post and rotate accounts?

Well, 100% on rotation could be a way to do it. Let us find a space and talk about these things and see what great ideas we can cook together. The #1 Important mission here is to grow the userbase and keep people blogging. We need to find great ways to accomplish that. I am all ears.

3 people voting 33% or 4 people voting 25% or 5 people voting 20% would be Much Much better.
Until I spent lots of time searching out what this 1% voting was about, I felt a little insulted that so many valued my work that little.
I am used to a couple of dolphins/whales voting that way as it makes sense.
This has actually prevented me from some full votes as past regular readers/voters are sticking with the now 1% vote.
Please rethink the way this is being done as people are really really confused and slightly annoyed.

You the real steemit MVP..Nice Bot Creation @fyrstikken!!!

Thank you, it has been good teamwork and the experiment has just started :)

Hang on @fyrstikken - I am confused a bit - apart from the 1% upvotes that might be to be discussed what sense this has - I know you want to show tons of people appreciation which is a great idea - more on that separately. I am a bit concerned (if it matters at all by a 1% up vote coming from a non-whale) - to exclude posts upvoted by @cheetah - think there is a difference if someone steals content or if someone is posting content from their own blog as an example. These posts also get a @cheetah up vote / comment when they link their original blog to the post. Just saying........

It is an experiment, I personally want every account on steemit to start voting hard and brutally. We need more engagement, automatic and manually.


Obviously it has had a positive effect on the platform when it comes to more posts by more authors. That is a very good sign.

source: https://steemdata.com/charts

Thanks @fyrstikken - I do support all initiatives that generate more interaction and engagement - if that is the result, perfect! Just to feedback what somer fellow steemians say - many users receiving 1% up vote feel bad or not appreciated - however if it drives more engagement and new users that might be a good idea, let me know the progress of this experiment. I am too new here to judge. I only hope the entire platform and every user that provide quality content will succeed. Will follow you now.

Well, a 1% vote from me is like a 100% upvote from 27 people with 1000 SteemPower in their wallet. But maybe @dan / @dantheman can add "secret %" so that the receivers of our votes do not know how many % we upvote them with? Or the growing community can learn to live with and start liking upvotes in all kinds of %.

Think your intention is good @fyrstikken as you want to give all user the appreciation of a vote - the secret % might help but maybe the new updates should include a different of value of the upvotes - sure your 1% is worth more financially as from others. I just think the 1% is just a slap into the face of some users (no matter if it comes from a newbies or a whale, 1% shows i appreciate you but not giving you a lot of my attention) as they do not benefit from most votes at all (when users like me do it with just at 1k SP) - the voters might benefit a little bit maybe from increase of following but I am concerned here still - just saying what i think - but as said your overall thinking to help the community is great place to start!

I'm in the category of someone who posts from his other blog. This results in an automatic @cheetah upvote for nearly all of my posts. Is there a way to exempt certain people from this category?

I do not know but it would be good if possible @driptorchpress

well, if @cheetah upvotes you then my guild will not upvote you. @anyx needs to figure out if @cheetah is going to be a police-bot or a cheerleader-bot, it cannot be both. I might have to drop @cheetah from the equation if he cannot solve this identity-problem.

I am here to serve the users with upvotes, new and old.

Just a glimpse of how each account is handled on server-side. All Python-Scripts are now baked into these single apps to secure each member of the guild even better then before.





They do however depend on Python3+Piston to work, hopefully someone with more skills create a QT-Version or Electrum-Version or any other stand-alone-app that comes with everything needed and can function on individual machines for people with zero tech-skills to use in order to de-centralize the guild.

Until then - I realy enjoy fiddle with these things and the feedback from the community has been extraordinary.

Your post is very very good.
The best @fyrstikken

Awesome ! Thanks for the update !👍😉

Always a pleasure :)

Congratulations dear friend @fyrstikken for you and your team for this tool, success !!!!!!!!!!

As a "minnow" I am not sure how much my participation actually counts for but I'll pass along that I have seen a noticeable uptick in followers... so that's a positive.

Well, the more SteemPower you have, the better rewards you get for curation but all votes matters. Specially when they come from active bloggers like yourself.

I love it. I love the open source aspect of the project. It's good to see so many knowledgeable dev coming together or at least their work.

I don't love it, because now I get 1% votes from people that used to vote me at 100% much of the time.

I get it. You should try to talk with those who use to vote for you at 100% and see if they'd be willing to re-add you on their list or do it manually. Thank you for your valuable comment. I'm glad that you let us know. Also I'll contact you in private to see if I can help otherwise.


YOU GET AN UPVOTE, AND YOU GET AN UPVOTE YOU GET AN UPVOTE, AND YOU GET AN UPVOTE YOU GET AN UPVOTE, AND YOU GET AN UPVOTE YOU GET AN UPVOTE, YOU ALL GET AN UPVOTE !!!!

I don't understand what this post is all about but > what the heck < it looks positively
Steemed Powered Positive.

You are soooooooooooooooooooooooo AwEsOmE

I also don't understand what this product is all about !!!!!

Can you set the winfrey bot to vote at 30 minutes, or more.

I'm afraid that many early low weight votes are preventing higher sp accounts from voting posts because they lose out on curation awards by being in line behind the bots.

How is the bot's curation awards?

It is already set to vote between 30 minutes and 1 hour by default.

You can see curation-rewards here: https://steemdb.com/@freebornangel/curation
The more SteemPower you have, the greater is your rewards.

Thanks for the link.

My request was in light of the fact that early voting by small sp accounts diminishes the return on voting a particular post for later voting high sp accounts.

As a 1% vote earns little in curation, I'd just as soon see it after the higher sp accounts have had a chance to get in on the curation timing bonus.
The bots that vote with maximizing curation awards would skip my post if the little votes have made voting it less rewarding than voting one that doesn't have them.

Vote at 4 or 5 hours so that people have a chance to see my post first and vote on it.
People that I used to get full votes from now only vote me at 1%.
I'ld rather have their 100% vote every hundredth post, than have 100 votes at 1%.
Or at least let your guild member know that they can unvote and upvote again if it's a post that they actually appreciate.

Can you change it to cheetah flags, instead of comments, as cheetah comments a lot of op content.
https://steemit.com/steemit/@freebornangel/why-i-started-downvoting-the-cheetah-bot

I will consider it. I need to know what @anyx wants to do with @cheetah. I just want to upvote problem-free accounts and that is about it.

Ok, thanks.
Here is the post that caused me to ask.
https://steemit.com/steemit/@freebornangel/why-i-started-downvoting-the-cheetah-bot

I still need to make three accounts for my friends, but I still haven't found anybody to help me with the code.
Do you have some accounts for sale?

I only have @fyrstikken, @fyrst-witness, @stakepool and @steemspeak but if you check out @someguy123 he sell accounts or create new accounts for money IIRC. Anonsteem.

Ok, thanks,....