PHP & Json ve Twitter’dan Veri Çekmek

Adsense KODU

PHP ile JSON işlemleri yapmak için 2 adet fonksiyonumuz bulunuyor. Bunlardan birisi json_encode diğeri ise json_decode . Bu fonksiyonlardan json_encode, kendisine array ( Dizi Değişken ) olarak verilen bir veriyi, JSON formatına dönüştürüyor. Diğeri, yani json_decode ise bunun tam tersi bir iş yaparak JSON olarak aldığı veriyi, parçalayarak bir PHP dizisi haline getiriyor.

Ben Wordpress’e bu tür bir olayı eklemek istediğimden dolayı başta eklenti yazmayı düşündüm ancak sadece kendim kullanacağım ve bu aralar zaman konusunda sıkıntılarım olduğu için biraz gereksiz geldi.
Bu sebeple bende pek sevgili functions.php dosyası ile işimi hallettim. Twitter’da yazmış olduğum son 5 mesajı çekmek için aşağıda görmüş olduğunuz fonksiyonu yazdım.

PHP:
/**
* @param $user string Son Twitleri alınacak olan kullanıcının adı
* @param $count int Kullanıcıya Ait kaç twit’in alınacağı
* @return $json
*/
function getTwitterItems( $user = ”, $count = 5 ) {

$file = file_get_contents(”http://twitter.com/statuses/user_timeline/$user.json?count=$count”);
$json = json_decode($file);
return $json;

}

// Kullanımı
// $items = getTwitterItems(”twitter_kullanici_adi”,alınmak_istenen_mesaj_sayisi );

// $time should be a Unix timestamp - get it with strtotime()
function get_elapsedtime($time) {

$gap = time() - $time;

if ($gap <5) {
return ‘Şimdi’;
} else if ($gap <10) {
return ‘Çok az önce’;
} else if ($gap <20) {
return ‘Az Önce’;
} else if ($gap <40) {
return ‘Yarım dakika önce’;
} else if ($gap <60) {
return ‘Yaklaşık 1 Dk Önce’;
}

$gap = round($gap / 60);
if ($gap <60) {
return $gap.’ dakika önce’;
}

$gap = round($gap / 60);
if ($gap <24) {
return ‘yaklaşık ‘.$gap.’ saat ago’;
}

return date(’h:i A F d, Y’, $time);

}

Bu fonksiyonu functions.php dosyama ilave ettikten sonra, sidebar.php dosyasında da bir takım düzenlemeler yapmam lazım geldi. Düzenleme dediysem o kadar da zor birşey değil. Altı üstü, bu fonksiyondan dönen verileri ekrana basacak olan bir döngü. O da aşağıda görmüş olduğunuz gibi basit bir foreach ile halloldu

PHP:
<?php foreach( getTwitterItems(”grkn”,5) as $item ) : ?>
<div class=”oge”>
<div class=”ust”></div>
<p><?= $item->text ?></p>
<span class=”tarih”><?= get_elapsedtime(strtotime($item->created_at)) ?></span>
<div class=”clear”></div>
</div>
<?php endforeach; ?>

Burada $item->text ile belirtmiş olduğumuz şey, mesaj oluyor. Tabii ki yaptığımız JSON çağrısı ile sadece bu veri dönmüyor bize. Daha dönen ( kullanıcı adı, gönderilme tarihi v.b ) bir çok veri var ancak ben sadece bana lazım olanı kullandım. Twitter Api ile ilgili daha detaylı bilgiyi buradan (resmi) yada buradan gayri resmi olarak almanız mümkün. Ancak ben 2. verdiğim linki tavsiye ederim.

Tüm bu işlemlerden sonra artık twitter’a yazmış olduğum son 5 ögeyi rahatlıkla blogumda gösterebiliyordum. Ama 1 dakika bir problem var. Sanki çok mu şekilsiz oldu ne? Evet, öyle oldu. Bu sebeple birazcıkta css ile süsleme yapmam gerek. Bunu da aşağıdaki css çalışması ile yaptım.

CSS:
div#sidebar div#twitter { margin-top:5px; }
div#sidebar div#twitter div.oge { background:url(images/twitter_u.png) no-repeat left top; width:221; margin:10px 0px 10px 10px; }
div#sidebar div#twitter div.oge div.ust { background:url(images/twitter_u.png) top no-repeat; width:%100; height:10px; }
div#sidebar div#twitter div.oge p { background:url(images/twitter_a.png) no-repeat left bottom #bff5ff; font-size:11px;}
div#sidebar div#twitter div.oge span.tarih { color:#828282; font-size:10px; text-indent:70px; }

Böylelikle sağ alt taraftan görebileceğiniz, bana ait son 5 mesajı konuşma baloncuğu şeklinde gösteren basit uygulamamı da yazmış oldum. Sınavlarım geçtikten sonra, bu basit uygulamayı bir wordpress eklentisine çevirme planlarımda var. Daha sonra görüşmek üzere, esen kalın!

Not : Yukarıda bahsetmiş olduğum tüm olayları aslında Javascript ile istemci tarafında halletmekte mümkündü. Ancak ben nedense PHP ile yaptım, daha sonradan farkettim ki Javascript ile bu işlemleri yapmak daha kolaymış. Javascript ile olan versiyonunu da bir daha ki yazı da yazarım artık.

Not: Alıntıdır.

Yorum Yaz