PHP’nin basit işlevlerini kullanarak Twitter’dan kullanıcı statülerini almayı anlatacağım. Bunları yaparken Twitter’ın API özelliğinden değil, RSS özelliğinden faydalanacağız. Hem bu sayede PHP ile veri alma ve veri ayıklama çalışması yapmış oluruz. Konuyu elimden geldiğince basit bir dille anlatacağım. Sözü fazla uzatmadan kullanacağımız kodlar ve açıklamalarına geçelim.
Kullanacağımız ve bilmemiz gereken kodlar:
- file_get_contents ile veri alma
- for döngüsü
- split ile verileri parçalamak
- preg_match ile veri parçası alma
- diziler (array)
Başlamadan önce bu PHP kodlarını öğrenmenizde, en azından nasıl çalıştığını ve ne işe yaradığını öğrenmenizde fayda var.
Twitter statüleriniz RSS kaynağında
Twitter gönderileriniz, geçmiş statüler olarak hesabınızda saklanır. Profil sayfanızdan ister son statünüzü, isterseniz
geçmiş statülerinizi görüntüleyebilirsiniz. Örneğin benim profil sayfama bakabilirsiniz. Tüm profil sayfalarında, sayfanın sağ tarafında en altta kullanıcı statülerini takip edebileceğiniz bir RSS kaynağı bulunur. Bu RSS kaynağında kullanıcıya ait son 20 statü görüntülenebilir. Biz de Twitter’dan statüleri almak için bu RSS kaynağından faydalanacağız. Benim RSS kaynağımın adresi: http://twitter.com/statuses/user_timeline/19642722.rss
RSS kaynağındaki verileri alıyoruz
RSS kaynağımızdaki verileri alıp sayfaya yazdıralım. Bu sayede elimizdeki verilerin ham halini göreceğiz. Bunu yapmak için bir değişkene file_get_contents komutu ile RSS kaynağımızın adresini veriyoruz ve bunu sayfaya yazdırıyoruz.
$veriler = file_get_contents("http://twitter.com/statuses/user_timeline/19642722.rss");
echo $veriler;
Buradan sayfamızın nasıl görüneceğine bakabilirsiniz. Gördüğünüz gibi file_get_contents kodu ile RSS kaynağındaki tüm kodları php sayfamıza almış olduk. Bu nedenle tarayıcımız bir bu sayfayı bir RSS kaynağı olarak görüntülüyor. RSS kaynağının kodlarını incelerseniz, statü verilerinin <item> tagları içerisinde yer aldığını görebilirsiniz.Burada <description> ile statü ve <pubDate> tagı ile statünün tarihi verilmiş. Öncelikle <item> taglarını bütün olarak değişkenlere alalım. Bunun için split kodundan yararlanacağız. “echo $veriler;” kodumuzu silip, yerine split kodumuzu yazıyoruz. Kodlarımız aşağıdaki biçimi alıyor:
$veriler = file_get_contents("http://twitter.com/statuses/user_timeline/19642722.rss");
$statuler = split("<item>",$veriler);
echo $statuler[0];
Buradaki “echo $statuler[0];” kodu, $statuler isimli dizimizin ilk elemanını sayfaya yazdırıyor. (Dizi numaraları sıfırdan başlar.) split kodumuzun çalışıp çalışmadığını denemek amaçlı yaptım. Buradan sonucunu görebilirsiniz. Gördüğünüz gibi, statüler, statü tarihleri, linkler düzensiz bir şekilde sayfamıza yazıldı. Bu bilgiler içerisinden yalnızca statü ve statü tarihlerini almamız gerekiyor.
Yalnızca statüleri ve tarihlerini almak için preg_match kodumuzu kullanacağız. preg_match kodu, belirttiğimiz karakterleri bir başka değişken verileri içerisinde arayarak eşleşen sonuç olup olmadığını belirtmeye veya eşleşen sonuçları almaya yarar. Şimdi preg_match ile <description> ve <pubDate> tagları arasındaki statü ve statü tarihlerini alabiliriz. preg_match kodumuz şu şekilde olacak: “preg_match(‘/<description>(.*)<\/description>/i’, $statuler[$i], $statu);”. Buradaki ilk virgülden önce tırnaklar arasındaki kod, <description> ve </description> kodları arasında yazanları belirtiyor. İkinci virgülden önceki $statuler[$i] kodu, $statuler dizisine atadığımız her bir dizi elemanını belirtiyor. $statu ise belirlenen her elemanı $statu adında bir diziye eleman olarak atıyor. Aynı şekilde <pubDate> taglarını da preg_match ile alarak $tarih isminde bir diziye atayalım. Kodlarımızın yeni hali bu şekilde;
$veriler = file_get_contents("http://twitter.com/statuses/user_timeline/19642722.rss");
$statuler = split("<item>",$veriler);
for ($i=1;$i<=count($statuler);$i++) {
preg_match('/<description>(.*)<\/description>/i', $statuler[$i], $statu);
preg_match('/<pubDate>(.*)<\/pubDate>/i', $statuler[$i], $tarih);
echo $statu[0];
echo "<br>";
echo $tarih[0];
echo "<br> <br>";
}
Buradaki for döngüsüne dikkat edin. Sıfırdan değil birden başlıyor. Bunun sebebi, sayfanın başındaki Twitter bilgilerini almamak. İkinci dikkat etmeniz gereken nokta ise $statu ve $tarih dizilerinden sıfırıncı veriyi almamız. Bunun sebebi, preg_match komutunun eşleşen bir kod bulduğunda eşleşmeye devam etmeden bitirmesi. Bunu nedenle for döngüsü her döndüğünde dizi elemanları baştan yazılıyor ve yeni eleman dizinin ilk sırasına, yani sıfıra yazılıyor. Bunları kendi denemelerinizde görerek tecrübe etmenizi öneririm. echo satırlarını ise statü ve tarihleri satırlara ayırarak okumayı kolaylaştırması için ekledim. Böylece sayfanın biraz daha düzenli bir görüntüsü oldu, sayfaya buradan bakabilirsiniz.
PHP ile Twitter’dan statü alımı bu kadar. Elimden geldiğince basit anlatmaya çalıştım. Eğer eksik gördüğünüz, merak ettiğiniz veya önerileriniz varsa yorumlarınızda belirtmeniz beni sevindirir. Diğer yazılarımda bu uygulamamızın eksiklerini bularak onları geliştireceğiz. Kolay gelsin…
PHP uygulamasını buradan indirebilirsiniz.
İlgili Başlıklar:
- Wordpress blogunuza Twitter eklentisi: Tweetable
- Onofis sunucularına taşındım
- Yeni pazarlama kanalı sosyal medya
- Bloglar için bir tehlike mi, bir dost mu: Mikrobloglar



2 yorum yapıldı
Geribildirimler
Yorum Ekleyin