Created
July 11, 2015 20:52
-
-
Save aaronorosen/8c98478b2b4db9a5aa05 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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