def post_tweet(msg): import model if len(msg) > 140: msg = msg[:139] + '…' msg = msg.encode('UTF-8') twitter = model.get_twitter() if twitter: POST_URL = 'https://api.twitter.com/1/statuses/update.json' params = get_oauth_params({ 'oauth_token': twitter.token, 'status': qt(msg) }, POST_URL, twitter.secret, '') del params['status'] try: res = urlfetch.fetch(url=POST_URL, payload=urlencode({'status': msg}), headers={'Authorization': 'OAuth ' + dict2qs(params)}, method='POST') if res.status_code == 200: return True logging.error('Access Twitter error.\nstatus_code: %s\nheaders: %s\nparams: %s' % (res.status_code, res.headers, params)) except: pass return False
def get_recent_tweets(count=RECENT_TWEETS): if TWITTER_CONSUMER_KEY and TWITTER_CONSUMER_SECRET: import model twitter = model.get_twitter() if twitter: try: res = urlfetch.fetch(url='https://api.twitter.com/1/statuses/user_timeline.json?screen_name=%s&count=%s&include_rts=1' % (twitter.name, RECENT_TWEETS)) if res.status_code == 200: contents = simplejson.loads(res.content) if contents: from email.utils import parsedate from calendar import timegm tweets = [{ 'text': content['text'], 'timestamp': timegm(parsedate(content['created_at'])) } for content in contents] result = (twitter.name, tweets) memcache.set('recent_tweets', result) return result except: pass