2016-03-24 10 views
0

私は問題なしでしばらくの間、Twitter Streaming APIを使用していましたが、最近はRESTを使用するように切り替わりました。Ruby on Rails - Twitter Gemで検索を繰り返す際の問題

私は#vietnamを使用してつぶやきの結果を繰り返し処理しようとしています。 reading the documentationの後、私はmax_idを使ってこれを行うべきです。ここで

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 

は、端末からの結果である:

----------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 

検索クエリでのジオコードは私の結果は場所によって制限されていないことを確認するために、ベトナムの中央〜100,000マイルの半径を持っています。問題は、2回目の反復では、結果は1つのツイートを返すだけで、最後の結果からmax_idが返されることです。

Twitterの高度な検索機能によって検証として、私は、英語で#vietnamとより341件のツイートはあり知って

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

私の反復法の何が問題になっているのですか?

答えて

1

TwitterのREST APIは、過去7日間の結果しか返しません。最後の週に#vietnamで341つのつぶやきしか作成できません。高度な検索にはさらに後からの結果があります。

あなたの方法は思わしくありません。過去1週間に何千回も使用されていた単純または一般的な用語で、あまり制限のない検索を試みて、結果がさらに出るかどうかを確認してください。

+0

私はそれがあなたを7日間前に制限したとは考えていませんでした。過去にさらに見えるものはありますか?私たちは歴史的な見解を探しています。 – CHawk

+1

@ CHawk私は恐らく検索ではない。特定のユーザーのつぶやきをさらに後に戻すことができますが、それはそれについてです。 Twitterは、ツイート履歴全体にアクセスすることについてかなり制限的です。もっと見ることができるようにする[いくつか](http://sifter.texifter.com/)[sites](https://gnip.com/historical/)がありますが、かなりコストがかかる傾向があります。つぶやきの作成を開始し、今後の履歴を構築することもできますが、それはおそらくそれほど有用ではないことに応じて行います。 – emma

+1

私はライブストリームを見ることができ、最後の数時間で100 +があったので、最後の7日間に#vietnamで341のつぶやきしかないということが奇妙に私を襲った。ところで、 'geocode:" 14.05832400,108.27719900,100000mi "'は、返されるジオコーディングが付いたつぶやきのみを返し、先週の341つのツイートにジオコーディングがあったようです。私が探していた結果ではありませんが、あなたは正しいです! +50 – CHawk

0

検索を2回別々に実行する理由はありますか?

最初の反復で最も低い(最も古い)ツイートIDを見つけて、2番目の反復(それが存在しない)よりも古い結果を検索しています。おそらく私は誤解したでしょうか?

+0

一度にすべてのつぶやきを得ることができれば、それは完璧ですが、それはtwitterが応答ごとの結果を制限することは私の理解です。したがって、私は結果を繰り返す必要があります。私は1回目の反復結果が1〜100回、2回目は101〜200回の結果を期待していました。 – CHawk

関連する問題