Esempio n. 1
0
  def post(self):
    # New user has joined in. Follow him and post a welcome message
    try:
      sms_client = OAuthClient('twitter', self)
      sms_client.token = OAuthAccessToken.all().filter(
                'specifier =', 'smstweetin').filter(
                'service =', 'twitter').fetch(1)[0]

      user = self.request.get('screen_name')
      count = int(self.request.get('count'))
      info = sms_client.post('/friendships/create', 'POST', (200,401,403), screen_name=user)  # TODO : this may fail, try three times 
      # Stop sending the follow status
      #status = "@%s has started using SMSTweet. Welcome %s to the group and tell about us to your friends" % (user, user)
      #info = sms_client.post('/statuses/update', 'POST', (200,401), status=status)  # TODO : this may fail, try three times 

      sms_client.token = OAuthAccessToken.all().filter(
                'specifier =', user).filter(
                'service =', 'twitter').fetch(1)[0]
      info = sms_client.post('/friendships/create', 'POST', (200,401,403), screen_name='smstweetin')  # TODO : this may fail, try three times 

    except (urlfetch.DownloadError, ValueError, Timeout), e:
      logging.warning("SmsTweetin:Friendship/create failed (%d) %s" % (count,e))
      if count > 10:
        logging.error("SmsTweetin:Friendship/create Finally giving up")
      else:
        # Try again
        taskqueue.add(url = '/tasks/follow_new_user', params = { 'screen_name' : user, 'count' : count + 1 })
Esempio n. 2
0
    def TweetHandler(self):
        """tweeting
        does not tweet from localhost"""
        self.response.out.write('<br/><br/>Tweeting<br/>')
        self.response.out.write('this info will be tweeted:<br/>')
        # oldest non-tweeted and prepared
        oldest_changeset = Changeset.all().order('created_at').filter('is_tweeted =', False).filter('is_prepared =', True).fetch(1)
        if not oldest_changeset:
            self.response.out.write('nothing to tweet')
            return
        else:
            c = oldest_changeset[0]
        
        config = get_config()

        # do not tweet from localhost
        if not 'localhost' in self.request.url:
            auth = tweepy.OAuthHandler(config["consumer_key"], config["consumer_secret"])
            auth_data = OAuthAccessToken.all().filter('specifier =', config["twitter_username"]).fetch(1)[0]
            auth.set_access_token(auth_data.oauth_token, auth_data.oauth_token_secret)
            self.response.out.write('<br/>tweeting with oauth:<br/>')
            api = tweepy.API(auth)
            self.response.out.write("id: %d" % c.id)
            self.response.out.write("user: %s" % c.user)
            self.response.out.write("comment: %s" % c.comment)
            self.response.out.write("tweet: %s" % c.tweet)
            try:
                api.update_status(c.tweet)
            except tweepy.error.TweepError, e: 
                self.response.out.write( 'failed: %s' % e.reason )
                if "Status is a duplicate" in e.reason:
                    c.is_tweeted = True
                    c.put()
                return
 def get(self):
     verifier = self.request.get("oauth_verifier", "")
     oauth_token = self.request.get("oauth_token", "")
     auth_client = _oauth(self)
     request_token = OAuthRequestToken.all().filter('oauth_token =', oauth_token).filter('service =', SERVICE).fetch(1)[0]
     auth_client.set_request_token(request_token.oauth_token, request_token.oauth_token_secret)
     access_token = auth_client.get_access_token(verifier)
     key_name = create_uuid()
     username = auth_client.get_username()
     old = OAuthAccessToken.all().filter(
             'specifier =', username).filter(
             'service =', SERVICE)
     if old.count() > 0:
         db.delete(old)
     OAuthAccessToken(key_name=key_name, service=SERVICE, oauth_token = access_token.key, oauth_token_secret = access_token.secret, specifier = username).put()         
     auth_client.set_cookie(key_name)
     #self.response.out.write(username)
     self.redirect("/oauth/weibo/newuser")
def _oauth(handler = None):
    """获取oauth认证类"""
    auth_client = WebOAuthHandler(OAUTH_APP_SETTINGS['weibo']['consumer_key'], OAUTH_APP_SETTINGS['weibo']['consumer_secret'], handler = handler)
    if handler:
        if auth_client.get_cookie():
            access_token = OAuthAccessToken.get_by_key_name(auth_client.get_cookie())
            if access_token:
                auth_client.setToken(access_token.oauth_token, access_token.oauth_token_secret)
    return auth_client
def update_weibo(gruser, message):
    access_token = OAuthAccessToken.all().filter("specifier = ",gruser.username).fetch(1)[0]
    auth_client = _oauth()
    auth_client.setToken(access_token.oauth_token, access_token.oauth_token_secret)
    api = API(auth_client, source = "Reader2微博")
    api.update_status(message)