2017-10-30 10 views
1

私はtwitterの感情分析ツールを構築しようとしており、NYCの10マイル以内につぶやきを探すジオロケーションを追加したいと考えています。これはどうすればいいですか?私はURLの最後に位置を追加しようとしましたが、うまく機能しませんでした。ここでTwitterの感情分析に場所を追加する

は、私がこれまで持っているコードです:ここでは

import oauth2 as oauth 
import urllib2 as urllib 

# See assignment1.html instructions or README for how to get these credentials 

api_key = '' 
api_secret = '' 
access_token_key = ' 
access_token_secret = '' 

_debug = 0 

oauth_token = oauth.Token(key=access_token_key, secret=access_token_secret) 
oauth_consumer = oauth.Consumer(key=api_key, secret=api_secret) 

signature_method_hmac_sha1 = oauth.SignatureMethod_HMAC_SHA1() 

http_method = "GET" 


http_handler = urllib.HTTPHandler(debuglevel=_debug) 
https_handler = urllib.HTTPSHandler(debuglevel=_debug) 

''' 
Construct, sign, and open a twitter request 
using the hard-coded credentials above. 
''' 
def twitterreq(url, method, parameters): 
    req = oauth.Request.from_consumer_and_token(oauth_consumer, 
              token=oauth_token, 
              http_method=http_method, 
              http_url=url, 
              parameters=parameters) 

    req.sign_request(signature_method_hmac_sha1, oauth_consumer, oauth_token) 

    headers = req.to_header() 

    if http_method == "POST": 
    encoded_post_data = req.to_postdata() 
    else: 
    encoded_post_data = None 
    url = req.to_url() 

    opener = urllib.OpenerDirector() 
    opener.add_handler(http_handler) 
    opener.add_handler(https_handler) 

    response = opener.open(url, encoded_post_data) 

    return response 

def fetchsamples(): 

    url = "https://stream.twitter.com/1.1/statuses/filter.json? 
    track=money&locations" 
    parameters = [] 
    response = twitterreq(url, "GET", parameters) 
    for line in response: 
    print(line.strip()) 

if __name__ == '__main__': 
    fetchsamples() 

答えて

1

はAPIドキュメントです:https://developer.twitter.com/en/docs/tweets/filter-realtime/api-reference/post-statuses-filter.html

statuses/filterは得られない、POSTを使用しています。

NYCのつぶやきでは、 "locations = -74,40、-73,41"を使用します。しかし、trackと一緒に使用すると、2つのフィルターがORされます(NYCの周りで10マイルになるようにするには、この境界ボックスを拡張する必要があります)。つまり、locationsフィルタまたはtrackフィルタのいずれかと一致するつぶやきが得られます。両方のフィルタにマッチするつぶやきしか得られません。

EDIT

url = "https://stream.twitter.com/1.1/statuses/filter.json?track=money&locations=-74,40,-73,41" 
parameters = [] 
response = twitterreq(url, "POST", parameters) 
+0

ジョナス、応答に感謝します。私のコードでどこを修正すべきか教えてください。ありがとう。 – algorythms

+1

私は答えを – Jonas

+0

にいくつかのコードを追加しました。特定のラットのペアの検索の半径を制限する方法はありますか? – algorythms

関連する問題