From cb238b8ebbee1bcf7de3e68de8b41931e99b58e3 Mon Sep 17 00:00:00 2001 From: Heather Piwowar Date: Wed, 17 Sep 2014 09:45:20 -0700 Subject: [PATCH] catch error if no posts --- totalimpact/providers/altmetric_com.py | 39 ++++++++++++++------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/totalimpact/providers/altmetric_com.py b/totalimpact/providers/altmetric_com.py index 4068d9e3..23b512eb 100644 --- a/totalimpact/providers/altmetric_com.py +++ b/totalimpact/providers/altmetric_com.py @@ -155,24 +155,27 @@ def _extract_metrics_via_fetch(self, page, status_code=200, id=None): } metrics_dict = provider._extract_from_json(page, dict_of_keylists) - if metrics_dict['altmetric_com:posts'] and "twitter" in metrics_dict['altmetric_com:posts']: - twitter_posts = metrics_dict['altmetric_com:posts']["twitter"] - impressions = 0 - tweeter_followers = [] - for post in twitter_posts: - # print post["author"] - twitter_handle = post["author"]["id_on_source"] - try: - followers = post["author"]["followers"] - tweeter_followers.append([twitter_handle, followers]) - except KeyError: - pass - impressions = sum([followers for (handle, followers) in tweeter_followers]) - if tweeter_followers: - metrics_dict['altmetric_com:tweeter_followers'] = tweeter_followers - if impressions: - metrics_dict['altmetric_com:impressions'] = impressions - del metrics_dict['altmetric_com:posts'] + try: + if metrics_dict['altmetric_com:posts'] and "twitter" in metrics_dict['altmetric_com:posts']: + twitter_posts = metrics_dict['altmetric_com:posts']["twitter"] + impressions = 0 + tweeter_followers = [] + for post in twitter_posts: + # print post["author"] + twitter_handle = post["author"]["id_on_source"] + try: + followers = post["author"]["followers"] + tweeter_followers.append([twitter_handle, followers]) + except KeyError: + pass + impressions = sum([followers for (handle, followers) in tweeter_followers]) + if tweeter_followers: + metrics_dict['altmetric_com:tweeter_followers'] = tweeter_followers + if impressions: + metrics_dict['altmetric_com:impressions'] = impressions + del metrics_dict['altmetric_com:posts'] + except KeyError: + pass # no posts return metrics_dict