TweetSharp ile Son Tweet'leri Çekme

Merhaba. Önceki bir yazıda php ile son tweet'leri nasıl listeleyeceğimizi anlatmıştım. Gelen bir istek üzerine bu işlemi ASP.NET ile de gerçekleştireceğiz. Bu işlem için TweetSharp kütüphanesi kullanılacaktır. İlk önce ASP.NET projemize TweetSharp'ı yüklüyoruz. Bunun için Visual Studio'da Tools > Library Package Manager > Package Manager Console diyoruz. Eğer Nuget Package Manager yüklü değil ise Tools > Extension Manager'dan NuGet Package Manager'ı yükleyebilirsiniz. Package Manager Console'u açtıktan sonra "Install-Package TweetSharp" komutunu verip paketi projemize ekliyoruz. Daha sonra bir adet Twitter uygulaması oluşturuyoruz. (Eğer daha önceden oluşturmadıysanız.)

dev.twitter.com/apps adresine gittikten sonra Create a new application diyoruz. Uygulamamızın ismi, açıklaması, web sitemiz gibi bilgileri giriyoruz. Dilersek uygulamamıza ait bir ikon da yükleyebiliriz. Uygulamamızı oluşturduktan sonra dışarıdan mesaj atabilmek için Settings sekmesinde Read (varsayılan olarak geliyor) olan erişim iznini Read and Write yapıyoruz. Daha sonra Details sekmesindeki altta bulunan Create my access token butonuna tıklayarak twitter hesabımıza erişim izni veren access token verimizi oluşturuyoruz.

Artık kodlarımızı yazmaya başlayabiliriz. Tweet'ler sayfa açıldığında listeleneceği için tweet'leri çekeceğimiz sayfanın Page_Load olayına aşağıdaki kodları yazıyoruz.

protected void Page_Load(object sender, EventArgs e)
{           
    var service = new TwitterService("consumerKey""consumerSecret"); //kendi consumer key ve consumer secret verilerinizi yazınız.
    service.AuthenticateWith("accessToken""accessTokenSecret"); //kendi access token ve access token secret verilerinizi yazınız.
    IEnumerable<TwitterStatus> tweets = service.ListTweetsOnUserTimeline(new ListTweetsOnUserTimelineOptions { Count = 5, ScreenName = "mhmtyylc" });
    //Count ile kaç adet tweet listeleyeceğimizi seçiyoruz.
    //ScreenName kısmına kendi twitter kullanıcı adımızı yazıyoruz.
    Repeater1.DataSource = tweets; //Repeater'ın veri kaynağı olarak tweet'leri gösterdik.
    Repeater1.DataBind(); //Repeater'a veri yüklemesini gerçekleştirdik.
}

Şimdi sayfanın ön tarafında neler yapacağımıza bakalım.

<ul class="tweets-feed">
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
    <li>
        <img src="<%# DataBinder.Eval(Container.DataItem,"User.ProfileImageUrl"%>" /> <!-- Profil resmimizi çekiyoruz. -->             
        <%# DataBinder.Eval(Container.DataItem,"Text"%> <!-- Tweet'imizi çekiyoruz. -->  
        <a class="timeago" href="//twitter.com/mhmtyylc/statuses/<%# DataBinder.Eval(Container.DataItem,"Id"%>"><%# DataBinder.Eval(Container.DataItem,"CreatedDate"%></a> <!-- Tweet tarihini çekiyoruz. -->  
    </li>
    </ItemTemplate>
</asp:Repeater>
</ul>

Projemizi çalıştırdığımızda ise ekran görüntüsü şu şekildedir.

Tweet Listesi

Güncelleme: Eğer hashtag'lere göre arayarak listeleme yapmak istiyorsanız aşağıdaki kod bloğu işinize yarayacaktır.

var service = new TwitterService("consumerKey""consumerSecret");
service.AuthenticateWith("accessToken""accessTokenSecret"); 
TwitterSearchResult tweets = service.Search(new SearchOptions { Count = 5, Q = "#Aranacak_Kelime"Lang = "tr" });
IEnumerable<TwitterStatus> status = tweets.Statuses;

Repeater1.DataSource = status;
Repeater1.DataBind();

YORUMLAR (16)

  1. Ahmet Aydeniz
    Ahmet Aydeniz
    tweets bende sürekli boş dönüyor nerede yanlıs yapıyor olabilirim
    • Mehmet YAYLACI
      Mehmet YAYLACI
      Repeater'a DataBind yapmamış olabilirsiniz.
      • Ahmet Aydeniz
        Ahmet Aydeniz

        Teşekkür ediyorum. Aslında ben masaüstü uygulaması yazmaya çalısıyordum o yüzden de repeater yerine datagrid kullanmıştım ama sorun onlarla ilgili değilmiş aynı sorunla karşılaşabilecek arkadaşlar içinde örnek olması için paylaşayım.

        TwitterService service = new TwitterService("---""---""---""---");

        Şeklinde yazmıştım fakat bu şekilde bir türlü çalıştıramadım.

        var service = new TwitterService("---""---");
        service.AuthenticateWith("---""---");

        Şeklindeye çevirince sorun düzeldi.

        Birde belirttigim bir adresin tüm tweetlerini favlamak istiyorum bunula ilgili bir çalısmanız war mı paylasabileceginiz. (Bu kısmın biraz yüzsüzlük oldugunun farkındayım tabiki kodları internette araştıracagım suan ama elinizde warsa buna yakın bişeyler paylaşırsanız sevinirim ilk defa apilerle uğrastıgım için araştıramlarım biraz uzun sürüyor)
        • Mehmet YAYLACI
          Mehmet YAYLACI
          O konu hakkında bir çalışmam yok maalesef. Ama internetten bulduğum Favourite Tweets using C# Tweetsharp yazısı başlangıç için size fikir verebilir. İyi çalışmalar.
  2. Günay
    Günay
    Merhabalar, Diyelimki benim elimde 10 tane tweet accountu var ve ben bunların son attığı tweetleri çekmek istiyorum. Yani tek bir kullanıcının değilde 10 kullancının birden son tweetlerini nasıl çekebilirim ?
    • Mehmet YAYLACI
      Mehmet YAYLACI
      Hepsi için ayrı ayrı TwitterService tanımlayabilirsiniz. Ayrı ayrı repeater oluşturarak yukarıdaki işlemleri her repeater için tekrarlayabilirsiniz.
      • Günay
        Günay
        Anladım. Peki benim yapmak istediğim şöyle birşey.
        tek bir sayfada bu 10 kullanıcınında attığı son tweetleri çekmeliyim. tek bir repeaterde yapamazmıyız yani ilk 10 tweet a kullanıcısına ait sonraki repeaterde 10 tweet b kullanıcısına ait değilde tarihe göre 1. tweet a kullanıcısının 2. tweet b kullanıcısının 3.tweet yine a kullanıcısının mesela ?
        • Mehmet YAYLACI
          Mehmet YAYLACI
          Bunun için bir List oluşturup tüm kullanıcıların tweetlerini bu List'te toplayabilirsiniz.
  3. erolsancaktutan
    erolsancaktutan
    Twitterda login olmadan istediğim kişinin tweetlerini nasıl çekebilirim?
    • Mehmet YAYLACI
      Mehmet YAYLACI
      Login olmadan kendinizin veya başkalarının bilgilerini çekemezsiniz. Bunun için twitter'da oluşturduğunuz uygulamanın api bilgileri ile oturum açmanız gerekiyor.
  4. Nida Aktan
    Nida Aktan
    Merhabalar, kendi belirlediğim hashtag'lere göre atılan tweetleri nasıl listeleyebilirim?
    • Mehmet YAYLACI
      Mehmet YAYLACI

      Şu şekilde yapabilirsiniz:

      var service = new TwitterService("consumerKey""consumerSecret");
      service.AuthenticateWith("accessToken""accessTokenSecret"); 
      TwitterSearchResult tweets = service.Search(new SearchOptions { Count = 5, Q = "#Aranacak_Kelime"Lang = "tr" });
      IEnumerable<TwitterStatus> status = tweets.Statuses;

      Repeater1.DataSource = status;
      Repeater1.DataBind();
  5. hüseyin
    hüseyin
    hocam merhaba benim şöyle bir sıkıntım var. Bende twitter hesapların id_numarası, twitter linki mevcut. Ama karşı tarafın hesabı kilitlenmiş veya twitti silmiş ..Benim bu twitti bulma şansım var mı? Gerçekten çok önemli. teşekkürler
    • Mehmet YAYLACI
      Mehmet YAYLACI
      API aracılığıyla çekilen verilerde böyle bir ihtimalin olduğunu düşünmüyorum. Çünkü o tweet erişilemez durumda olduğundan API ile de o veriyi çekemezsiniz.
  6. kemal
    kemal
    Merhaba; Birden fazla hashtag de arama yapmak için farklı servisler mi çalıştırma gerekiyor?
    • Mehmet YAYLACI
      Mehmet YAYLACI
      Merhaba. Bunun için birden fazla TwitterSearchResult nesnesi oluşturabilirsiniz.

YORUM FORMU