The Winfrey Bot 2.0 - BIG UPDATE & GUILD-UPDATE

in #curation-guild8 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 :)

Sort:  

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


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

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

Awesome ! Thanks for the update !👍😉

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.

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 64448.82
ETH 2646.10
USDT 1.00
SBD 2.77