def crowdtangle_summary(http, link, token=None, start_date=None, with_top_posts=False, sort_by=CROWDTANGLE_SUMMARY_DEFAULT_SORT_TYPE, format='csv_dict_row', platforms=None): if token is None: raise CrowdTangleMissingTokenError if format not in CROWDTANGLE_OUTPUT_FORMATS: raise TypeError('minet.crowdtangle.summary: unkown `format`.') if not isinstance(start_date, str): raise TypeError( 'minet.crowdtangle.summary: expecting a `start_date` kwarg.') if sort_by not in CROWDTANGLE_SUMMARY_SORT_TYPES: raise TypeError('minet.crowdtangle.summary: unknown `sort_by`.') # Fetching api_url = url_forge(link, token, start_date, sort_by, platforms, with_top_posts) err, response, data = request_json(http, api_url) if err is not None: raise err if response.status == 401: raise CrowdTangleInvalidTokenError if response.status >= 400: raise CrowdTangleInvalidRequestError(api_url) stats = nested_get(['result', 'summary', 'facebook'], data) posts = nested_get(['result', 'posts'], data) if with_top_posts else None if stats is not None: if format == 'csv_dict_row': stats = format_summary(stats, as_dict=True) elif format == 'csv_row': stats = format_summary(stats) if not with_top_posts: return stats else: if posts is not None: if format == 'csv_dict_row': posts = [format_post(post, as_dict=True) for post in posts] elif format == 'csv_row': posts = [format_post(post) for post in posts] return stats, posts
def crowdtangle_summary(pool, link, token=None, start_date=None, with_top_posts=False, sort_by=CROWDTANGLE_SUMMARY_DEFAULT_SORT_TYPE, raw=False, platforms=None): if token is None: raise CrowdTangleMissingTokenError if not isinstance(start_date, str): raise TypeError( 'minet.crowdtangle.summary: expecting a `start_date` kwarg.') if sort_by not in CROWDTANGLE_SUMMARY_SORT_TYPES: raise TypeError('minet.crowdtangle.summary: unknown `sort_by`.') # Fetching api_url = url_forge(link, token, start_date, sort_by, platforms, with_top_posts) err, response, data = request_json(api_url, pool=pool) if err is not None: raise err if response.status == 401: raise CrowdTangleInvalidTokenError if response.status >= 400: raise CrowdTangleInvalidRequestError(api_url) stats = getpath(data, ['result', 'summary', 'facebook']) posts = getpath(data, ['result', 'posts']) if with_top_posts else None if stats is not None: if not raw: stats = format_summary(stats) if not with_top_posts: return stats else: if not raw: posts = [format_post(post, link=link) for post in posts] return stats, posts