Twitter, hesabı gizli olmayan bir kullanıcının son 3200 tweetini indirmemize izin veriyor. İlk önce bir Twitter kullanıcı hesabımız olmalı ve bu hesabımızın bilgilerine telefon numaramızı eklemeliyiz. Telefon numarası ekli değilse Twitter aşağıdaki adımları atmamıza izin vermeyecek. Bu hesabı kullanarak
https://apps.twitter.com/app/new
adresinden yeni bir “uygulama hesabı” açacağız. Bu uygulamanın ismi daha önce başkası tarafından kullanılmamış (biricik) olmalı.
Uygulamayı oluşturduktan sonra bize iki şey gerekiyor: Consumer Key (API Key) ve Consumer Secret (API Secret). Bunları uygulamanın giriş sayfasındaki “Keys and Access Tokens” sekmesinde bulabilirsiniz. Bu sifreler yaklaşık şu şekilde görünecek (aşağıdaki numaralar uydurmadır):
Consumer Key (API Key): 37hjgycjkn14fP8eP8rAqICzT
Consumer Secret (API Secret: ulryubYvzaeHKSrcrkyc89fjknxux7sbs6hoEeAksAz
Artık Python kullanarak istediğimiz kullanıcının (kullanıcının hesabı gizli değilse) tweetlerini indirebiliriz. Bunun için Python için hazırlanmış Twython kütüphanesini kullanacağız. Twython hakkında bilgiye şu adresten ulaşabilirsiniz:
https://twython.readthedocs.io/en/latest/
İlk önce aşağıdaki kodu kullanarak şifrelerimizi Twython’a tanıtacağız:
import twython
from twython import Twython
def initialize():
APP_KEY = 37hjgycjkn14fP8eP8rAqICzT'
APP_SECRET = 'ulryubYvzaeHKSrcrkyc89fjknxux7sbs6hoEeAksAz'
twitter = Twython(APP_KEY, APP_SECRET, oauth_version=2)
ACCESS_TOKEN = twitter.obtain_access_token()
return [APP_KEY, ACCESS_TOKEN]
[APP_KEY, ACCESS_TOKEN] = initialize()
twitter = Twython(APP_KEY, access_token=ACCESS_TOKEN
Şimdi ise kullanıcı ismini bildiğimiz herhangi bir kullanıcının (mesela @noamchomskyT) tweetlerini indirmeye başlayabiliriz:
user_timeline = []
user_name = “noamchomskyT”
user_timeline = twitter.get_user_timeline(screen_name = user_name, count = 100)
Twitter’dan tek seferde en fazla 100 tweet isteyebiliyoruz. Yukarıdaki kod bize kullanıcının son 100 tweetini verecektir. Twitter toplamda aynı kullanıcının en fazla son 3200 tweetini veriyor. Bu kodu bir defa daha çalıştırırsak yine aynı 100 tweeti alacağız. Bunun yerine kullanıcının sıradaki 100 tweetini almak üzere son tweetin “id” numarasından daha küçük numaralı tweetleri isteyeceğiz. Aşağıdaki döngü ile maksimum sayıda tweeti alabiliriz:
a = []
user_timeline = twitter.get_user_timeline(screen_name = user_name, count = 100)
a = user_timeline
if len(a) == 0:
print "Could not be reach the timeline of", user_name
maxid = a[len(a)-1]['id']
for i in range(0, 33):
user_timeline = twitter.get_user_timeline(screen_name = user_name, max_id = maxid, count = 100)
a += user_timeline
maxid = str(int(a[len(a)-1]['id']) - 1)
Yukarıdaki tweetler JSON formatında geliyor. Tweetlerin içeriği için şu adrese bakabilirsiniz:
https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/tweet-object