[
Ö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)
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)
Discord kanalımıza beklerim.