1

ASP ile Twitter İşlemleri 1

ASP

Mikroblog sitelerinin ön plana çıkmasındaki en büyük etken olarak Twitter gösterilebilir. Kullanıcılar durumlarını 140 karakterle anlatırken, arkadaş listesi oluşturarak diğer kullanıcıların yazdıklarını anlık olarak takip edebilmektedirler.

Twitter’ın oluşturduğu API’leri kullanarak Twitter üzerinde işlem yapan bir çok araç geliştirilmektedir.

API’leri kullanarak Twitter’dan bilgi çeken uygulamalar genelde PHP kullanılarak yazılıyor. Daha sonra ASP.Net geliyor. ASP ile yazılmış örnek ise pek bulunmuyor. Tabii ki bunun nedeni ASP’nin PHP ve ASP.Net kadar esnek bir dil olmaması…

Bu yazımızın konusu ASP kullanarak Twitter’daki takip ettiğimiz kişi sayısını bulmak olacak.

Twitter API’leri ile JSON ve XML olmak üzere iki farklı dosya türünde veri çekilebilir. Bu örnekte XML kullanılmıştır.

<%
'XML verilerini okumak için XMLDOM nesnemizi oluşturuyoruz
Set objXML = Server.CreateObject("Microsoft.XMLDOM")   
objXML.async = false
objXML.setProperty "ServerHTTPRequest", true
%>

XMLDOM nesnemizi oluşturduktan sonra Twitter üzerinden bir xml sayfası çekmemiz gerekiyor. Bu işlemi gerçekleştirebilmek için bize gereken ise bir kullanıcı adı… Bu kullanıcı örnek sayfa üzerinden form yardımıyla gönderebiliriz. Aynı sayfada QueryString’den kullanıcı adını alarak XML dosyasını belirliyoruz.

<%
'QueryStringden gelen twitter adını çekiyoruz
t = Request.QueryString("t")
 
If t <> "" Then	 'Twitter adı varsa
	'Twitter adını kullanarak XML dosyasını belirliyoruz
	xmlFile = "http://twitter.com/statuses/friends/"&t&".xml"
	objXML.Load xmlFile 	'Dosyayı açıyoruz
	Set objItems = objXML.getElementsByTagName("user")
	'<user> dizisinin toplam eleman sayısını buluyoruz
	ArkadasSayisi = Int(objItems.Length)
%>

Buradaki ArkadasSayisi değişkeni kullanıcının takip ettiği diğer kullanıcıların(following) sayısını vermektedir.

Toplam kişi sayısını bulduğumuza göre bu listeyi bir tabloya dökebiliriz. Bu işlemi For Each … Next döngüsü kullanarak yapacağız.

<% 'Arkadaş Sayısı sıfırdan büyükse tümünü listeliyoruz
	If ArkadasSayisi > 0 Then
%>
<table border="0" cellpadding="5" cellspacing="0" class="twitter">
<tr>
	<th>Resim</th>
	<th style="width:150px;">Kişi</th>
	<th style="width:100px;">Twitter Adı</th>
	<th style="width:70px; text-align:right">Twit Sayısı</th>
	<th style="width:80px; text-align:right">Twitter Link</th>
</tr>
<%
		i = 1
		For Each objItem in objItems
			name = objItem.selectSingleNode("name").Text
			sname = objItem.selectSingleNode("screen_name").Text
			resim = objItem.selectSingleNode("profile_image_url").Text
			twit = objItem.selectSingleNode("statuses_count").Text
%>
<tr <%If i mod 2 = 0 Then%> style="background:#eee;"<%End If%>>
	<td><img src="<%=resim%>" style="border:1px #ccc solid;" alt="<%=name%>" width="48" height="48"/></td>
	<td><%=name%></td>
	<td><a href="?t=<%=sname%>"><%=sname%></a></td>
	<td align="right"><%=twit%></td>
	<td align="right"><a href="http://twitter.com/<%=sname%>" target="_blank"><%=sname%></a></td>
</tr>
<%
			i = i + 1
		Next
%>
</table>
	<% End If %>

selectSingleNode kullanarak çektiğimiz name değeri kişinin adını, screen_name değeri kişinin twitter adını, profile_image_url değeri kişinin profil görselini ve statuses_count değeri kişinin toplam twit sayısını vermektedir.

Bunların dışında çekilebilecek bir çok veri bulunmaktadır. Örnek linki kullanarak bu verileri görebilirsiniz.

Hazırlamış olduğum uygulamayı bu linkten görebilir veya bu linki kullanarak indirebilirsiniz.

“Ben kodlarla falan uğraşamam, yok mu bunun hazırı?” diye sorarsanız, TwitterCounter sitesinde bulunan çeşitli araçları kullanabilirsiniz.

Bir sonraki yazımızda bir kişinin yazdığı son 5 statünün nasıl alınacağını göreceğiz.

KAYNAKLAR:
Twitter API Wiki / Twitter API Documentation

DİĞER DİLLERDE YAZILMIŞ ÖRNEKLER:
http://blog.dmbcllc.com/2009/05/21/twitter-from-aspnet-retrieving-statuses/ (ASP.Net)
http://www.tufantunc.com/php-ile-twitter-statu-alma/ (PHP)
http://gkaans.org/makaleler/javascript/jquery-ile-jsondan-veri-cekmek/ (JQuery)

Yorumlar
1 yorum var

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.