Пример #1
0
	def get(self):
		# Ridirect to host if not call by cron.yaml
		if not (self.request.headers.has_key( "X-AppEngine-Cron" ) and self.request.headers['X-AppEngine-Cron']) :
			self.redirect(self.request.host_url)
			return
		
		all_users = gdb.all_users()
		client = oauth.TwitterClient( CONSUMER_KEY, CONSUMER_SECRET, "%s/oauth/verify" % self.request.host_url )
		
		for user in all_users:
			response = client.load_profile(user.token, user.secret)
			if response.status_code != 200:	#### Should be modified.
				logging.error("load_profile()")
				logging.error("status_code: %d\ncontent: %s" % (response.status_code, response.content) )
				continue # while
			
			profile = json.loads(response.content)
			gdb.save_name(user, profile["screen_name"])
Пример #2
0
	def get(self):
		# Ridirect to host if not call by cron.yaml
		if not (self.request.headers.has_key( "X-AppEngine-Cron" ) and self.request.headers['X-AppEngine-Cron']) :
			self.redirect(self.request.host_url)
			return
		
		all_users = gdb.all_users()
		client = oauth.TwitterClient( CONSUMER_KEY, CONSUMER_SECRET, "%s/oauth/verify" % self.request.host_url )
		today = date.today()
		egg = 1 if (today.month==4 and today.day==1) else 0
		
		for user in all_users:
			# Load count and tweet it.
			(sum, re, rt, rts, last) = gdb.load_count(user)
			gdb.reset_count(user)
			
			if sum > TWEET_MIN:
				if egg: (sum, re, rt, rts) = self.egg(sum, re, rt, rts, user.user_id)
				tweet = u"@tweetcntd @%s 本日共发 %d 推,其中 @ %d 推(%.1f%%)、RT @ %d 推(%.1f%%)、Retweet %d 推(%.1f%%)" %\
						( user.screen_name, sum, re, float(re)/sum*100 , rt, float(rt)/sum*100, rts, float(rts)/sum*100 )
				client.tweet(user.token, user.secret, tweet)
Пример #3
0
	def get(self):
		# Ridirect to host if not call by cron.yaml
		if not (self.request.headers.has_key( "X-AppEngine-Cron" ) and self.request.headers['X-AppEngine-Cron']) :
			self.redirect(self.request.host_url)
			return
		
		# init constant
		all_users = gdb.all_users()
		client = oauth.TwitterClient( CONSUMER_KEY, CONSUMER_SECRET, "%s/oauth/verify" % self.request.host_url )
		start_time, end_time = get_period_time()
		PATTERN_RE = re.compile( r'^(@\w+)\b.*$' )
		PATTERN_RT = re.compile( r'^.*?(RT ?@\w+)\b.*$' )
		
		for user in all_users:
			# init user's status
			(sum, sum_re, sum_rt, sum_rts, since_id) = gdb.load_count(user)
			skip = 0
			max_id = None
			timeline = []
			
			## fixed new user
			if since_id==0:
				block = [{"created_at":"Tue Feb 14 00:00:00 +0000 9999"}]	## Magic Number
			
			# Generate user's new tweets' blocks
			while (since_id != max_id) if since_id>0 else (format_time(block[len(block)-1]["created_at"]) > start_time):
				# Get the tweet block CONTAINS tweet of since_id.
				response = client.load_usrtl(user.token, user.secret, since_id-1, max_id, 200)
				if response.status_code != 200:	#### Should be modified.
					logging.error("load_usrtl()")
					logging.error("status_code: %d\ncontent: %s" % (response.status_code, response.content) )
					break # while
				
				block = json.loads(response.content)
				len_1 = len(block)-1
				if len_1:
					timeline.extend(block[0:len_1])
					max_id = block[len_1]["id"]
				else:
					break # while
			
			# Count user's tweets
			for tweet in timeline:
				tweet_time = format_time(tweet["created_at"])
				if tweet_time > end_time:
					skip +=1
				elif tweet_time > start_time:
					sum +=1
					if tweet.has_key( "retweeted_status" ):
						sum_rts += 1
					elif PATTERN_RE.match( tweet["text"] ):
						sum_re += 1
					elif PATTERN_RT.match( tweet["text"] ):
						sum_rt +=1
				else:
					break # for
			
			# Save user's status
			if len(timeline):
				logging.debug("$ %d: %d(%d,%d,%d), %d" % (user.user_id, sum, sum_re, sum_rt, sum_rts, timeline[skip]["id"]) )
				gdb.save_count(user, sum, sum_re, sum_rt, sum_rts, timeline[skip]["id"])