def post(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('twitter', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'update': # tweet status = tornado.escape.url_unescape(self.get_argument('status').encode('utf-8')) def on_fetch(tweets): if tweets == None: raise tornado.httpclient.HTTPError(403) self.write('Done ~') self.finish() # 将多于140个字符的部分截去 if len(status) > 140: text = status[:136] + '...' else: text = status # 如果有in_reply_to参数则带上这个参数ww in_reply_to_param = {} if self.get_argument('in_reply_to', None): in_reply_to_param['in_reply_to_status_id'] = self.get_argument('in_reply_to', None) self.twitter_request( path = "/statuses/update", post_args={"status": text}, access_token = {u'secret': secret, u'key': key}, callback = on_fetch, **in_reply_to_param )
def post(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('qq', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'update': # tweet status = tornado.escape.url_unescape(self.get_argument('status').encode('utf-8')) def on_fetch(tweets): self.write('Done ~') self.finish() # 将多于140个字符的部分截去 if len(status) > 140: text = status[:136] + '...' else: text = status # 如果有in_reply_to参数则带上这个参数ww in_reply_to_param = {} if self.get_argument('in_reply_to', None): in_reply_to_param['in_reply_to_status_id'] = self.get_argument('in_reply_to', None) self.qq_request( path = "/t/add", post_args={"content": text}, access_token = {u'secret': secret, u'key': key}, clientip = '202.120.161.232', # 这里需要伪造一个用户IP callback = on_fetch, format = 'json', )
def get(self, request): db = DB() try: access_token = tornado.escape.json_decode( db.get_api_access_token('twitter', self.get_argument('access_token')) ) except: raise tornado.web.HTTPError(403) secret = access_token['secret'] key = access_token['key'] if request == 'home_timeline': # get home timeline kwargs = {} if self.get_argument('since_id', None): kwargs['since_id'] = self.get_argument('since_id', None) if self.get_argument('page', None): kwargs['page'] = self.get_argument('page', None) self.twitter_request( path = "/statuses/home_timeline", access_token = {u'secret': secret, u'key': key}, callback = self._on_fetch, count = 50, **kwargs ) elif request == 'mentions': # 得到mention一个用户的Tweet self.twitter_request( path = "/statuses/mentions", page = self.get_argument('page', 1), access_token = {u'secret': secret, u'key': key}, callback = self._on_fetch, count = 50, ) elif request == 'show': #得到某个特定id的Tweet self.twitter_request( path = "/statuses/show/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, callback = self.async_callback(self._on_fetch, single_tweet = True), ) elif request == 'related_results': #得到某个特定id的Tweet相关的结果 self.twitter_request( path = "/related_results/show/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, callback = self._on_related_results, ) elif request == 'user_info': # 得到某个用户的信息 self.twitter_request( path = "/users/show", access_token = {u'secret': secret, u'key': key}, callback = self._on_user_info, screen_name = self.get_argument('screen_name') ) elif request == 'remove': # 删除某个Tweet def on_fetch(tweet): pass self.twitter_request( path = "/statuses/destroy/" + str(self.get_argument('id')), access_token = {u'secret': secret, u'key': key}, post_args = {}, callback = None, ) elif request == 'user_timeline': # 得到某用户的Timeline self.twitter_request( path = "/statuses/user_timeline", access_token = {u'secret': secret, u'key': key}, page = self.get_argument('page', 1), screen_name = self.get_argument('screen_name'), callback = self._on_fetch, ) elif request == 'test': self.write('喵~') self.finish() elif request == 'signout': db = DB() if False == db.remove_api_access_token('twitter', self.get_argument('access_token')): raise tornado.web.HTTPError(403) self.finish() else: raise tornado.httpclient.HTTPError(403, 'Invaild Request Path ~')