2013-06-26 68 views
1

Twitter v1 API現已停用,因此我一直試圖使用搜索和流式API來整理hashtag信息。搜索API的速度是有限的,所以如果標籤上有很多條目,你可能會錯過一些。流式傳輸似乎是要走的路。將Python和OAuth2與Twitter流媒體API結合使用

使用的OAuth2這裏是我的(匿名)代碼:

import oauth2 as oauth 
import json 

consumer_key = "<consumer key from twitter developer site>" 
consumer_secret = "<consumer secret>" 
oauth_token = "<access token>" 
oauth_token_secret = "<access token secret>" 
consumer = oauth.Consumer(key=consumer_key, secret=consumer_secret) 
access_token = oauth.Token(key=oauth_token, secret=oauth_token_secret) 
client = oauth.Client(consumer, access_token) 

terms = json.dumps({'track' : 'twitter'}) 
stream_endpoint = "https://stream.twitter.com/1.1/statuses/filter.json" 
response, data = client.request(stream_endpoint,"POST", body=terms, headers={'Content-Type':'application/json'}) 

我遇到的問題是,這個總是返回以下消息:

>>>'No filter parameters found. Expect at least one parameter: follow track locations\r\n' 

回答

0

,我認爲你的錯誤是becouse使用JSON數據on

terms = json.dumps({'track' : 'twitter'}) 

你應該這樣寫你的代碼

terms = 'track=twitter' 
+0

你有這個工作成功嗎?我已經讓這段代碼運行了30分鐘,並沒有得到迴應。 – Zemogle

0
USER = request.params.get('username', '00000') 
    LIMIT = request.params.get('limit', '50') 
    REQUEST_TOKEN_URL = 'https://api.twitter.com/oauth/request_token' 
    consumer_key ='424245wfdsfa4'  
    consumer_secret ='afar234252523adsasd' 

    if consumer_key is None or consumer_secret is None: 
     print 'you need consumer_key & consumer_secret key' 
     sys.exit(1) 

    signature_method_hmac_sha1 = oauth.SignatureMethod_HMAC_SHA1() 
    oauth_consumer    = oauth.Consumer(key=consumer_key, secret=consumer_secret) 
    oauth_client    = oauth.Client(oauth_consumer) 


    response, content = oauth_client.request(REQUEST_TOKEN_URL, 'POST') 

    if response['status'] == '200': 
     request_token = dict(parse_qsl(content)) 
    else: 
     print 'Invalid response from Twitter requesting token.........: %s' % response['status'] 

    endpoint = 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=' + USER + '&count=' + LIMIT 
    response, content = oauth_client.request(endpoint, 'GET') 
    url = response['content-location'] 
    f = urllib2.urlopen(url) 
    response = f.read() 
    return simplejson.loads(response)