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"])
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)
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"])