Raspberry Pi’den Pyhton ile Tweet Göndermek
Raspberry Pi, kredi kartından biraz daha büyük olan bir kart. Maliyeti oldukça düşük olan Raspberry Pi aslında microprocessor içeren(ki bu noktada MicroController içeren Arduino’dan ayrılıyor) bir bilgisayar olarak düşünülebilir. Dolayısıyla onunla her şeyi yapabilirsiniz. Bir Web Server haline de getirebilir(ki denedim ve apache2 üzerinde php kodlaması yaptım), sıcaklık sensörüne sahip bir kahve fincanını kumanda da edebilirsiniz. Yapabilecekleriniz hayal gücünüz ile sınırlı diyebilirim.
Raspberry Pi ile ilgili Devnot’ta daha önceden yayınlanan “IoT Dünyasının Parlayan Yıldızı: Raspberry Pi” yazısına da göz atmanızı tavsiye ederim.
Çevre ünitelerle(monitör, kamera, GPIO-General Purpose Input Output ile bağlanabilen her türlü elektronik alet, klavye, mouse vb) olan bağlantıları sağlayacak arabirimler üzerinde yer alan kart uygun işletim sistemi yüklendiğinde mini bir bilgisayar haline gelmekte. Bu anlamda Windows 10 IoT, Ubuntu Mate ve kendi orjinal işletim sistemi Raspbian‘ı kullanabiliriz.
Raspberry Pi konusunda epey bilgili olan Recep Duman hocam ile yaptığımız youtube söyleşisini mutlaka izlemenizi öneririm.
Kullandığım Raspberry Pi üzerinde Ruby standart olarak yüklü. Buna ek olarak Python diline ait ortam da hazır. Java, Mathematica, Scratch de diğer diller arasında sayılabilirler. Her biri için güzel birer IDE’de gelmekte.
Aslında amacım bir motoru Raspberry Pi ile programlayıp evdeki Lego Technic’ler den birisini önceden tayin ettiğim rota doğrultusunda, engellere çarpmayacak şekilde dolaştırabilmek. Ama tabii bu mertebelere gelmeden önce bir programlama diline de hakim olmak gerekiyor. Tercihimi Python’dan yana kullanıyorum. Internetteki kaynaklardan ve aldığım bir kaç kitaptan kısa bir giriş turu ile bu dünyaya adım attım.
İlk gözüme kestirdiğim Twitter API’sini kullanarak Tweet atmak oldu. Daha önceden C# ve Ruby dillerini kullanarak denediğim bir çalışmaydı. Ancak şimdi ki deneyim daha eğlenceliydi diyebilirim. Şimdi maceramıza başlayabiliriz.
Genel Prensipler Aynı
Twitte API’sini kullanmanın belli başlı prensipleri var. Bunlar aslında platform bağımsız kabul edebileceğimiz prensipler. İlk önce hangi platformda olursak olalım Twitter gibi sosyal ağları kolay bir şekilde kullanabilmek için servis bazlı çalışan kullanımı kolay API’lere ihtiyacımız var. Genelde REST tabanlı tasarlanan bu servisleri Python tarafında Twython isimli modülü kullanarak ele almak son derece kolay. Bir diğer önemli kuralda bu API’yi kullanabilecek yetkilere sahip olmamızın gerektiği. Twitter tarafından baktığımızda bu kullanım için consumer_key, consumer_secret, access_token ve access_token_secret değerlerine ihtiyacımız bulunmakta. Şu adresten kendinize bir application oluşturup gerekli bilgileri alabilirsiniz.
Şunu belirtelim ki bir kütüphane kullanmak zorunda değilsiniz. Twitter REST servisleri için gerekli GET, POST paketlerini kendiniz de kod içinde hazırlayıp gönderebilirsiniz.
İlk Adım Twython Modülünü Yüklemek
.Net dünyasında nuget paketleri, Ruby tarafında gem’ler, Python tarafında ise module olarak adlandırılan kütüphaneler söz konusu. Tweet atmamızı kolaylaştıracak olan twython(ki adı twitter ve python’un birleşimi ile elde edilmiş) kütüphanesini sistemimize yüklemek için terminalden aşağıdaki komutları sırasıyla çalıştırmamız gerekiyor.
Burada ki sudo komutunu pi isimli varsayılan kullanıcının ilgili operasyonlar sırasında Permission Denied almaması için kullanılmakta. apt-get ile tahmin edeceğiniz üzere sistem güncellemesi ve yeni program yüklemeleri gibi işlemleri gerçekleştirmekteyiz. python tarafına ilgili kütüphaneyi yükleyecek asıl komut ise pip install. Son satır ile twython kütüphanesini sisteme yüklemiş bulunuyoruz.
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install python-setuptools
- sudo easy_install pip
- sudo pip install twython
İlgili kütüphane yüklendiğine göre artık gerekli kodlarımızı yazmaya başlayabiliriz. Uygulama iki kod dosyasından oluşmakta. py uzantılı olarak kaydedilecek dosyalardan ilkinde consumer ve access bilgilerine ait değişkenleri tutacağız. Bunu bir nevi konfigurasyon içeriği gibi de düşünebiliriz(Bu arada kodlar için Python 2 IDLE yi kullandığımı belirtmek isterim)
auth.py içeriği
consumer_key = "..." consumer_secret = "..." access_token = "..." access_token_secret = "..."
Tabii ki siz … yazan kısımlara Twitter’ın sizin için ürettiği değerleri girmelisiniz.
İkinci dosyamızda(twitter.py olarak kaydedebiliriz) ise aşağıdaki satırlara yer vereceğiz.
from twython import Twython from auth import( consumer_key, consumer_secret, access_token, access_token_secret ) def send_tweet(message): twitter=Twython( consumer_key, consumer_secret, access_token, access_token_secret ) twitter.update_status(status=my_message) print("\'%s\' seklinde mesaj gonderildi" % message) my_message="Bu mesaj Raspi'den python kodu ile gonderilmistir" send_tweet(my_message)
İlk iki satırda koda enjekte ettiğimiz tip ve değişkenler olduğunu düşünebiliriz. Twython nesnesini oluşturabilmek için ilgili tipi az önce yüklediğimiz modül içinden import etmekteyiz. Buna ek olarak aynı klasörde yer alan auth.py dosyasından da consumer_key,consumer_secret,access_token ve access_token_secret isimli string değişkenleri koda alıyoruz.
send_tweet bir metod tahmin edeceğiniz üzere. Ruby’deki gibi def anahtar kelimesi ile tanımlanan fonksiyon : işareti ile sonlanıyor(aslında for, if gibi kod bloğuna sahip olabilecek ifadeler hep : kullanıyor) Sonrasında önemli olan konu ise metot içerisindeki kod satırlarının girintili yazılması gerekliliği. Eğer böyle yapmazsak kodu kontrol ettirdiğimizde Invalid Syntax hatası alırız. Bu arada yorumlayıcı metodun bittiğini nasıl anlıyor derseniz; orada boş bir satır var ya…
Koda import ettiğimiz değişkenler twitter isimli nesnenin oluşturulması sırasında(şimdilik benim yapıcı metod-constructor olarak düşündüğüm yerde) kullanılıyor. Metoda parametre olarak gelen message isimli değişken içeriği de update_status isimli fonksiyon kullanılarak twitter’a gönderiliyor. Son olarak print fonksiyonunu ile komut satırına bir bilgi basıyoruz. Sonuçlara bakalım:
Burada % kullanımını bir türlü beceremediğimi fark etmişsinizdir O yüzden arka arkaya bir kaç tweet gitmiş bulundu. Ama sonuçlar ilk gün için oldukça tatmin ediciydi. Kredi kartı büyüklüğündeki o bilgisayardan, python kodları ile harici bir kütüphane kullanarak tweet atmayı başarabildim. Demek ki bir robotu Raspi ile kullanmaya başladığımda, robotun tweet atmasını artık sağlayabilirim.
Pek tabii modül içerisinde bir çok fonksiyonellik bulunmakta. Örneğin timeline’ı, kendi tweet’lerimizi görebilir, resim gönderebilir ve daha pek çok işlemi gerçekleştirebiliriz. Sonuçta Twitter API’sini kullanabileceğiniz kütüphane elinizin altında. Bunları nasıl yapabileceğinizi görmek için şu adresteki tutorial’ı aynen benim gibi adım adım yapmanızı öneririm.
1 Comment
Erdem Avni SELÇUK
20 Haziran 2016 at 13:39Burak hocam ellerine sağlık keyifle okudum. İnşallah uygulama alanı da bulabilirim. saygılar.