Tatiana Saturno Tatiana Saturno - 6 months ago 42
Python Question

Tweepy can't find Track

I need get tweets for my app, but tweepy can't find some tracks. I've searched for any site and can't find why is happening.There is my code. Some ideas?

class listener(StreamListener):
def __init__(self, api=None):
self.api = api or API()
self.n = 0
self.m = 100

def on_data(self, data):
self.n = self.n+1
if self.n < self.m:
lang = data.split('","lang":"')[1].split('","')
lang = lang[0][0:2]
#if(guessLanguageName(text_tweet) == "English"):
if(lang == "en"):
tweet = data.split('"id_str":"')[1].split('","source":"')[0]
text_tweet = tweet.split('","text":"')[1]
id_tweet = tweet.split('","text":"')[0]
out = id_tweet +' '+ text_tweet

print out + "\n"
tweets = open('tweets.txt', 'a')
tweets.write(out)
tweets.write('\n')
tweets.close()
return True
else:
return False

def on_error(self, status):
print status

auth = tweepy.OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)
twitterStream = tweepy.streaming.Stream(auth, listener())
archive = open('hashtag.txt', 'r')
twitterStream.filter(track=['sony xperia u'])

Answer

I found a better soluction with api.cursor:

import tweepy
def twitter_fetch(search_name,maxnumtweets):
    consumer_token = ''
    consumer_secret = ''
    access_token = ''
    access_secret = ''

    auth = tweepy.OAuthHandler(consumer_token,consumer_secret)
    auth.set_access_token(access_token,access_secret)

    api  = tweepy.API(auth)
    count = 0
    count_url = 0
    count_url_total = 0
    count_tweets = 0

    try:
       for tweet in tweepy.Cursor(api.search,q=(search_name), lang = 'en').items(maxnumtweets):
          count_url =  len(tweet.entities['urls'])
          count_url_total += count_url
          count +=1
          if count_url > 0:
                        count_check_text = 0
                        text = tweet.text

                        print "urls: "
                        for url in tweet.entities['urls']:
                            print url['url']
                            count_check_text += 1               

                            no_expanded_urls.write(url['url'].encode('utf-8'))
                            no_expanded_urls.write('\n')

                        out = tweet.id_str +" " + text
                        print "\nid_str and tweet: "
                        print out.encode('utf-8')

                        tweets.write(out.encode('utf-8'))
                        tweets.write('\n')
                        count_tweets+=1
                        print "-------------------------------------------------------------"
       print "-------------------------------------------------------------"
       print "-------------------------------------------------------------"
       tweets.close()
       no_expanded_urls.close()
       print "Searched for: " + hashtag
       print "Count tweets:"
       print count_tweets
       print "Count urls:"
       print count_url_total
       print count

    except tweepy.TweepError as e:
        print "error"

if __name__ == '__main__':
     archive = open('hashtag.txt', 'r')
     hashtag = archive.readline()
     archive.close()
     count_tweets = 0
     max_tweets = 50

     tweets = open('tweets.txt', 'a')
     tweets = open('tweets.txt', 'w')
     no_expanded_urls = open('noExpandedUrls.txt', 'w')
     twitter_fetch(hashtag, max_tweets)         
Comments