cleanup twitter plugin
This commit is contained in:
parent
f3c034df2e
commit
4bc268f5a4
|
@ -1,21 +1,19 @@
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
from time import strptime, strftime
|
from time import strptime, strftime
|
||||||
|
from xml.sax.saxutils import unescape
|
||||||
|
|
||||||
from util import hook, http
|
from util import hook, http
|
||||||
|
|
||||||
|
|
||||||
|
@hook.api_key('twitter')
|
||||||
@hook.command
|
@hook.command
|
||||||
def twitter(inp, bot=None):
|
def twitter(inp, api_key=None):
|
||||||
".twitter <user>/<id> -- get <user>'s last tweet/get tweet <id>"
|
".twitter <user>/<id> -- get <user>'s last tweet/get tweet <id>"
|
||||||
|
|
||||||
api_keys = {}
|
if not isinstance(api_key, dict) or any(key not in api_key for key in
|
||||||
api_keys['consumer'] = bot.config.get("api_keys", {}).get("twitter_consumer", None)
|
('consumer', 'consumer_secret', 'access', 'access_secret')):
|
||||||
api_keys['consumer_secret'] = bot.config.get("api_keys", {}).get("twitter_consumer_secret", None)
|
return "error: api keys not set"
|
||||||
api_keys['access'] = bot.config.get("api_keys", {}).get("twitter_access", None)
|
|
||||||
api_keys['access_secret'] = bot.config.get("api_keys", {}).get("twitter_access_secret", None)
|
|
||||||
|
|
||||||
for k in api_keys:
|
|
||||||
if api_keys[k] is None:
|
|
||||||
return "error: api keys not set"
|
|
||||||
|
|
||||||
getting_id = False
|
getting_id = False
|
||||||
|
|
||||||
|
@ -24,9 +22,9 @@ def twitter(inp, bot=None):
|
||||||
request_url = "https://api.twitter.com/1.1/statuses/show.json?id=%s" % inp
|
request_url = "https://api.twitter.com/1.1/statuses/show.json?id=%s" % inp
|
||||||
else:
|
else:
|
||||||
request_url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=%s" % inp
|
request_url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=%s" % inp
|
||||||
|
|
||||||
try:
|
try:
|
||||||
tweet = http.get_json(request_url, oauth=True, oauth_keys=api_keys)
|
tweet = http.get_json(request_url, oauth=True, oauth_keys=api_key)
|
||||||
except http.HTTPError, e:
|
except http.HTTPError, e:
|
||||||
errors = {400: 'bad request (ratelimited?)',
|
errors = {400: 'bad request (ratelimited?)',
|
||||||
401: 'unauthorized',
|
401: 'unauthorized',
|
||||||
|
@ -42,17 +40,14 @@ def twitter(inp, bot=None):
|
||||||
return 'error: ' + errors[e.code]
|
return 'error: ' + errors[e.code]
|
||||||
return 'error: unknown %s' % e.code
|
return 'error: unknown %s' % e.code
|
||||||
|
|
||||||
if getting_id:
|
if not getting_id:
|
||||||
text = tweet["text"]
|
tweet = tweet[0]
|
||||||
screen_name = tweet["user"]["screen_name"]
|
|
||||||
time = tweet["created_at"]
|
text = tweet["text"]
|
||||||
else:
|
screen_name = tweet["user"]["screen_name"]
|
||||||
text = tweet[0]["text"]
|
time = tweet["created_at"]
|
||||||
screen_name = tweet[0]["user"]["screen_name"]
|
|
||||||
time = tweet[0]["created_at"]
|
text = unescape(text, {''': "'", """: '"'})
|
||||||
|
|
||||||
text = text.replace('>', '>').replace('<', '<').replace(''',"'").replace('"e;', '"').replace('&', '&')
|
|
||||||
time = strftime('%Y-%m-%d %H:%M:%S', strptime(time, '%a %b %d %H:%M:%S +0000 %Y'))
|
time = strftime('%Y-%m-%d %H:%M:%S', strptime(time, '%a %b %d %H:%M:%S +0000 %Y'))
|
||||||
|
|
||||||
return "%s %s: %s" % (time, screen_name, text)
|
return "%s %s: %s" % (time, screen_name, text)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue