Ejemplo n.º 1
0
  def get(self):
    user = users.get_current_user()
    if user:
      # get token and secret from db      
      p_users = db.GqlQuery("SELECT * FROM USER WHERE google_username = :gu LIMIT 1", gu = user.nickname())
      
      if p_users.count() >= 1:
        for p_user in p_users:
          if p_user:
            self.response.out.write(p_user.google_username)
            
            auth = tweepy.OAuthHandler(config.twitter_consumer_token(), config.twitter_consumer_secret())
            #auth.set_request_token(dbauth.token_key, dbauth.token_secret)
            auth.set_access_token(p_user.twitter_oauth_key, p_user.twitter_oauth_secret)

            auth_api = tweepy.API(auth)
            
            auth_api.update_status("Hello World from the GTUG Zurich Hackathon.")
            
            self.response.out.write('tweet send successfully')
            
          else:
            self.response.out.write("user empty")
      else:
          self.response.out.write("no users found")
    else:
      self.response.out.write("Error while sending tweet")
Ejemplo n.º 2
0
	def get(self):
		user = users.get_current_user()
		if user:
			# check if there are already twitter credentials in the db. -> if yes suggest to delete them.
			
			consumer_token = config.twitter_consumer_token()
			consumer_secret = config.twitter_consumer_secret()
			callback_url = helper.get_application_base_url(self.request.uri) + '/twitter/callback'
			auth = tweepy.OAuthHandler(consumer_token, consumer_secret, str(callback_url))
			try:
				redirect_url = auth.get_authorization_url()
				
				# REMOVE COOKIES FOR TWITTER
				expires = datetime.now() + timedelta(weeks=2)
				expires_rfc822 = expires.strftime('%a, %d %b %Y %H:%M:%S GMT')
				cookie = "socialtank_twitter_token_key=" + str(auth.request_token.key.encode()) + ";expires=" + str(expires_rfc822) + ";path=/"
				self.response.headers.add_header('Set-Cookie',cookie)
				
				expires = datetime.now() + timedelta(weeks=2)
				expires_rfc822 = expires.strftime('%a, %d %b %Y %H:%M:%S GMT')
				cookie = 'socialtank_twitter_token_secret='+str(auth.request_token.secret.encode())+';expires=' + str(expires_rfc822) + ';path=/'
				self.response.headers.add_header('Set-Cookie',cookie)
				
				self.redirect(redirect_url)
				
			except tweepy.TweepError, e:
				self.response.out.write('Error! Failed to get request token.')
				self.response.out.write(e)
Ejemplo n.º 3
0
	def get(self):
		consumer_token = config.twitter_consumer_token()
		consumer_secret = config.twitter_consumer_secret()
		verifier = self.request.GET.get('oauth_verifier')
		
		auth = tweepy.OAuthHandler(consumer_token, consumer_secret)
		token = (self.request.cookies.get('socialtank_twitter_token_key'), self.request.cookies.get('socialtank_twitter_token_secret'))
		auth.set_request_token(token[0], token[1])
		
		try:
			auth.get_access_token(verifier)
			auth.set_access_token(auth.access_token.key, auth.access_token.secret)
			
			api = tweepy.API(auth)
			
			user_fullname = api.me().name
			user_username = api.me().screen_name
			
			user = USER(fullname = user_fullname, twitter_username = user_username, twitter_oauth_token_key = auth.access_token.key, twitter_oauth_token_secret = auth.access_token.secret)
			user.put()
			
			taskqueue.add(url='/backup/past', method='GET')
			self.response.out.write('Your twitter account was successfully connected to socialtank.<br/>Backup process should start now... ')
			
		except tweepy.TweepError, e:
			self.response.out.write('Sorry, there occurred an error during the authorization process with twitter. Please clear your browser cache and try again.<br/>')
			self.response.out.write(e)
Ejemplo n.º 4
0
def backup(mode):
    user = get_user()
    if user:
        # authenticate for twitter
        auth = tweepy.OAuthHandler(config.twitter_consumer_token(), config.twitter_consumer_secret())
        auth.set_access_token(user.twitter_oauth_token_key, user.twitter_oauth_token_secret)
        api = tweepy.API(auth)

        counter = 1
        last_status = None

        statuses = None
        if mode == "past":
            statuses = tweepy.Cursor(
                api.user_timeline,
                id=user.twitter_username,
                max_id=user.backedup_last_id,
                count=helper.number_of_tweets_to_request_per_cycle(),
            ).items(helper.number_of_tweets_to_request_per_cycle())
        elif mode == "present":
            statuses = tweepy.Cursor(
                api.user_timeline,
                id=user.twitter_username,
                since_id=user.backedup_first_id,
                count=helper.number_of_tweets_to_request_per_cycle(),
            ).items(helper.number_of_tweets_to_request_per_cycle())

            # iterate over the last status object reveived for the timeline requested
        for status in statuses:
            current_tweet = None

            # check if this tweet is already partially written to the db
            if helper.does_tweet_exist(status.id):

                # fetch the already written status object from the db
                tweets = db.GqlQuery(
                    "SELECT * FROM TWEETS WHERE tweet_id =:current_tweet_id LIMIT 1", current_tweet_id=status.id
                )
                if tweets.count() >= 1:
                    for tweet in tweets:
                        if tweet:
                            current_tweet = tweet
                else:
                    # if someone else has deleted this entry in the meantime, just create a new one.
                    current_tweet = TWEETS()
            else:
                # create a new TWEETS instance because there isn't anything there yet.
                current_tweet = TWEETS()

                # save the status to the db
            current_tweet.tweet_id = status.id
            current_tweet.message = status.text
            current_tweet.datetime = status.created_at
            current_tweet.client_used = status.source
            current_tweet.avatar = status.author.profile_image_url
            current_tweet.put()

            if counter == helper.number_of_tweets_to_request_per_cycle():
                last_status = status.id
            else:
                counter = counter + 1  # not sure of there's an easier notation

                # save the last status_id to the user account in order not to backup the same things multiple times.
        user.backedup_last_id = last_status
        user.put()
        return True
    else:
        logging.error("no user was found in the database, please add one")
        return False