python ile kendi upvote botumuzu yapalım mı ?

in #coogger7 years ago

[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

Sort:  

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

cooggerup nedir ?
Aslında sadece basit bir upvote botu oluyor kendileri tabiki şuana kadar yapmakta olduğum telegram botu ve steemitapp'ın bütün özellikleri bu bot'da da mevcut hızlı bir şekilde o uygulamalar ile ne yapıyorsanız yine bununlada aynı işleri yapabileceksiniz ama bir fark var oda bu bot aynı zamanda upvote da yapıyor tabiki şuan için bu olay benim kontrolümde.Cooggerup botunda şuan için gönüllü 5 hesap bulunmakta umarım güzel içeriklere emek vererek hazırlanan içeriklere destek vermek amacı ile sizlerde 5 gönüllü arkadaşımız gibi bu olaya katılarak destek verebilir veya alabilirsiniz.

Geri takip edermisin kardeşim destek olalım her birbirrimize :)


Projemize ve kaliteli içeriklere destek veren , içeriğinize oylama yapılırken kullanılan hesaplar :

@coogger@hakancelik@berksahin@ibrahimsmngl
@pars11@sedatcelik@bkatipoglu1@lutfibasdas
@baristutakli@karamars@steemit-turkey@saiddemir

Sende bu oluşumun bir parçası olabilir, destek verebilir veya alabilirsin; discord kanalımıza bekleriz.

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.