1. Twitter API 찾기.
특정 Tweet을 Retweet 한사람을 조회 하는 API
https://dev.twitter.com/docs/api/1/get/statuses/%3Aid/retweeted_by
/statuses/:id/retweeted_by
* 주의 할점은 한번에 100명 까지만 조회 하기 때문에, parameter 중에 page 를 이용하여 추가 조회를 해야합니다.
2. Python 에서 Twitter API 호출하여, 20명 추출하기.
제가 분석할 tweet의 id 가 '194985314832490496' 임으로 호출 url 은 아래와 같이 됩니다.
https://api.twitter.com/1/statuses/194985314832490496/retweeted_by.json
해당 json 은 Dictionary 의 array 로 되어 있습니다. 제가 필요 한건 리트윗 하신분의 id 임으로 'screen_name' 속성만 가져오면 될것 같습니다.
아래는 'Visual JSON'이라는 어플로 호출해본 결과 입니다.
# -*- coding:utf-8 -*- import httplib import urllib import csv import codecs import json import random tweet_id='194985314832490496' def getJson(page): conn = httplib.HTTPConnection('api.twitter.com') conn.request("GET","/1/statuses/%s/retweeted_by.json?count=100&page=%s"%(tweet_id,page)) response = conn.getresponse() data = response.read() encoding=response.getheader('content-type').split('charset=')[-1] conn.close() jsonData = json.loads(data) return jsonData if __name__=='__main__': entries = [] page=1 while(1) : jsonData = getJson(page) for jsonItem in jsonData : entries.append(jsonItem['screen_name']) if len(jsonData) < 100: break random.shuffle(entries) winners = entries[0:20] print winners
위의 코드는 해당 tweet의 screen_name 목록을 만들고 shuffle을 한후, 상위 20명만을 뽑아내는 코드 입니다.