def topic_media(topics_id): if access_public_topic(topics_id): media_list = topic_media_list(TOOL_API_KEY, topics_id, snapshots_id=None, timespans_id=None, foci_id=None, sort=None, limit=None, link_id=None) elif is_user_logged_in(): media_list = topic_media_list(user_mediacloud_key(), topics_id) else: return jsonify({'status': 'Error', 'message': 'Invalid attempt'}) return jsonify(media_list)
def topic_media(topics_id): if access_public_topic(topics_id): media_list = apicache.topic_media_list(TOOL_API_KEY, topics_id, snapshots_id=None, timespans_id=None, foci_id=None, sort=None, limit=None, link_id=None) elif is_user_logged_in(): media_list = apicache.topic_media_list(user_mediacloud_key(), topics_id) else: return jsonify({'status': 'Error', 'message': 'Invalid attempt'}) return jsonify(media_list)
def _stream_media_list_csv(user_mc_key, filename, topics_id, **kwargs): # Helper method to stream a list of media back to the client as a csv. Any args you pass in will be # simply be passed on to a call to topicMediaList. all_media = [] more_media = True params = kwargs params[ 'limit'] = 1000 # an arbitrary value to let us page through with big pages try: while more_media: page = apicache.topic_media_list(user_mediacloud_key(), topics_id, **params) media_list = page['media'] all_media = all_media + media_list if 'next' in page['link_ids']: params['link_id'] = page['link_ids']['next'] more_media = True else: more_media = False return csv.download_media_csv(all_media, filename, TOPIC_MEDIA_CSV_PROPS) except Exception as exception: return json.dumps({'error': str(exception)}, separators=(',', ':')), 400
def media(topics_id, media_id): user_mc = user_admin_mediacloud_client() combined_media_info = apicache.topic_media_list(user_mediacloud_key(), topics_id, media_id=media_id)['media'][0] media_info = user_mc.media(media_id) for key in list(media_info.keys()): if key not in list(combined_media_info.keys()): combined_media_info[key] = media_info[key] return jsonify(combined_media_info)
def media(topics_id, media_id): user_mc = user_admin_mediacloud_client() combined_media_info = topic_media_list(user_mediacloud_key(), topics_id, media_id=media_id)['media'][0] media_info = user_mc.media(media_id) for key in media_info.keys(): if key not in combined_media_info.keys(): combined_media_info[key] = media_info[key] return jsonify(combined_media_info)
def _generate_network_of_frames(topics_id, timespans_id, num_of_sources, out_name, top_media_sort, remove_media_list=None, remove_word_list=[], generate_word_lists=False, include_media_list=None, media_attribs=None, num_words=None): if remove_media_list is None: remove_media_list = [] # use this specify attributes on the media source that should be added to the node as attributes # if(media_attribs == None): # media_attribs = {} if include_media_list is None: media_sources_md = topic_media_list(user_mediacloud_key(), topics_id, timespans_id=timespans_id, limit=num_of_sources + len(remove_media_list), sort=top_media_sort)['media'] else: media_sources_md = include_media_list if remove_media_list is not None: for r in remove_media_list: media_sources_md = _remove_media_source(r, media_sources_md) top_words = _build_top_words(media_sources_md, topics_id, timespans_id, remove_word_list, num_words) if remove_word_list is not None: top_words = _clean_top_words(top_words, remove_word_list) frame_network = _build_network(top_words, media_sources_md, media_attribs) _export_gexf_network(frame_network, '%s.gexf' % out_name) _export_d3_network(frame_network, '%s' % out_name) if generate_word_lists: with open('%s.txt' % out_name, 'w', encoding="utf-8") as wl: all_words = [] media_sources = {ms['media_id']: ms['name'] for ms in media_sources_md} # counts = {} for ms in top_words: # wl.write("\n\n%s (media id: %d):\n" % (media_sources[ms].encode('ascii', 'ignore'), ms)) wl.write("\n\n{} (media id: {}):\n".format(media_sources[ms], ms)) for w in top_words[ms]: all_words.append(w['term']) # increment count to see how many media source include each word # counts[ms] # wl.write("- %s (%d)\n" % (w['term'].encode('ascii', 'ignore'), w['count'])) wl.write("- {} ({})\n".format(w['term'], w['count'])) wl.write("\n") linefeed = chr(10) # linefeed=\n s = linefeed.join(nx.generate_gexf(frame_network)) # doctest: +SKIP # for line in nx.generate_gexf(frame_network): # doctest: +SKIP # logger.debug line return s
def _stream_media_list_csv(user_mc_key, filename, topics_id, **kwargs): # Helper method to stream a list of media back to the client as a csv. Any args you pass in will be # simply be passed on to a call to topicMediaList. add_metadata = False # off for now because this is SUPER slow all_media = [] more_media = True params = kwargs params[ 'limit'] = 1000 # an arbitrary value to let us page through with big pages try: cols_to_export = TOPICS_TEMPLATE_PROPS if not add_metadata: cols_to_export = cols_to_export[:-4] # remove the metadata cols while more_media: page = apicache.topic_media_list(user_mediacloud_key(), topics_id, **params) media_list = page['media'] user_mc = user_admin_mediacloud_client() if add_metadata: for media_item in media_list: media_info = user_mc.media(media_item['media_id']) for eachItem in media_info['media_source_tags']: if is_metadata_tag_set(eachItem['tag_sets_id']): format_metadata_fields(media_item, eachItem) all_media = all_media + media_list if 'next' in page['link_ids']: params['link_id'] = page['link_ids']['next'] more_media = True else: more_media = False return csv.download_media_csv(all_media, filename, cols_to_export) except Exception as exception: return json.dumps({'error': str(exception)}, separators=(',', ':')), 400
def _stream_media_list_csv(user_mc_key, filename, topics_id, **kwargs): # Helper method to stream a list of media back to the client as a csv. Any args you pass in will be # simply be passed on to a call to topicMediaList. all_media = [] more_media = True params = kwargs params['limit'] = 1000 # an arbitrary value to let us page through with big pages try: while more_media: page = apicache.topic_media_list(user_mediacloud_key(), topics_id, **params) media_list = page['media'] all_media = all_media + media_list if 'next' in page['link_ids']: params['link_id'] = page['link_ids']['next'] more_media = True else: more_media = False return csv.download_media_csv(all_media, filename, TOPIC_MEDIA_CSV_PROPS) except Exception as exception: return json.dumps({'error': str(exception)}, separators=(',', ':')), 400
def topic_provider_media(topics_id): media_list = apicache.topic_media_list(user_mediacloud_key(), topics_id) return jsonify(media_list)
def _generate_network_of_frames(topics_id, timespans_id, num_of_sources, out_name, top_media_sort, remove_media_list=None, remove_word_list=[], generate_word_lists=False, include_media_list=None, media_attribs=None, num_words=None): if remove_media_list is None: remove_media_list = [] # use this specify attributes on the media source that should be added to the node as attributes # if(media_attribs == None): # media_attribs = {} if include_media_list is None: media_sources_md = topic_media_list(user_mediacloud_key(), topics_id, timespans_id=timespans_id, limit=num_of_sources + len(remove_media_list), sort=top_media_sort)['media'] else: media_sources_md = include_media_list if remove_media_list is not None: for r in remove_media_list: media_sources_md = _remove_media_source(r, media_sources_md) top_words = _build_top_words(media_sources_md, topics_id, timespans_id, remove_word_list, num_words) if remove_word_list is not None: top_words = _clean_top_words(top_words, remove_word_list) frame_network = _build_network(top_words, media_sources_md, media_attribs) _export_gexf_network(frame_network, '%s.gexf' % out_name) _export_d3_network(frame_network, '%s' % out_name) if generate_word_lists: with open('%s.txt' % out_name, 'w', encoding="utf-8") as wl: all_words = [] media_sources = { ms['media_id']: ms['name'] for ms in media_sources_md } # counts = {} for ms in top_words: # wl.write("\n\n%s (media id: %d):\n" % (media_sources[ms].encode('ascii', 'ignore'), ms)) wl.write("\n\n{} (media id: {}):\n".format( media_sources[ms], ms)) for w in top_words[ms]: all_words.append(w['term']) # increment count to see how many media source include each word # counts[ms] # wl.write("- %s (%d)\n" % (w['term'].encode('ascii', 'ignore'), w['count'])) wl.write("- {} ({})\n".format(w['term'], w['count'])) wl.write("\n") linefeed = chr(10) # linefeed=\n s = linefeed.join(nx.generate_gexf(frame_network)) # doctest: +SKIP # for line in nx.generate_gexf(frame_network): # doctest: +SKIP # logger.debug line return s