2016-03-24 7 views
0

Twitter Streaming API'sini bir süredir sorunsuz kullanıyorum, ancak yakın zamanda REST'i kullanmaya başladım ve biraz kafam karıştı.Ruby on Rails - Twitter'da Yineleme ile İlgili Sorunlar Gem Arama Sonuçları

#vietnam kullanarak tweets sonuçlarını yinelemeye çalışıyorum. reading the documentation'dan sonra, bunu max_id kullanarak yapmalıyım. İşte

max_id = 70978401017678643100000000000000 #very big number to start out with 
i = 1 
2.times do 
    puts '----------SEARCHING WITH MAX_ID: ' + max_id.to_s 
    $twitter.search('#vietnam', result_type: "recent", lang: 'en', geocode: "14.05832400,108.27719900,100000mi", count: 100, max_id: max_id).each do |tweet| 
    puts "#{i} - tweet.id: " + tweet.id.to_s 
    i += 1 
    max_id = tweet.id if tweet.id < max_id 
    end 
end 

terminalden sonuçları şunlardır:

----------SEARCHING WITH MAX_ID: 70978401017678643100000000000000 
1 - tweet.id: 713034427027361794 
2 - tweet.id: 713030624164982785 
3 - tweet.id: 713027195015413760 
4 - tweet.id: 713022173246582784 
5 - tweet.id: 713021690989641728 
6 - tweet.id: 713013561396764672 
7 - tweet.id: 713010847166177280 
8 - tweet.id: 712997640930197505 
... 
341 - tweet.id: 709784010176786432 
----------SEARCHING WITH MAX_ID: 709784010176786432 
342 - tweet.id: 709784010176786432 

arama sorgusunda coğrafi kod benim sonuçlar konuma göre sınırlı olmamak sağlamak için Vietnam'dan merkezine 100,000 mil yarıçapı . Sorun, ikinci iterasyonda sonuçların sadece 1 tweet, son sonuçtaki max_id değerini döndürmesidir.

Twitter'ın gelişmiş arama işlevselliği ile doğrulandı olarak, İngilizce #vietnam daha 341 tweet vardır biliyor

: https://twitter.com/search-advanced?lang=en

benim yineleme tekniği ile sorun nedir?

cevap

1

Twitter'ın REST API'sı sadece son 7 günün sonuçlarını döndürür, bu sadece geçen hafta #vietnam ile 341 tweet yapılabilir. Gelişmiş arama, daha ileri geri sonuçlara sahiptir.

Yönteminiz ses gibi görünüyor, geçen hafta içinde binlerce kez kullanılan basit veya popüler bir terimle daha az kısıtlayıcı bir arama yapmayı deneyin ve daha fazla sonuç elde edip edemeyeceğinizi öğrenin.

+0

Sizi 7 gün öncesine sınırladığına dair hiçbir fikrim yoktu. Geçmişte daha fazla bakmak için var mı? Tarihsel bir görünüm arıyoruz. – CHawk

+1

@CHawk Korkarım ki, en azından arama ile değil. Belirli kullanıcı tweet'lerini daha ileri geri alabilirsiniz, ancak bu konuyla ilgili. Twitter, tweet tarihinin tümüne erişim hakkında oldukça kısıtlayıcıdır. Daha geriye bakmanıza izin veren [bazı] (http://sifter.texifter.com/) [siteler] (https://gnip.com/historical/) vardır, ancak oldukça maliyetli olma eğilimindedirler. Şimdi tweet'leri derlemeye başlayabilir ve ileriye doğru bir geçmişe sahip olabilirsiniz, ancak istediğiniz şeye bağlı olarak muhtemelen çok yararlı olmaz. – emma

+1

Son 7 günde sadece canlı tirajı izleyebildiğim ve son birkaç saat içinde 100'den fazla kişi olduğu için #vietnam ile 341 tweet olacak diye beni şaşırtmıştı. NASIL, 'geocode:' 14.05832400,108.27719900,100000mi '', yalnızca bir jeocoding eklenmiş olan tweet'lere neden oldu ve geçen haftada sadece 341 tweet çıktı. Aradığım sonuçlar değil, ama siz haklısınız! 50 – CHawk

0

Arama'yı iki kez gerçekleştirmenin bir nedeni var mı?

İlk yinelemede en düşük (en eski) tweet kimliğini buluyorsunuz ve ikinci yinelemede (var olmayan) daha eski sonuçları arıyorsunuz. Belki yanlış anladım?

+0

Tüm tweet'leri bir kerede alabilseydim, bu mükemmel olurdu, ancak benim twitter'in yanıt başına sonuçları sınırlandırması benim anlayışım. Bu nedenle, sonuçların üzerinden yinelemek zorunda kalacağım. İlk iterasyonun 1-100 sonuçlarını almayı bekledim ve sonuç 101-200 saniye ... vs – CHawk