class TwitterDataAccessObject:
    def __init__(self):
        self.api = TwitterAPI()
        self.db = TwitterElasticSearch()

    def get_user(self, user_id):
        user = self.db.get_user(user_id)
        if user is None:
            self.db.save_user(self.api.get_user_by_id(user_id))
            user = self.db.get_user(user_id)
        return user

    def get_user_statuses(self, user_id, force_refresh=False):
        # self.get_user(user_id)
        statuses = self.db.get_user_statuses(user_id)
        if statuses is None or force_refresh is True:
            self.db.save_statuses(self.api.get_user_statuses(user_id))
            statuses = self.db.get_user_statuses(user_id)
        return statuses

    def get_followers_ids_by_user_id(self, user_id, force_refresh=False):
        # self.get_user(user_id)
        followers = self.db.get_followers(user_id)
        if followers is None or force_refresh is True:

            followerids = []

            for follow in self.api.get_followers_by_user_id(user_id):
                followerids.append(follow._json['id_str'])

            self.db.set_followers(user_id, followerids)
            followers = self.db.get_followers(user_id)
        followerids = []

        if followers is not None:
            for hit in followers:
                followerids.append(hit['_source']['user'])

        return followerids

    def get_following_ids_by_user_id(self, user_id, force_refresh=False):
        # self.get_user(user_id)
        following = self.db.get_following(user_id)
        if following is None or force_refresh is True:

            followingids = []

            for follow in self.api.get_following_by_user_id(user_id):
                followingids.append(follow._json['id_str'])

            self.db.set_following(user_id, followingids)
            following = self.db.get_following(user_id)
        followingids = []

        if following is not None:
            for hit in following:
                followingids.append(hit['_source']['following'])

        return followingids
示例#2
0
def test_get_user_by_id(user_id=DEFAULT_ID):
    api = TwitterAPI()
    start_time = time.time()
    user = api.get_user_by_id(user_id)
    print("--- test_get_user_by_id took {0} seconds ---".format(time.time() - start_time))
    print "Retrieved User: {0}".format(user.screen_name)