Ejemplo n.º 1
0
 def __init__(self):
     self.twitter_connection = TwitterConnection()
Ejemplo n.º 2
0
class TwitterFetcher(object):

    def __init__(self):
        self.twitter_connection = TwitterConnection()
    # end

    def get_twitter_user(self, twitter_id=None, username=None):
        twitter_user = TwitterUser()
        try:
            if twitter_id is not None:
                api_twitter_user = self.twitter_connection.twitter_api.get_user(twitter_id)
                twitter_user = TwitterUser(api_twitter_user.id, api_twitter_user.screen_name, api_twitter_user.name,  api_twitter_user.followers_count, api_twitter_user.friends_count, api_twitter_user.profile_image_url)
            else:
                api_twitter_user = self.twitter_connection.twitter_api.get_user(username)
                twitter_user = TwitterUser(api_twitter_user.id, api_twitter_user.screen_name, api_twitter_user.followers_count, api_twitter_user.friends_count, api_twitter_user.profile_image_url)
        except:
            self.twitter_connection.change_connection_keys()
            self.get_twitter_user(twitter_id, username)

        return twitter_user
    # end of get_twitter_user

    def get_followers(self, twitter_id):
        the_user = self.get_twitter_user(twitter_id=twitter_id)
        if the_user.follower_count > 400:
            followers = self.get_followers_big(twitter_id=twitter_id)
        else:
            followers = self.get_followers_small(twitter_id=twitter_id)

        return followers

    def get_followings(self, twitter_id):
        the_user = self.get_twitter_user(twitter_id=twitter_id)
        if the_user.following_count > 400:
            followings = self.get_followings_big(twitter_id=twitter_id)
        else:
            followings = self.get_followings_small(twitter_id=twitter_id)

        return followings



    def get_followers_small(self, twitter_id):

        followers = []
        followersapi = None

        check1 = True
        while(check1):
            try:
                followersapi = tweepy.Cursor(self.twitter_connection.twitter_api.followers, user_id=twitter_id).items()

                for user in followersapi:
                    twitter_user = TwitterUser()
                    twitter_user.name = user.name
                    twitter_user.twitter_id = user.id
                    twitter_user.username = user.screen_name
                    followers.append(twitter_user)
                check1 = False
            except:
                self.twitter_connection.change_connection_keys()

        return followers
    # end of get_small_followers

    def get_followers_big(self, twitter_id):
        followers = []

        ids = None
        check1 = True
        while check1:
            try:
                print("denedik")
                ids = self.twitter_connection.twitter_api.followers_ids(twitter_id)
                print("denedik oldu")
                check1 = False
            except:
                self.twitter_connection.change_connection_keys()

        for id in ids:
            check2 = True
            while check2:
                try:
                    print(str(id))
                    twitter_user =self.get_twitter_user(twitter_id=id)
                    followers.append(twitter_user)
                    print(twitter_user.username)
                    check2= False
                except:
                    self.twitter_connection.change_connection_keys()

        return followers


    def get_followings_small(self, twitter_id):

        followings = []
        followingsapi = None

        check1 = True
        while(check1):
            try:
                followingsapi = tweepy.Cursor(self.twitter_connection.twitter_api.friends, user_id=twitter_id).items()
                for user in followingsapi:
                    twitter_user = TwitterUser()
                    twitter_user.name = user.name
                    twitter_user.twitter_id = user.id
                    twitter_user.username = user.screen_name
                    followings.append(twitter_user)
                check1 = False
            except:
                self.twitter_connection.change_connection_keys()



        return followings
    # end of get_followings

    def get_followings_big(self, twitter_id):
        followings = []

        ids = None
        check1 = True
        while check1:
            try:
                print("denedik")
                ids = self.twitter_connection.twitter_api.frineds_id(twitter_id)
                print("denedik oldu")
                check1 = False
            except:
                self.twitter_connection.change_connection_keys()

        for id in ids:
            check2 = True
            while check2:
                try:
                    print(str(id))
                    twitter_user =self.get_twitter_user(twitter_id=id)
                    followings.append(twitter_user)
                    print(twitter_user.username)
                    check2= False
                except:
                    self.twitter_connection.change_connection_keys()

        return followings








    def get_favorites(self, twitter_id):
        favorites = []
        try:
            for i in range(1, 7):

                check1 = True
                while check1:
                    try:
                        favs = self.twitter_connection.twitter_api.favorites(id = twitter_id, page=i)
                        check1 = False
                        for fav in favs:
                            tweet = Tweet()
                            tweet.source_id = twitter_id
                            tweet.text = fav.text
                            tweet.target_id = fav.author.id
                            favorites.append(tweet)
                            if len(favorites) == 100:
                                break

                        check1 = False
                    except:
                        self.twitter_connection.change_connection_keys()
        except:
            return favorites
        return favorites


    def get_tweets(self, is_retweet, twitter_id):
        tweets = []
        numberOfPage = None
        checkstuff = 0

        if is_retweet: # ordinary tweet
            numberOfPage = 50

        else:
            numberOfPage = 20

        for i in range(1, numberOfPage):
            if checkstuff:
                break

            check1 = True
            stuff = None

            while check1:
                try:
                    stuff = self.twitter_connection.twitter_api.user_timeline(id=twitter_id, page=i)
                    if len(tweets) > 100:
                        break

                    if len(stuff) == 0:
                        checkstuff = True
                        break

                    for tw in stuff:
                        tweet = Tweet()
                        if is_retweet:
                            if tw.text[0] is "R" and tw.text[1] is "T":
                                author = tw.text[4:len(tw.text)].split(':')[0]
                                try:
                                    author_id = self.twitter_connection.twitter_api.get_user(screen_name=author).id
                                    tweet.source_id = twitter_id
                                    tweet.target_id = author_id
                                    tweet.text = tw.text
                                    tweets.append(tweet)

                                except:
                                    pass
                        else:
                            if tw.text[0] is not "R" and tw.text[1] is not "T":
                                tweet.text = tw.text
                                tweet.source_id = twitter_id
                                tweet.target_id = 0
                                tweet.created_at = tw.created_at
                                tweets.append(tweet)


                    check1 = False

                except:
                    self.twitter_connection.change_connection_keys()

        return tweets