def main(): logger.info('Starting follow neighbour script') try: db.init_db() lat, lon = config.TWEET_HOME_GEO radius = '100km' geocode = ','.join([str(lat), str(lon), radius]) registered_users = [ user.user_id for user in db.session.query(User).all()] results = getTweets([config.TWEET_LOCATION.split(',')[0]], result_type='recent') near_tweets = [] for tweet in results: if tweet.get('place'): if tweet.get('place').get('full_name') == 'San Francisco, CA': near_tweets.append(tweet) near_tweets[0] authors = [tweet.get('user') for tweet in near_tweets] authors_id_list = set([author.get('id_str') for author in authors]) follow_list = [author for author in authors_id_list if author not in registered_users] logger.info('Found %d new neighbours' % len(follow_list)) followUsers(follow_list[:30]) except Exception, err: logger.error('%s: %s' % (Exception, err))
def main(): try: follows = 30 db.init_db() users = db.session.query(User).all() favorite = None user_list = [] logger.debug('Starting follow routine.') for user in users: user_list.append(user.user_id) if user.favorited: if user.favorited.date() == datetime.today().date(): favorite = user.user_id break if not favorite: logger.debug('No favorite for today.') new_favorite = db.session.query( User).filter(User.favorited == None).first() logger.debug('%s is todays new favorite.' % new_favorite.user_id) new_favorite.favorited = datetime.now() db.session.merge(new_favorite) db.session.commit() favorite = new_favorite.user_id logger.debug( "Following todays favorite's (%s) followers" % favorite) favorite_followers = getFollowers(favorite, follows) favorite_followers_ids = [follower.get('id_str') for follower in favorite_followers[:follows] if (follower not in user_list and follower != config.TWEET_USER_ID)] followUsers(favorite_followers_ids) new_favorite = User() new_favorite.user_id = favorite_followers[0].get('id_str') new_favorite.favorited = datetime.now() + timedelta(days=6) except Exception, err: logger.error('%s: %s' % (Exception, err))
def update_users(users, user_followers=False): db.init_db() for user in users: stored_user = db.session.query( User).filter_by(user_id=user['id_str']).first() updated_user = stored_user or User(user_id=user['id_str']) # Follow user back if not already followed if user_followers and not updated_user.followed: followUsers([updated_user.user_id]) updated_user.followed = datetime.now() # Add followed_back date if user is friend and it is not set if (user_followers and not updated_user.followed_back): updated_user.followed_back = datetime.now() join_date = parser.parse(user['created_at']).replace(tzinfo=None) updated_user.join_date = join_date updated_user.contributors_enabled = user.get('contributors_enabled') updated_user.default_profile = user.get('default_profile') updated_user.default_profile_image = user.get('default_profile_image') updated_user.favourites_count = user.get('favourites_count') updated_user.follow_request_sent = user.get('follow_request_sent') updated_user.followers_count = user.get('followers_count') updated_user.following = user.get('following') updated_user.friends_count = user.get('friends_count') updated_user.geo_enabled = user.get('geo_enabled') updated_user.is_translator = user.get('is_translator') updated_user.language = get_language(user.get('lang')) updated_user.listed_count = user.get('listed_count') updated_user.profile_background_color = user.get( 'profile_background_color') updated_user.profile_background_image_url = user.get( 'profile_background_image_url') updated_user.profile_background_image_url_https = user.get( 'profile_background_image_url_https') updated_user.profile_background_tile = user.get( 'profile_background_tile') updated_user.profile_banner_url = user.get('profile_banner_url') updated_user.profile_image_url = user.get('profile_image_url') updated_user.profile_image_url_https = user.get( 'profile_image_url_https') updated_user.profile_link_color = user.get('profile_link_color') updated_user.profile_sidebar_border_color = user.get( 'profile_sidebar_border_color') updated_user.profile_sidebar_fill_color = user.get( 'profile_sidebar_fill_color') updated_user.profile_text_color = user.get('profile_text_color') updated_user.profile_use_background_image = user.get( 'profile_use_background_image') updated_user.protected = user.get('protected') updated_user.screen_name = user.get('screen_name') updated_user.show_all_inline_media = user.get('show_all_inline_media') updated_user.statuses_count = user.get('statuses_count') updated_user.time_zone = user.get('time_zone') updated_user.url = user.get('url') updated_user.utc_offset = user.get('utc_offset') updated_user.verified = user.get('verified') updated_user.withheld_in_countries = user.get('withheld_in_countries') updated_user.withheld_scope = user.get('withheld_scope') for attribute in ['description', 'name', 'location']: try: data = user.get(attribute) data.decode('utf-8') updated_user.__setattr__(attribute, data) except: # logger.debug('Encoding error for %s for user: %s' % # (attribute, updated_user.screen_name)) pass db.session.merge(updated_user) db.session.commit() logger.info('Updating %d users' % len(users))