python ile kendi upvote botumuzu yapalım mı ?

Words
269
Reading
2 min
Listen
Play
9y

[image

Neler öğreneceğim

  • Python ile azda olsa sınıf yapısına bakacağız
  • steem-python kütüphanesinin belirli bir bölümünü öğreneceğiz ( upvote atma )

Gereksinimler

  • python 3.6
  • steem-python

Zorluk

  • Herşeyi anlatacağım için bence kolay

Steem upvote botumuzu yapıyoruz.

Öncelikle projemize dahil etmemiz gereken kütüphaneleri çağıralım.

from steem import Steem
from steem.post import Post

şimdi upvote sınıfımızı yazmaya başlayalım.


class Upvote(Keys):

    def __init__(self):
        self.s = Steem(keys = ["5jskşowdasdas -wdaasdasdasdadd"]) 

burda s değişkeni ne steem-python kütüphanesinde bulunan Steem sınıfımızı atadık
Steem sınıfımıza upvote gerçekleştireceğimiz hesabın ;

wallet > permission > posting key

bölümünde bulunan post ve upvote işlemleri için 5 ile başlayan posting keyi liste olarak koyuyoruz,
buraki self niteliği bizim sınıfımızın bir nesnesi haline getiriyor ve bu nesne init fonksiyonu oldugu için bizim sınıfımız şu şekilde çağrıldıgında Upvote() ilk bu fonksiyon çalışacağı için diğer oluşturacağımız fonksiyonlar içerisinde bu nesneye ulaşabiliyoruz, şimdi yeni bir fonksiyon ile gönderilen içeriği kimler beğenmiş onu bulalım çünkü eğer beğenenler arasında zaten posting keyini aldıgımız hesap varsa tekrar upvote atma işlemleri için uğraşmayalım.

Not: açıklamalar kodların arasında.

    def voters(self, identify): # voters adında bir fonksiyon tanımladık, ve içine iki parametre koyduk bunlardan
        # self olan sınıfın bir fonksiyonu oldugunu ve sıfının nesnelerini kullanmamızı sağlayan self parametresi
        # ikincisi ise postun adresi.
        author,permlink = identify.split("/")[4:] # split ile / işaretinden böldük ve ilk 4 karakterden sonrasını aldık
        # / bu karakterden böldüğümüz için iki nesnelik bir liste oluşur birincisi username ikincisi username bölümünden 
        # sonraki adres bilgisi
        return [i["voter"] for i in self.s.get_active_votes(author.replace("@",""), permlink)]
        # bu bölümde __init__ fonksiyonu içine tanımladığımız s değişkeninde bulunan get_active_votes fonksiyonu ile 
        # username ve geri kalan adresi parametrelere verdik ve cıkan sonuc bize kimlerin upvote attıgını verir
        # bunu bir liste olarak aldık ve return ile fonksiyon dışına attık.

şimdi ise ana işlem olan upvote fonksiyonumuzu yazalım.


 def upvote(self, identify):
        post = Post(post = identify, steemd_instance = self.s)
        voters_list = self.voters(identify)
  • Post sınıfı iki parametre alıyor bunlardan biri identify olan post adresi ve ikinci parametre ilk başta tanımladıgımız s değişkenine attıgımız Steem sınıfı.
  • Daha sonra az önce kodladıgımız bize kimlerin upvote attıgının listesini veren fonksiyonun listesini almak için
    self.voters yazarak ve parametre olarak post adresini attık ve listeyi voters_list adında bir değişkene attık.

Kodun devamı acıklamada.

           username = "hakancelik" # posting keyin hangi kullanıcıya ait oldugunu yazdım.
           weight = 100 # % kaç güçle upvote atacagım bilgisini yazdım 100% güçle upvote atacaktır.
            if username in voters_list: # burda zaten  voters_list listenin içinde varsa upvote atmıştır diyoruz ve 
                yield {"username":username,"status":False,"note":"already voted"} # cıktısını veriyoruz.
            else: # eğer upvote atanlar arasında yok ise
                try: # try except ile hata yakalayarak.
                    post.vote(weight,username) # Post nesnesinin vote fonksiyonunu kullarak ilk parametreye güç yüzdesi
                    # ikinci parametreye kullanıcı adını girerek upvote atmasını sağladık eğer burda hata olmaz ise 
                    yield {"username":username,"status":True, "weight":weight, "note":"voted"} # bu çıktıyı verdik
                except: # eğer hata olursa
                    yield {"username":username,"status":False,"note":"Unknown"} #bu çıktıyı verdik. 

Çıktılar yield ile yapıldıgı için bu bir generator olmus olur ve for döngüsü ile sonucları görebiliriz örneğin denem için şöyle bir kod yazmamız lazım.


url = "https://steemit.com/utopian-io/@hakancelik/discord-and-vote-bot-for-coogger-which-is-steemit-account"

for i in Upvote().upvote(url):
    print(i)

Nasıl katkıda bulunabilirim ?

Discord kanalımıza beklerim.


Discord : https://discord.gg/jkRYBQ8

python ile kendi upvote botumuzu yapalım mı ? | Ecency