python ile kendi upvote botumuzu yapalım mı ?
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 .
Bence yapalım dostum ücret olarak 0.01 sbd alsın üyelik sistemi olsun yani 4 haftalık için 0.010 sbd alsın kendiside guclensin caps botu gibi güçsüz kalmasin
Dostum zaten yaptık ya, cooggerup botunu ama tabiki bu gönüllü olanlara dayılı bir bot ve teklif usulü bir bot değil, teklif usulü yaparsak oluşum amacımızı aşar ! bu olsun istemeyiz.
Dostum cooperup upvote atmıyor ki. Ayrıca teklif usulü degil 4 haftalık kayıt usulü bir zamanlar bildiğim kadarıyla banjoya öyle yapiyordu
Biz discord kanalında hergün seçilen içeriklere bot ile upvote atmıyormuyuz hatta dün tartısmasını yaptın bunun ?
Şuan başka biri ile konusuyor gibiyim.
oku : https://steemit.com/coogger/@coogger/cooggerup-nedir-ve-discord-kanalimiz
senin paylaşımına da upvote attık unuttunmu ? :
https://busy.org/@queqtra/botlar-ne-kadar-karli-ne-kadar-zararli
Geri takip edermisin kardeşim destek olalım her birbirrimize :)
İçeriğiniz coogger projesi tarafından seçilmiş olup 12 hesap tarafından upvote atılmıştır içeriğinize upvote atan cooggerup botu hakkında ve bu oluşum hakkında detaylı bilgileri aşağıdaki adrese tıklayarak öğrenebilirsiniz.
https://steemit.com/coogger/@coogger/cooggerup-nedir-ve-discord-kanalimiz
Bizimle discord üzerinden iletişime geçebilirsiniz.
Discord : https://discord.gg/jkRYBQ8
Bir dahaki sefere sizi daha hızlı bulabilmemiz için coogger etiketini kullanabilirsiniz.
Seçilen diğer içeriklere buradan ulaşabilirsiniz.
You got a 8.64% upvote from @postpromoter courtesy of @coogger!
Want to promote your posts too? Check out the Steem Bot Tracker website for more info. If you would like to support the development of @postpromoter and the bot tracker please vote for @yabapmatt for witness!
Congratulations! This post has been upvoted from the communal account, @minnowsupport, by hakancelik from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.
If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.