Bir Kişiye Ait Twitleri Listelemek – Batu Incecay
Batu Incecay Rotating Header Image

Bir Kişiye Ait Twitleri Listelemek

Bu uygulama üzerinde istediğimiz Twitter ID’sine sahip kişinin bugüne kadar yaptığı twitleri uygulamamız ile listeleyeceğiz. Uygulama sizlere sakın karmaşık gelsin. Kodları yazımın sonunda sizlerle paylaşıyor olacağım şimdi ise uygulamanın nasıl çalıştığına ve dikkat etmemiz gereken püf noktalarına bir bakalım.

Öncelikle bize twit bilgileri gerekiyor. Peki bu bilgileri nasıl alacağız. Twitter bizlere bu konuda oldukça yardımcı oluyor. Adresi link olarak koymadığım bu adresten https://api.twitter.com/statuses/user_timeline.xml?screen_name=xxx istediğiniz Twitter kullanıcısının xml formatında twit bilgilerini çekebilirsiniz. Unutmayın xxx yerine Twitter ID’sini yazacaksınız =)  XML verisini çekip incelediğinizde birçok tag ile karşılaşacaksınız. Bu uygulamada sadece text, gönderen ve gönderenin fotoğrafının URL bilgilerini kullanacağız. İsteyenler tarihten tutun da status id’ye bir çok başka bilgiyi de kullanabilir. Peki o zaman şimdi bu XML dokümanını uygulamamızın içinden indirelim. Bunun için bir WebClient’a ihtiyacımız var. Aşağıda gördüğünüz kod parçası ile bu dokümanı indirip IcerikAyikla fonksiyonuna gönderdik.

WebClient tw = new WebClient();            

            tw.DownloadStringCompleted += new DownloadStringCompletedEventHandler(IcerikAyikla);

            tw.DownloadStringAsync(new Uri(“https://api.twitter.com/statuses/user_timeline.xml?screen_name=” + twitID.Text));

İndirilen XML dokümanı IcerikAyikla fonksiyonu içerisinde pars edilerek, yukarıda sözüne ettiğim text, gönderen ve gönderenin fotoğraf URL bilgileri ayıklanıp listBox1 içerisine yeni bir item olarak ekleniyor. Bunu yapan koda da şöyle bir göz atalım:

private void IcerikAyikla(object sender, DownloadStringCompletedEventArgs e)

        {

            if (e.Error != null)

                return;

             XElement xTwit = XElement.Parse(e.Result);

            listBox1.ItemsSource = from tweet in xTwit.Descendants(“status”)

                                   select new TwitterBilgisi

                                   {

                                       URL = tweet.Element(“user”).Element(“profile_image_url”).Value,

                                       metin = tweet.Element(“text”).Value,

                                       gonderen = tweet.Element(“user”).Element(“screen_name”).Value

                                   };

        }

Bu kodda gördüğünüz TwitterBilgisi sınıfı hakkında hemen ufak bir bilgi vereyim. Malum nesneye yönelik programlama yapıyoruz bu nedenle okuduğumuz bilgileri tanımladığımız değişkenlerde tutmak yerine bir class’ın değişkenlerinde tutuyoruz. Class’ımızın kodu aşağıdaki gibi oldukça basit.

public class TwitterBilgisi

        {

            public string metin { get; set; }

            public string gonderen { get; set; }

            public string URL { get; set; }

        }

Aslında bu kadar basit; ancak görsel olarak bir kaç düzenleme yapmamız gerekiyor. Eğer siz kodları indirmek yerine uygulamayı kendiniz yapmak istiyorsanız lütfen bu işlemleri yaptıktan sonra programınızı çalıştırın ve görsel sorunlarla yüz yüze gelin. Bu arada görsel sorunları çözmeden şunu belirtmeliyim XML okumak için kullandığımız XElement değişkeni sizde default olarak çıkmayacaktır. Bunun için uygulamanıza System.Xml.Linq kütüphanesini eklemelisiniz. Bu kütüphaneyi eklediğinizde uygulamanız kütüphaneyi de bulamayacaktır. Bu noktada da referans eklememiz gerekecek. Referans eklemek için Solution Expres altında yer alan Referances bölümüne sağ tıklayarak Add Referance seçeneğini seçtikten sonra .NET menüsü altından System.Xml.Linq bileşenini seçip eklemeniz gerekiyor. Bu ekleme işlemini yaptıktan sonra gönül rahatlığı ile XML dokümanınızı okuyabileceksiniz.

Gelelim görsel düzenleme kısmına. Çalıştıranlar görmüştür twitler listeleniyor ancak mesajların yarısı yok, gönderen bilgisi yok. İşte bu noktada xaml dosyasının içine girmemiz gerekiyor. Xaml dosyasının içine girdiğimizde listBox’ımızı buluyoruz. ListBox’ımız tek satırda açılıp kapanmış; araya eklemeler yapacağımız için sondaki kapama işaretini (/) silip, alt satıra </ListBox> olarak ekliyoruz. Böylece artık araya eklemelerimizi rahatça yapacağız. Önce eklenecek kodu göstereyim; ardından kod üzerine konuşalım.

<ListBox.ItemTemplate>

                    <DataTemplate>

                        <StackPanel Orientation=”Horizontal” Height=”Auto”  HorizontalAlignment=”Stretch”>

                            <Image Source=”{Binding URL}” Height=”73″ Width=”73″ VerticalAlignment=”Top” Margin=”0,10,8,0″/>

                            <StackPanel Width=”370″>

                                <TextBlock Text=”{Binding metin}” Foreground=”#FFC8AB14″ FontSize=”28″ TextTrimming=”WordEllipsis” TextWrapping=”Wrap” />

                                <TextBlock Text=”{Binding gonderen}” TextWrapping=”Wrap” FontSize=”24″ />

                            </StackPanel>

                        </StackPanel>

                    </DataTemplate>

</ListBox.ItemTemplate>

Bilgilerimiz düzenli dursun diye listBox’ın her bir item’ında bir image source ve iki text box kullanacağız. Bunları kullanabilmemiz için öncelikle bir stack panel’a ihtiyacımız var. Panel’in Height’ını da otomatik yaptım ki böylece text’iniz 140 karakter de olsa 10 karakter de olsa tamamı görüntülenebilecek. Bunun dışında burada Binding  metin, Binding URL ve Binding gonderen’e özellikle dikkat ediniz. Bu değişkenler bizim yarattığımız TwitterBilgisi sınıfının değişkenleri. Eğer sizler farklı isimler kullandıysanız buradaki isimleri değiştirmeyi unutmayın.

Uygulamamız bu kadar. Sizler bu uygulamayı kendi ihtiyaç ve isteklerinize göre değiştirebilirsiniz. Umarım biraz olsun yararlı olabilmişimdir.

Uygulamanın Kodları =)