2011-01-08 10 views
2

私は、ユーザーが自分のつぶやきで最も多く言及しているユーザーを見つける方法を見つけようとしています。Twitter APIから最も人気のあるコメントを見つける方法

つまり、私が絶えず返答した人や言及した人がいたら、それを見つけ出す最良の方法は何でしょうか?

私はこのプロジェクトにRailsとTwitterの宝石を使用しています。 最新の200のつぶやきを返すことができ、動作するかもしれない何らかのクエリを実行できれば、どんな種類のクエリを実行するのか分からない。

どのようにこれを解決するための任意のアイデアは高く評価されます。あなたはuser_timelineからsingle unauthenticated API呼び出しで任意の非保護のユーザーのツイートを取得することができます

答えて

1

Twitterの宝石は、@を抽出する方法を持つ単一のツイートから言及しない限り、あなただけの言及のユーザーのツイートのすべての上に、配列を取得することを

"haha @foo @bar sdasda".split.select { |t| t.start_with? '@' } #=> ["@foo", "@bar"] 

地図のようなものでそれらを得ることができますそれらを数えます。

編集あなたのコメントからの質問に答えるために:すべてのツイートを超える

>> tweets = ["haha @foo @bar sdasda", "lalal @foo", "@bar @foo"] #=> ["haha @foo @bar sdasda", "lalal @foo", "@bar @foo"] 
>> tweets.map do |t| 
>> t.split.select { |t| t.start_with? '@' } 
>> end.flatten.group_by { |e| e }.values.max_by(&:size).first #=> "@foo" 

だから、基本的にあなたmapを、@を抽出することに言及しています。次にすべての配列を一緒にjoinし、最も一般的な要素を探します。

+0

マイケルに感謝します。だから私はユーザーに最新の200のつぶやきを得たと言うことができます。これらのすべてを1つの文字列に入れて、その文字列を上記のコードで分割すると、すべての@mentionsの配列が得られます。その配列から最も人気のあるものをどのように抽出するのですか? (私はちょっとした騒ぎだから、もし私が私の運を助けてくれるなら、ここで私は謝ります) – Lee

+0

私は私の答えを編集して概要を説明します。 –

+0

これは素晴らしく、Michaelに感謝しています。私はこれを尋ねることさえ愚かな気がするが、コントローラでこれを実行している場合、最終結果(@foo)を変数に設定して保存するにはどうすればよいですか? – Lee

1

:そこから

http://api.twitter.com/1/statuses/user_timeline.json?screen_name=SCREENNAME&count=200

、あなただけ(返されたJSON/XMLのボディを解析します(textフィールド内の)つぶやきの内容の@題のためのあなたの好みに応じて)。

+0

ycありがとうございます。私はすべてのつぶやきを解析したらどのような計算をする必要があるのか​​分かりません。 – Lee

+0

@Lee Rubyについてはわかりませんが、Michael Kohlの提案に従って、ストリーム内の@memionsのすべての配列を作成すると、Mode値を見つける必要があります。これはおそらくこれで行うことができます:http://stackoverflow.com/questions/412169 – Yahel

関連する問題