
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 ?
- Yorum yaparak
- Paylaşımı resteem yaparak
- upvote atarak
- Hatam varsa yorum bölümünde düzelterek
- Şu iki gönderiyi okuyarak .