Takip ettiğim kullanıcılar en son ne zaman içerik üretmiş ?steemCreated with Sketch.

in #tr6 years ago (edited)


thank you @steinhammer for the graphic


Herkese merhaba arkadaşlar dün ingilizce olarak paylaştığım How many days ago did my followers post the last content ? yazıyı türkçe olarakta anlatmak istedim, bundan sonra ingilizce bir yazı yazarsam aynı içeriğin türkçesinide yazma kararı aldım bu karar alırken resimdeki gibi bir çok yol olmasada bir kaç sebebi var.


  • İçeriğim yazılım,öğretici içerik veya proje ile ilgili ise utopian-io 'dan paylaşıyorum onlar projelerim için bana destek olmuş oluyorlar fakat onların formatı gereki içeriklerin hazırlanışında belirli kurallar var samimi içerik hazırlanamıyor gayet resmi ve ingilizce yazmak zorunda kalıyoruz, aynı içeriği türkçe yazarak bunların önüne geçme isteğim.

  • Beni gerçekten takip eden arkadaşlar var mı bilmiyorum bi nebze olsun bunu görmek adına hem ingilizce hem türkçe paylaşırsam beni takip eden ama içeriklerimi anlamayan kişilere daha anlaşılır olmak.

  • Çok fazla içerik üretemediğim için iki dil ile daha çok kişiye erişebileceğim ve daha çok çevre edinebileceğim.

  • Çok çevre daha çok kazanç getireceği için.

  • Öğretici içerik hazırladığımda bunlardan türklerin'de yararlanmasını istediğim için.

Bu kadar konuşma yeterli artık içeriğimizin asıl konusuna gelelim.

The end

Steem-python'un github adresi ?

https://github.com/steemit/steem-python

Steem-python'un orjinal dökümanı.

Kütüphane hakkında daha fazla bilgi isteyenler bakabilir.
http://steem.readthedocs.io/en/latest/

Bu içerik boyunca neler öğreneceğim ?

  • Python programlama dili ile steem-python kütüphanesini kullanarak ufak bir uygulama yapmayı.
  • Steem-python kütüphanesinde bulunan Blog,Account ve Steem sınıflarının ufak bir bölümünu göreceğiz.
  • Python fonksiyon yapısını.

Gereksinimler

  • Python 3.6
  • steem-python kütüphanesi / pip paket yöneticisini kullanarak indirebilirsiniz.

Zorluk ?

  • Kolay

Başlayalım.

Adım adım anlatacağım.

  • Bilindiği üzere python dosya formatı .py dir bu yüzden ufak script'imizi yazacağımız bir main.py adında bir dosya oluşturuyoruz.
  • Daha sonra ufak programımızda kullanacağımız kütüphaneleri dahil ediyoruz ve steem node'mizi ayarlıyoruz

Bazı açıklamaları kodların içine serpiştirdim.

from steem import Steem # steem kütüphanemizdeki Steem sınıfımızı çağırdık
from steem.blog import Blog # steem kütüphanemizdeki blog modulümüzün/dosyamızın içindeki Blog sınıfını çağırdık
from steem.account import Account # steem kütüphanesindeki account dosyamızda bulunan Account sınıfmızı çağırdık.

STEEM = Steem(nodes=['https://api.steemit.com'])

Python dilinde şart olmasada bazı uyulan yazım kurallar vardır bunlara pep8 ismi verilmiştir, örneğin burada sınıf isimlerinin ilk harfinin büyük harf kullanarak yazılması pep8 kuralıdır.
STEEM = Steem(nodes=['https://api.steemit.com']) bu kısımda Steem sınıfını kullanarak nodes parametresine steemit'in node sini yazarak steem nodemizi ayarlamış olduk bütün yapacağımız işlemler https://api.steemit.com bu node üzerinden yapılacak daha bir çok node seçeneğiniz bulunmaktadır.


  • İsmi follow_the_last_post olan bir fonksiyon yazacağız ve bu fonksiyonumuz username adına bir parametre alacak.

amacımız girdiğimiz username yani kullanıcı adını kullanarak kişinin takip ettiği kişileri bulmak ve onların son içeriklerine bakmak olacak.

Kodların arasına açıklamalar serpiştirdim.

def follow_the_last_post(username = "hakancelik"): # fonksiyonumuzu oluşturduk ve 
    # username parametresine varsayılan olarak hakancelik yazdık.
    for account_name in Account(username, STEEM).get_following(): # Account sınıfımızın ilk parametresine 
        # fonksiyonumuza girilen username değişkenini verdik, ikinci parametreye steem node mizi ve sınıfımızda bulunan
        # get_following fonksiyonuna erişmek için . (nokta) kullandık bu bize kişinin takip ettiği kullanıcıları verecektir.
        # for döngüsü ile yapmış olduğumuz bu sistemde account_name adında ki değişken her döngüde username  adlı
        # kişinin takip ettiği kullanıcı ismi olacaktır.
        last_post = Blog(account_name = account_name).take(1) # Blog sınıfımızı kullanarak ve onda bulunan take fonksiyonunu çağırıyoruz parametre olarak 1 yazdığımızda bize en son ki içerik bilgisini döndürüyor.
        try: # try except hata yakalama kodlarıdır.
            post_time_elapse = last_post[0].time_elapsed() # son paylaşılan içeriğin zaman bilgisini alıyoruz.
            days = post_time_elapse.days # zaman bilgisinden gün bilgisini çekiyoruz.
            yield dict( # ve yield ile fonksiyonumuzun çıktısını veriyoruz bu çıktı şunları içeriyor
                account_name = account_name, # hesap ismi
                url = last_post[0].url, # son paylaştığı içerik adresi
                days = days, # ve kaç gün önce paylaştığı bilgisi
            )
        except IndexError: # index hatası olursa yani kişi hiç paylaşım atmamış ise 
            yield "{} user has never shared content".format(account_name) # buradaki kod çalışır, bu kod kişi hiç paylaşım atmamış mesajı verir.

Normalde fonksiyonlar çıktı verirken return kullanır ama biz for ile gelen verileri direk olarak sırası ile almak istediğimiz için yieldkullandık ve bu sayede follow_the_last_postfonksiyonumuz çalışır ve sonuç üretirse çıktıyı direk alabildik return kullansaydık çıktı olabilmek için fonksiyonumuzda bulunan for döngüsünün bitmesini beklememiz ve bütün sonucu bir anda ekrana vermemiz gerekirdi, çünkü return çalıştığı an döngüleri ve fonksiyonu sonlandırırken yield bunu böyle yapmaz.


yield dict( # ve yield ile fonksiyonumuzun çıktısını veriyoruz bu çıktı şunları içeriyor
        account_name = account_name, # hesap ismi
        url = last_post[0].url, # son paylaştığı içerik adresi
        days = days, # ve kaç gün önce paylaştığı bilgisi
)

bu kısım bizim çıktı alacağımız kısım, yukarıda bahsetmiştik, bu kısımda url = last_post[0].url, şurayı silersek çıktı olarak kullanıcı adı ve kişinin son paylaşımının kaç gün önce olduğu ekrana gelir.

  • Bu kodlarda çıktı almak için yield kullandığımızdan dolayı follow_the_last_post fonksiyonumuz bir generatör olmuş oluyor fonksiyonumu çalıştırıken yine for kullanmamız gerekecek.

Çalıştıralım

for i in follow_the_last_post():
    print(i)

# yada varsayılan yerine siz username girmek isterseniz

for i in follow_the_last_post("ruen"):
    print(i)

# yada 

for i in follow_the_last_post(username = "ruen"):
    print(i)

Şeklinde yapabilirsinzi.

Sonuç

{'account_name': 'acidyo', 'days': 0}
{'account_name': 'anadolu', 'days': 5}
{'account_name': 'anneadam', 'days': 3}
{'account_name': 'anritco', 'days': 9}
{'account_name': 'arafs', 'days': 3}
{'account_name': 'artizm', 'days': 0}
{'account_name': 'artzone', 'days': 0}
{'account_name': 'bera.dincer', 'days': 1}
{'account_name': 'captainsailor', 'days': 0}
{'account_name': 'catwolff', 'days': 36}
{'account_name': 'chardonnay', 'days': 5}
{'account_name': 'cyberyunus', 'days': 0}
{'account_name': 'damla', 'days': 6}
{'account_name': 'drfrostgirl', 'days': 2}
{'account_name': 'drkent', 'days': 31}
{'account_name': 'ercu', 'days': 10}
{'account_name': 'eyupyusuf', 'days': 3}
{'account_name': 'ferow', 'days': 31}
{'account_name': 'fineartnow', 'days': 78}
{'account_name': 'firewall', 'days': 85}
{'account_name': 'fungi', 'days': 84}
{'account_name': 'gokhan83kurt', 'days': 1}
{'account_name': 'golge', 'days': 3}
{'account_name': 'hayirhah', 'days': 2}
{'account_name': 'hede-io', 'days': 15}
{'account_name': 'jimmylin', 'days': 0}
{'account_name': 'jumbot', 'days': 0}
{'account_name': 'kagantrky', 'days': 3}
{'account_name': 'kedi', 'days': 35}
{'account_name': 'mozer', 'days': 5}
{'account_name': 'murattatar', 'days': 0}
{'account_name': 'neokuduk', 'days': 30}
{'account_name': 'pars11', 'days': 1}
{'account_name': 'peri', 'days': 0}
{'account_name': 'punky', 'days': 4}
{'account_name': 'qurator', 'days': 0}
{'account_name': 'quraturk', 'days': 2}
{'account_name': 'readmore', 'days': 47}
{'account_name': 'redjepi', 'days': 0}
{'account_name': 'sauronbey', 'days': 7}
seacat user has never shared content
{'account_name': 'shaka', 'days': 0}
{'account_name': 'sorucevap', 'days': 10}
{'account_name': 'sudefteri', 'days': 2}
{'account_name': 'tarikhakan55', 'days': 0}
{'account_name': 'thornaci', 'days': 38}
{'account_name': 'trliste', 'days': 48}
{'account_name': 'tulpar', 'days': 12}
{'account_name': 'turkce-bilim', 'days': 1}
{'account_name': 'ucmuharfli', 'days': 4}
{'account_name': 'yasujizr', 'days': 5}

Bu @ruen in sonuçları, bu sayede aktif olmayan kişileri takipten çıkabilir.

Kodların tamamı

https://gist.github.com/hakancelik96/3b72a320cdd1059ed2eddba29bd939ba

Kendinize iyi bakın

Hayvanları sevin

Sort:  

@ruen görünümlü serdar isimli arkadasimizi kiniyoruz ( BEN NİYE TAKİP EDİLENLERDE YOKUM KARDESSSSSS ) @hakancelik eline saglik bu arada :D

Çok güzel bir post olmuş kıskandım :D Bende benzer bir yol izleyebilirim. Bu postla beraber bu bilgisayarıma python yüklemesini ve pip kurulumunıda yapmış oldum. İlk python uygulamam senin programın oldu bunun haklı gururunu yaşayabilirsin.

pars.png

Python sahalarına yapılmış ssağlam ve sevindirici bir transfer haberi bu ;)

Teşekkürler, gerçekten buna çok sevindim, umarım bir çok kişi merak salıp yazılıma başlar, donate ler @hakancelik hesabına atılıyor bu arada @pars11 bey, özel ders isterseniz özelden yazabilirsiniz :D :D :D.
Grurlu ve onurluyum.

  • Çimenleri, otları vs temizlensin düşüncesi ile yakmayın.

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.

Quraturk tr etiketi altında paylaşılan kaliteli ve orjinal içerikleri tespit edip ödüllendirmeyi hedefleyen bir kürasyon projesidir. Yazınız değerlendirmen ekibimiz tarafından uygun görülmüş olup, günün seçilen yazıları arasında yerini almıştır.
Quraturk hakkındaki tüm sorularınızı discord üzerinden sorabilirsiniz


Bu yorumu ya da günlük Quraturk postlarını oylayarak projeye destek olabilirsiniz.

Coin Marketplace

STEEM 0.15
TRX 0.13
JST 0.026
BTC 56904.92
ETH 2440.10
USDT 1.00
SBD 2.37