-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathroontwitter.py
86 lines (76 loc) · 2.55 KB
/
roontwitter.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
86
from slackbot.bot import listen_to
import re
import json
import urllib
import urllib2
from TwitterSearch import TwitterSearch, TwitterSearchOrder, TwitterUserOrder, TwitterSearchException
import twitter
from config import conf
ts = TwitterSearch(
consumer_key = conf['twitter']['consumer_key'],
consumer_secret = conf['twitter']['consumer_secret'],
access_token = conf['twitter']['access_token'],
access_token_secret = conf['twitter']['access_token_secret']
)
api = twitter.Api(
consumer_key = conf['twitter']['consumer_key'],
consumer_secret = conf['twitter']['consumer_secret'],
access_token_key = conf['twitter']['access_token'],
access_token_secret = conf['twitter']['access_token_secret']
)
@listen_to(r'^!tr(\s+.*)?')
def do_trends(msg, loc):
if loc:
loc = loc.strip()
if not loc:
loc = 'usa'
url = "http://where.yahooapis.com/v1/places.q('" + loc + "')?appid=" + conf['twitter']['yahoo_appid'];
content = urllib2.urlopen(url).read()
woeid = 1
m = re.search(r'<woeid>([^<]+)', content)
if m:
woeid = int(m.group(1).strip())
trends = api.GetTrendsWoeid(woeid)
names = []
for t in trends:
if ' ' in t.name:
names.append('"%s"' % t.name)
else:
names.append(t.name)
if len(names) > 9:
break
msg.send_webapi('', json.dumps([{
'fallback': " ".join(names),
'text': " ".join("<https://twitter.com/search?q=%s|%s>" % (n.replace('#', '%23'), n) for n in names)
}]))
@listen_to(r'^!t(u{1,3})\s+(.*)')
def do_user(msg, num, search):
try:
tuo = TwitterUserOrder(search)
i = 0
for tweet in ts.search_tweets_iterable(tuo):
msg.send('http://twitter.com/%s/status/%s' % (tweet['user']['screen_name'], tweet['id']))
i += 1
if i >= len(num):
break
except TwitterSearchException, e:
if e.code == 401:
msg.send('Timeline is private')
else:
raise e
@listen_to(r'^!t(s{1,3})\s+(.*)')
def do_search(msg, num, search):
tso = TwitterSearchOrder()
search = search.replace('&', '&')
tso.set_search_url('q=%s' % urllib.quote(search))
tso.set_language('en')
tso.set_include_entities(False)
tso.set_count(len(num))
tso.add_keyword('-RT')
tso.set_result_type('recent')
i = 0
for tweet in ts.search_tweets_iterable(tso):
msg.send('http://twitter.com/%s/status/%s' % (tweet['user']['screen_name'], tweet['id']))
i += 1
if i >= len(num):
break