From 6fdc5c67e294dc4f58867e426613a9c42fe4cbe4 Mon Sep 17 00:00:00 2001 From: Bill Dengler Date: Tue, 12 May 2015 14:13:43 -0400 Subject: [PATCH] #33: Memmoize new audio detection logic for performance, follow HTTP redirects when determining filetype. --- src/twitter/utils.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/twitter/utils.py b/src/twitter/utils.py index d25ca3a5..30c5a5ec 100644 --- a/src/twitter/utils.py +++ b/src/twitter/utils.py @@ -43,14 +43,22 @@ def find_next_reply(id, listItem): return None def is_audio(tweet): + if 'is_audio' in tweet: + return tweet['is_audio'] if len(tweet["entities"]["hashtags"]) > 0: for i in tweet["entities"]["hashtags"]: if i["text"] == "audio": + tweet['is_audio']=True return True for u in find_urls(tweet): - response = requests.head(u) - if 'audio' in str(response.headers['content-type']).lower(): - return True + try: + response = requests.head(u,allow_redirects=True) + if 'audio' in str(response.headers['content-type']).lower(): + tweet['is_audio']=True + return True + except: + log.exception("Exception while determining audio by HTTP headers") + tweet['is_audio']=False return False def is_geocoded(tweet):