24 Mayıs 2011 Salı

Takip Ettiğiniz Kişi Facebook Chat'te Çevrimiçi Olunca Haber Veren Program

O kadar lazım çok olur mu bilmem ama bana lazım oldu ve çözümü şöyle buldum. Daha farklı da yapılabilir tabi.

Ön Bilgi: Facebook Chat servisi XMPP/Jabber protokolü üzerinde çalışıyor. Bu protokolün belirtimlerine(specification) göre, ne zaman bir arkadaşınız FB Chat'te durumunu değiştirirse (Çevrimiçi, Dışarıda, Çevrimdışı) protokol istemcilerini bilgilendirir. MSN gibi yani.

Benim yöntemim bu protokolü kullanarak FB'a bağlanıp gelen uyarılar içinden istediğiniz kişiyi süzmekten oluşuyor.

Bunun için öncelikle bir FB Chat istemcisine ihtiyacımız var. Açık Kaynak Yazılım felsefesi sağolsun burada imdadımıza yetişiyor. SourceForge'da JFBChat adında işimizi görecek küçük bir program var. Kaynak kodlarını SVN'den indirebilirsiniz.



İşin zor kısmı programın FB'den gelen uyarıları dinleyen kısmı bulmakta. Kodu biraz deştiğinizde jfbchat.listeners.MyRosterListener sınıfının bu işi yaptığını fark edebilirsiniz. Gerisi artık sadece bir if kontrolüne kalıyor. Aşağıdaki ilk satır bir kullanıcı durumunu değiştirdiğinde konsola bir debug mesajı basıyor.

new DMessage(contact.getUser() + " has changed status and he is now " + contact.getPresence().toString() + ".").println();

contact.getUser()

Çağrısı ile kullanıcının FB'taki tam adına erişebilirsiniz.
Debug mesajından sonra şöyle basit bir if ile istediğiniz kullanıcıyı süzebilir, çevrimiçi olduğunda, sınırları hayalleriniz ve programcılık yeteneklerinizle belirlenmek üzere istediğiniz uyarıyı verdirebilirsiniz.

if (contact.getUser().indexOf("KULLANICI-ADI")!=-1)
{
System.out.println("Kahvenin Hatırı'nın debug çağrısı");
new MP3("C:\\PolisFilmTheme.mp3").play();
}

Netbeans projesi de burada.
Kolay gelsin.

Hiç yorum yok:

Yorum Gönder