-
Notifications
You must be signed in to change notification settings - Fork 0
/
ts27.py
executable file
·87 lines (61 loc) · 2.46 KB
/
ts27.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys) # Reload does the trick!
sys.setdefaultencoding('UTF-8')
import oauth2 as oauth
import urllib2 as urllib
import json
import time
access_token_key = "1318925832-wBgtUwAvCMV33RWpw8wjDX8vhRSUiDgtP6whrFG"
access_token_secret = "fNM9CqppSJOeOzXN210uNRrZMrJexfpA5fPtAvZI9sQ"
column_delimiter = ";"
row_delimiter = "##|##"
consumer_key = "8RcGKsxLqGtaL4pqHBRAw"
consumer_secret = "KDTdw4wLX3Vx6dnxQTlYxm2GZt2SuimyOrI1KKrNo"
_debug = 0
oauth_token = oauth.Token(key=access_token_key, secret=access_token_secret)
oauth_consumer = oauth.Consumer(key=consumer_key, secret=consumer_secret)
signature_method_hmac_sha1 = oauth.SignatureMethod_HMAC_SHA1()
http_method = "GET"
http_handler = urllib.HTTPHandler(debuglevel=_debug)
https_handler = urllib.HTTPSHandler(debuglevel=_debug)
def twitterreq(url, method, parameters):
"""
Construct, sign, and open a twitter request
using the hard-coded credentials above.
"""
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"
# keywords = 'путин OR обама'
parameters = {"track" : 'я,ты'} #.encode('utf-8')
# print parameters
response = twitterreq(url, "POST", parameters)
for line in response:
# the question is is there a single tweet in each response, if doesnt does this function extract each tweet
tweetjsonData = json.loads(line)
# print tweetjsonData
text = tweetjsonData["text"]
text = text.replace('\n', '-newline-')
date = tweetjsonData["created_at"]
ts = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(date,'%a %b %d %H:%M:%S +0000 %Y'))
sys.stdout.write(column_delimiter.join((ts, text)) + row_delimiter)
if __name__ == '__main__':
fetchsamples()