Introducing my partial weight UPVOTING TOOL for minnows with less than 500 SP :) Easy setup!

in #utopian-io6 years ago (edited)

Hello everyone,

I've been getting these partial upvotes and I was just super envious that I can't give those as well...not that my upvote is worth fortune, but you know how it goes - If you can't have something, you just WANT it even more!

I'm well aware that there are all those Esteems and similar apps running on top of Steemit platform, but I just said hmm, for sure I can do this myself :) Why should I share any of my private keys when there's no need to?

Program was written just for my self-use for the next couple of weeks till I reach 500 SP. So please, no hate, it took me 4 hours of work only, there's no design, no exception handling etc..IT IS FULLY FUNCTIONAL THOUGH!

Work time distribution

  • Getting steem-python to work - 1.5h
  • Succesfully sending an upvote from my program - 1.5h
  • Seaching for supereasy python GUI module - 20mins
  • Installing tkinter module and making GUI - 40mins

Set it up yourself!


Requirements:
  • Python 3.6
  • steem-python module
  • tkinter module

After setting you your environment, you can either clone this Github repo or copy-paste following code. If you don't know how to copy-paste effectively, my post about keyboard shortcuts could be helpful :D

import sys
from tkinter import *
from steem import Steem
from steem.post import Post
from steem.account import Account

def vote():
    #get textbox values
    url = urlVar.get()
    weight = int(weightVar.get())
    # vote for post
    post = Post(url)
    steem.vote('@{}/{}'.format(post.author, post.permlink), weight, me)
    #reset textbox values
    urlVar.set("")
    weightVar.set("")
    return
if __name__ == '__main__':
    #add your steemit credentials
    me = "ENTER_YOUR_USERNAME"
    myPrivatePostingKey = "ENTER_YOUR_PRIVATE_POSTING_KEY"
    #create steem-python class instances
    s = Steem(keys=[myPrivatePostingKey])
    acc = Account(me, steemd_instance=s)
    steem = Steem(wif=myPrivatePostingKey)
    #do tkinter stuff
    voterGui = Tk()
    urlVar = StringVar()
    weightVar = StringVar()
    voterGui.geometry('450x150+500+300')
    voterGui.title('Minnow weight voter')
    mlabel = Label(voterGui, text="Enter post URL and upvote weight").pack()
    urlEntry = Entry(voterGui, textvariable=urlVar).pack()
    weightEntry = Entry(voterGui, textvariable=weightVar).pack()
    voteButton = Button(voterGui, text="Vote!", command=vote, fg="red").pack()
    voterGui.mainloop()

Roadmap

This project has just one main feature which is to allow Steemians with less than 500 SP to upvote with partial voting power from their own computer and without sharing their private keys with 3rd parties. This has been achieved and because it's just an evening for-fun project, I don't plan on continuing with active development.

Possible enhancements could for sure be:
  • implementation of exception handling
  • reading login credentials from config file (rather than putting it straight into code)
  • design :)

Disclaimer: This repo is not ready for any "production" use, it's just a temporary solution (and for-fun evening project) till I reach 500 SP. Use it on your own risk!

Thanks for reading!
Martin



Posted on Utopian.io - Rewarding Open Source Contributors


You can find my latest posts here:

  1. [Crypto data science #1] Programmatical analysis of 200k bitcoin tweets BEFORE and AFTER correction
  2. [My 3 months in Pakistan #0] Introduction + 10 PICS
  3. Keyboard shortcuts CHEATSHEET - my favorite ones & one PRO combo
  4. Learn to be comfortable in UNCOMFORTABLE...teaching dance workshop with ZERO experience
  5. DROPSHIPPING mania. How people passively earn thousands of $$$ and why I find it DISGUSTING...!!
  6. I prepared THREE Slovak national dishes - did my VEGETARIAN Spanish and English friends like it?

Mother tongue version

Ahojte!

uz davnejsie som si vsimol, ze od vela uzivatelov dostavam ciastocne upvoty. Samozrejme som to hned zo zvedavosti chcel vyskusat, no velmi rychlo som zistil, ze tato feature mi bude umoznena az po dosiahnut 500 SP. No a ako to v zivote byva - ked nieco nemozeme mat, chceme to este viac!

Som si velmi dobre vedomy, ze som si dal asi namahu naviac, kedze existuju vsetky mozne Esteems a ine appky, ktore by mi tuto funkcionality umoznili, no povedal som si nasrat, ved to urcite zvladnem aj sam :) Preco by som mal zdielat hocjake privatne kluce s tretou stranou, ked to nie je nevyhnutne?

Tento programik je napisany na kolene a len pre moje vlastne pouzitie, kym neskonci korekcia (ano, aj po dnesku som stale bearish) a nekupim si nejaky STEEM navyse. Takze neodsudzovat a nehejtovat za design, chybajuce exception handlings atd atd...

Praca

  • Presvedcenie steem-python-u aby fungoval - 1.5h
  • Jadro projektu (poslanie weighted upvotu na definovu URL)- 1.5h
  • Googlenie jednoducheho python GUI modulu - 20mins
  • Instalacia tkinter-u a spravene "uzivatelskeho rozhrania" (:D co vravi UX profik @pipiczech ?) - 40mins

Rozbehnite si to doma!


Potrebne:
  • Python 3.6
  • steem-python modul
  • tkinter modul

Po nainstalovani predchadzajucich troch bodov, si mozete bud naklonovat toto Github repo alebo proste copy-pastnut nasledujuci kod. Pokial neviete, ako efektivne copy-pastovat, odporucam Vam moj vcerajsi post o klavesovych skratkach :D

import sys
from tkinter import *
from steem import Steem
from steem.post import Post
from steem.account import Account

def vote():
    #get textbox values
    url = urlVar.get()
    weight = int(weightVar.get())
    # vote for post
    post = Post(url)
    steem.vote('@{}/{}'.format(post.author, post.permlink), weight, me)
    #reset textbox values
    urlVar.set("")
    weightVar.set("")
    return
if __name__ == '__main__':
    #add your steemit credentials
    me = "ENTER_YOUR_USERNAME"
    myPrivatePostingKey = "ENTER_YOUR_PRIVATE_POSTING_KEY"
    #create steem-python class instances
    s = Steem(keys=[myPrivatePostingKey])
    acc = Account(me, steemd_instance=s)
    steem = Steem(wif=myPrivatePostingKey)
    #do tkinter stuff
    voterGui = Tk()
    urlVar = StringVar()
    weightVar = StringVar()
    voterGui.geometry('450x150+500+300')
    voterGui.title('Minnow weight voter')
    mlabel = Label(voterGui, text="Enter post URL and upvote weight").pack()
    urlEntry = Entry(voterGui, textvariable=urlVar).pack()
    weightEntry = Entry(voterGui, textvariable=weightVar).pack()
    voteButton = Button(voterGui, text="Vote!", command=vote, fg="red").pack()
    voterGui.mainloop()

Varovanie: Tento projektik vobec nie je pripraveny na pouzitie v produkcii. Je robeny na kolene a len pre moje osobne vyuzite kym dosiahnem 500 SP. Jeho pouzitie je na vlastne riziko!

Diks za precitanie!
Martin




Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Počuj, klobuk dole, že si si niečo také pre mňa absolútne wow naprogramoval, ale stačilo by ti používat busy a možeš rozdávať hlasy akejkoľvek hodnoty aj bez 500 SP, navyše ti za post dá hlas a čo mne najviac vyhovuje možeš si písať koncepty.. ale chápem ako píšeš, že nechceš podporovať tretie strany..

OMG busy uz mam a nevedel som ze to tam clovek vie nastavit :D uz vidim..no, tak som sa aspon zahral :D s tymto viem aspon zadat weight ku kazdemu postu, v tom busy sa mi to javi, ze by som musel ist vdy do settings a zmenit tu default hodnotu :)

A nevedel som ani, ze busy rozdava hlas ked postnes cez nich :) Tie drafts som si tam uz vsimol, no zatial nevyuzil..Diks!

Aj nabudúce :) Pekný víkend:)

Liked, subscribed and stalked.. I mean followed. Yes that's exactly what I meant evil laugh

Hello matkodurko!

Congratulations! This post has been randomly Resteemed! For a chance to get more of your content resteemed join the Steem Engine Team

Do or do not. There is no try.

Ještě to dolaď a @godfish ti s tím pomůže na utopian.io

Tady pomáhat nemusím, Matko to má anglicky a na první pohled i správně zveřejněné. Teď záleží na posouzení od moderátorů ;)

Nice. Might try this. If only it didn't use TKInter ... though.,

Whats wrong with tkinter? It was liteterally the first YT tutorial on GUIs in python I've found..it might be that its shitty module, I cant really say anything about it :)

Nothing, per se. except that it's completely inaccessible for blind and visually impaired members of the population relying upon text to speech and braille output to interact with the computer.

Noo ja popravde neviem moc, co to ten utopian-io je, kto su moderatori a co sa stane, ked to posudia pozitivne :D Len som si vsimol, ze tam ludia postuju dev-related veci, tak som sa logol a postol podla development guidelines co mali uvedene.

Na mojej homemade scrum tabulke mam dokonca sticker "What is utopian-io", ktory som chcel vyriesit predtym, nez to vobec postnem....ale nejak ma vcera ovladla vasen a ked to zacalo fachat, chcel som to uz cele dokoncit :D

DSC_0277.JPG

@xlisto v najblizsej dobe na tom asi pracovat nebudem, kedze mi hori diplomka :D a neviem, ucel to uz vpodstate splnilo...ked tak by som sa pustil do este ineho projektu, ktory mam v hlave...ten by eventualne mohol mat zmysel aj pre sirsiu steemit komunitu a zaujimat aj utopian-io (javia sa ako nejaky steemit IT open source spolok)

V pohodě, diplomka má přednost.

Awesome post. The only way to do great work is to love what you do. You have achieved that.

Hi, it is nice to see more people joining Utopian and that you try to present what you created. Unfortunately, we can't approve and reward your blog post.

  • All contributions post can be written in English only. Adding other languages makes the post cluttered and the information redundant.
  • All projects have to have friendly license and readme file with the description. One-time helper scripts are not what we look for and support.
  • Blog posts are expected to be of high quality, which means with the formal writing style, coherent formatting and detailed content.
  • You are welcome to present other of your work if it is about a project that you plan to continue with the development.

[utopian-moderator]

Hah it's all good :) I'm still not sure what this utopian thing is all about, I've seen many tech/dev posts there so I've just used your platform, no big deal....it's not really anything special either, just a tiny script :) Maybe the next one I'll come up with will be more according to you rules

Excellent work on this, I will be referencing this again. Thanks for posting.

Koukám, že Gina nějak nefunguje, takže tenhle mention mi nějak unikl :D

Chápu to tak, že nyní je aplikace jen pro tvou potřebu, takže na UI asi úplně nezáleží, když jsi jeho autor. Kdyby to ale byl nějaký veřejný bot, tak bych přesunula popisky rovnou k input polím. A Vote bych určitě nedala červeně, je to totiž typická barva pro nějaký error. To už je ale jen taková ptákovina :D

Ale jinak dobrá práce! Já kdysi koukala na to, jak se dělá bot, ale byla jsem líná to naprogramovat :D

Haha jj ved to bola len sranda, ze som ta tam otagoval :D ved to vyzera otrasne :) ale tak funguje...Tie labels by boli isto lepsie tak jako vravis, len som nevedel ako im dat X,Y suradnice :D tak som to nechal hentak, centrovane na stred pod sebou ako je default....

Ale to s tou farbou je good point! Tu by som asi nechal cervenu aj keby som sa snazil spravit to pekne :)

Coin Marketplace

STEEM 0.18
TRX 0.13
JST 0.029
BTC 63705.19
ETH 3145.87
USDT 1.00
SBD 2.55