-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtwitter.py
More file actions
75 lines (57 loc) · 2.14 KB
/
Copy pathtwitter.py
File metadata and controls
75 lines (57 loc) · 2.14 KB
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
from html.parser import HTMLParser
from twitter import Twitter, OAuth
import plugin
defaults = {
'twitter_oath': {'token': '',
'token_secret': '',
'consumer_key': '',
'consumer_secret': ''}
}
class Plugin(plugin.Plugin):
shelf_required = True
def postfork(self):
self.tw_api = Twitter(auth=OAuth(**self.conf['twitter_oath']))
self.parser = HTMLParser()
def register_commands(self):
self.commands = [
('twitter <<query>>', self.query),
('set twitter <screen_name>', self.set_user),
('twitter', self.self),
]
def query(self, message, args):
"""
Get the latest tweet from a user or search with either a hashtag or a
multi-word search string.
"""
query = args['query']
if query.startswith('#') or ' ' in query:
tweet = self.tw_api.search.tweets(q=query)['statuses'][0]
else:
screen_name = self.shelf.get(query.lower(), query.lower())
tweet = self.tw_api.statuses.user_timeline(
screen_name=screen_name)[0]
self.send_tweet(message, tweet)
def send_tweet(self, message, tweet):
self.send_struc(message.source,
(self.parser.unescape(tweet['text']),
'http://twitter.com/%s/status/%s'
% (tweet['user']['screen_name'],
tweet['id_str']))
)
def set_user(self, message, args):
"""
Tell <pyfoot> who you are.
"""
name = args['screen_name']
self.tw_api.users.show(screen_name=name) # will error if not a user
self.shelf[message.nick.lower()] = name
self.shelf.sync()
self.send_struc(message.source,
('\x02%s\x02 is now Twitter user \x02%s\x02'
% (message.nick, name),
'http://twitter.com/%s' % name))
def self(self, message, args):
"""
Get your latest tweet.
"""
self.query(message, {'query': message.nick})