2011-01-08 4 views
2

나는 사용자가 자신의 트윗에서 가장 많이 언급 한 사람을 찾는 방법을 찾으려고합니다.트위터 API에서 가장 인기있는 사용자를 찾는 방법

즉 내가 계속 대답하거나 언급 한 사람이 있다면 그 사람을 찾는 가장 좋은 방법은 무엇일까요?

저는이 프로젝트에 Rails와 Twitter 젬을 사용하고 있습니다. 가장 최근의 200 개의 트윗을 반환하고 작동 할 수있는 일종의 쿼리를 실행할 수 있다면 어떤 종류의 쿼리를 실행할 지 모르겠습니다.

모든 아이디어를 해결하는 방법에 많은 감사하겠습니다.

당신은 user_timelinesingle unauthenticated API 호출이 아닌 보호 사용자에게 트윗을 얻을 수

답변

1

트위터 보석 @ 추출하는 방법이 하나의 트윗에서 언급하지 않는 한, 당신은 언급의 사용자의 트윗의 모든 이상, 배열을 얻을

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

지도 같은 것을 함께 그들을 얻을 수 그런 다음 계산하십시오.

편집 귀하의 코멘트에서 질문에 대답합니다 : 그래서 기본적으로 모든 트윗이 지남에 @를 추출하는 언급 map

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

합니다. 그런 다음 모든 배열을 함께 join 만들고 가장 공통적 인 요소를 찾으십시오.

+0

감사합니다. Michael. 따라서 사용자에게 최신 트윗 200 개가 있다고 가정 해 보겠습니다. 이 모든 것을 하나의 문자열에 넣은 다음 위의 코드로 문자열을 분할하면 모든 @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의 제안을 따르고 스트림에서 @ 멘션의 배열을 만들면 Mode 값을 찾아야한다. : http://stackoverflow.com/questions/412169 – Yahel

관련 문제