コード例 #1
0
ファイル: TwitterClient.py プロジェクト: ling0322/troubadour
    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
                )       
コード例 #2
0
ファイル: QQClient.py プロジェクト: ling0322/troubadour
    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',
                )       
コード例 #3
0
ファイル: TwitterClient.py プロジェクト: ling0322/troubadour
    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 ~')