Skip to content

Instantly share code, notes, and snippets.

@aaronorosen
Created July 11, 2015 20:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aaronorosen/8c98478b2b4db9a5aa05 to your computer and use it in GitHub Desktop.
Save aaronorosen/8c98478b2b4db9a5aa05 to your computer and use it in GitHub Desktop.
import re
import TwitterSearch
# Fill in with your creds
COMSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = ''
ACCESS_TOKEN_SECRET = ''
def get_twitter_search(keywords):
tso = TwitterSearch.TwitterSearchOrder()
tso.set_keywords(keywords)
tso.set_include_entities(False)
ts = TwitterSearch.TwitterSearch(
consumer_key=COMSUMER_KEY,
consumer_secret=CONSUMER_SECRET,
access_token=ACCESS_TOKEN,
access_token_secret=ACCESS_TOKEN_SECRET
)
return ts, tso
def get_uber_amount_saved_tweet():
ts, tso = get_twitter_search(['uber_sf',
'Using uberPOOL, I saved'])
result = _get_results(ts, tso, parse_amount_saved_tweet)
print ("Amount saved using uberPOOL")
print ("Min saved: %s Max Saved: %s by %s Total saved: %s "
"Average Saved: %s Total Tweeted: %s" %
(result['min_saved'], result['max_saved'],
result['max_person'], result['amount_saved'],
result['amount_saved']/result['num_tweeted'],
result['num_tweeted']))
def get_uber_amount_could_have_saved_tweet():
ts, tso = get_twitter_search(['Looks like I could have saved',
'#SpendLessDoMore'])
result = _get_results(ts, tso, parse_amount_could_have_saved)
print ("Amount could have saved using uberPOOL")
print ("Min saved: %s Max Saved: %s by %s Total saved: %s "
"Average Saved: %s Total Tweeted: %s" %
(result['min_saved'], result['max_saved'],
result['max_person'], result['amount_saved'],
result['amount_saved']/result['num_tweeted'],
result['num_tweeted']))
def _get_results(ts, tso, parse_function):
set_saved = True
amount_saved = 0
num_tweeted = 0
min_saved = False
max_saved = False
max_person = False
for tweet in ts.search_tweets_iterable(tso):
result = parse_function(tweet['text'])
if(result):
num_tweeted += 1
# Initialize min/max's
if(set_saved):
min_saved = result
max_saved = result
max_person = tweet['user']['screen_name']
set_saved = False
if (min_saved > result):
min_saved = result
if (max_saved < result):
max_saved = result
max_person = tweet['user']['screen_name']
amount_saved += result
return {'min_saved': min_saved,
'max_saved': max_saved,
'amount_saved': amount_saved,
'num_tweeted': num_tweeted,
'max_person': max_person}
def parse_amount_saved_tweet(tweet):
result = re.findall('^Using uberPOOL, I saved \$\d+\.\d+', tweet)
if(result):
return float(result[0].split('$')[1])
def parse_amount_could_have_saved(tweet):
result = re.findall("^Looks like I could have saved \$\d+.\d+", tweet)
if (result):
return float(result[0].split('$')[1])
def main():
get_uber_amount_saved_tweet()
get_uber_amount_could_have_saved_tweet()
if (__name__ == '__main__'):
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment