Пример #1
0
def getTweets(user,clean=True,includeRetweets=False,maxTweets=1000000,includeOtherMentions=True):
    twitter_access_token_key,twitter_access_token_secret,twitter_consumer_key,twitter_consumer_secret = Config.getTwitterKeys()
    api = TwitterAPI(twitter_access_token_key,twitter_access_token_secret, twitter_consumer_key, twitter_consumer_secret)

    tweets = []
    li = api.fetch_by_user_names(user.twitterId,clean = clean)
    
    while li is not None and len(li) > 0:
        if "errors" in li and li["errors"][0]["code"] == 88:
            return []
        for tweet in li:
            tweetText = str(tweet['text'].encode("utf-8")).replace('\\n', ' ').replace('\\r', '').strip()[2:-1]
            if not includeRetweets and tweetText.startswith('RT'):
                continue
            if not includeOtherMentions and "@" in tweet['text']:
                continue
            if clean:
                tweetText = re.sub(r'https?:\/\/[^\s]*','',tweetText, flags=re.MULTILINE)
                tweetText = re.sub(r'\\x..','',tweetText, flags=re.MULTILINE)
                tweetText = re.sub(r'&','and',tweetText, flags=re.IGNORECASE)
                tweetText = re.sub(r'[\s\t]+',' ',tweetText, flags=re.IGNORECASE)
                tweetText.replace('#','')
                tweetText = re.sub('^\s*rt\s',' ',tweetText,flags=re.IGNORECASE)
                if not validTweet(tweetText):
                    continue
                
            st = Status()
            st.id = tweet['id']
            st.likes = tweet['favorite_count']
            st.shares = tweet['retweet_count']
            st.CreatedOn = tweet['created_at']
            st.statusType = 1
            st.statusText = tweetText
            st.language = tweet["lang"]

            tweets.append(st)
        minId = min(tweets,key=lambda p:p.id).id
        li = api.fetch_by_user_names(user.twitterId,id= minId - 1,clean = clean)
        if len(tweets) > maxTweets or li is None or len(li) < 10:
            break
    return tweets