예제 #1
0
def api_topics_preview_word_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(solr_seed_query=request.form['q'],
                                            media_ids=ids_from_comma_separated_str(request.form['sources[]']) if 'sources[]' in request.form else None,
                                            tags_ids=ids_from_comma_separated_str(request.form['collections[]'])) if 'collections[]' in request.form else None,
    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                            end_date=request.form['end_date'])
    word_count_result = user_mc.wordCount(solr_query=solr_query, solr_filter=fq)

    return jsonify(word_count_result)  # give them back new data, so they can update the client
예제 #2
0
def api_topics_preview_story_sample():
    user_mc = user_mediacloud_client()

    solr_query = concatenate_query_for_solr(solr_seed_query=request.form['q'],
                                            media_ids=ids_from_comma_separated_str(request.form['sources[]']) if 'sources[]' in request.form else None,
                                            tags_ids=ids_from_comma_separated_str(request.form['collections[]'])) if 'collections[]' in request.form else None,

    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                            end_date=request.form['end_date'])
    num_stories = request.form['rows']
    story_count_result = user_mc.storyList(solr_query=solr_query, solr_filter=fq, sort=user_mc.SORT_RANDOM, rows=num_stories)
    return jsonify(story_count_result)
예제 #3
0
def api_topics_preview_split_story_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(solr_seed_query=request.form['q'],
                                            media_ids=ids_from_comma_separated_str(request.form['sources[]']) if 'sources[]' in request.form else None,
                                            tags_ids=ids_from_comma_separated_str(request.form['collections[]'])) if 'collections[]' in request.form else None,
    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                            end_date=request.form['end_date'])
    results = user_mc.storyCount(solr_query=solr_query, solr_filter=fq, split=True)
    total_stories = 0
    for c in results['counts']:
        total_stories += c['count']
    results['total_story_count'] = total_stories
    return jsonify({'results': results})
def api_topics_preview_word_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(
        solr_seed_query=request.form['q'],
        media_ids=ids_from_comma_separated_str(request.form['sources[]'])
        if 'sources[]' in request.form else None,
        tags_ids=ids_from_comma_separated_str(request.form['collections[]'])
    ) if 'collections[]' in request.form else None,
    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                end_date=request.form['end_date'])
    word_count_result = user_mc.wordCount(solr_query=solr_query,
                                          solr_filter=fq)

    return jsonify(word_count_result
                   )  # give them back new data, so they can update the client
def api_topics_preview_story_sample():
    user_mc = user_mediacloud_client()

    solr_query = concatenate_query_for_solr(
        solr_seed_query=request.form['q'],
        media_ids=ids_from_comma_separated_str(request.form['sources[]'])
        if 'sources[]' in request.form else None,
        tags_ids=ids_from_comma_separated_str(request.form['collections[]'])
    ) if 'collections[]' in request.form else None,

    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                end_date=request.form['end_date'])
    story_count_result = user_mc.storyList(solr_query=solr_query,
                                           solr_filter=fq,
                                           sort=user_mc.SORT_RANDOM)
    return jsonify(story_count_result)
예제 #6
0
def api_topics_preview_story_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(
        solr_seed_query=request.form['q'],
        start_date=request.form['start_date'],
        end_date=request.form['end_date'],
        media_ids=_media_ids_from_sources_param(request.form['sources[]'])
        if 'sources[]' in request.form else None,
        tags_ids=_media_tag_ids_from_collections_param(
            request.form['collections[]'])
    ) if 'collections[]' in request.form else None,

    story_count_result = user_mc.storyCount(solr_query=solr_query)
    # maybe check admin role before we run this?
    return jsonify(story_count_result
                   )  # give them back new data, so they can update the client
예제 #7
0
def topic_focus_definition_update_or_create(topics_id):
    user_mc = user_mediacloud_client()
    name = request.form['focusName']
    description = request.form['focusDescription']
    q = request.form['keywords'] if 'keywords' in request.form else ''
    collections = _parse_collection_ids(request.form)
    sources = _parse_media_ids(request.form)
    # update if it has an id, create if new
    if 'foci_id' in request.form:
        # for editing, the media ids come in through the keywords parameter
        # you can't change the focal set a focus is in
        foci_id = request.form['foci_id']
        focus = user_mc.topicFocusDefinitionUpdate(topics_id,
                                                   foci_id,
                                                   name=name,
                                                   description=description,
                                                   query=q)
    else:
        # respect option for media and sources
        if (sources not in [None, '']
                and len(sources) > 0) or (collections not in [None, '']
                                          and len(collections) > 0):
            query = concatenate_query_for_solr(q, sources, collections)
        else:
            query = q

        if int(request.form['focalSetDefinitionId']
               ) is NEW_FOCAL_SET_PLACEHOLDER_ID:
            fs_name = request.form['focalSetName']
            fs_description = request.form['focalSetDescription']
            focal_technique = request.form['focalTechnique']
            new_focal_set = user_mc.topicFocalSetDefinitionCreate(
                topics_id, fs_name, fs_description, 'Boolean Query')
            focal_set_definitions_id = new_focal_set[
                'focal_set_definitions_id']
        else:
            focal_set_definitions_id = request.form['focalSetDefinitionId']
        # create focus, pointing at focal set
        focus = user_mc.topicFocusDefinitionCreate(
            topics_id,
            name=name,
            description=description,
            query=query,
            focal_set_definitions_id=focal_set_definitions_id)
    return jsonify(focus)
예제 #8
0
def _topic_seed_story_count(topic):
    try:
        if access_public_topic(topic['topics_id']):
            api_key = TOOL_API_KEY
        else:
            api_key = user_mediacloud_key()
        seed_query_count = shared_apicache.story_count(
            api_key,
            q=concatenate_query_for_solr(
                solr_seed_query=topic['solr_seed_query'],
                media_ids=[m['media_id'] for m in topic['media']],
                tags_ids=[t['tags_id'] for t in topic['media_tags']]),
            fq=concatenate_solr_dates(start_date=topic['start_date'],
                                      end_date=topic['end_date']))['count']
    except mediacloud.error.MCException:
        # the query syntax is wrong (perhaps pre-story-level search
        seed_query_count = None
    return seed_query_count
def api_topics_preview_split_story_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(
        solr_seed_query=request.form['q'],
        media_ids=ids_from_comma_separated_str(request.form['sources[]'])
        if 'sources[]' in request.form else None,
        tags_ids=ids_from_comma_separated_str(request.form['collections[]'])
    ) if 'collections[]' in request.form else None,
    fq = concatenate_solr_dates(start_date=request.form['start_date'],
                                end_date=request.form['end_date'])
    results = user_mc.storyCount(solr_query=solr_query,
                                 solr_filter=fq,
                                 split=True)
    total_stories = 0
    for c in results['counts']:
        total_stories += c['count']
    results['total_story_count'] = total_stories
    return jsonify({'results': results})
예제 #10
0
def api_topics_preview_sentences_count():
    user_mc = user_admin_mediacloud_client()

    solr_query = concatenate_query_for_solr(
        solr_seed_query=request.form['q'],
        start_date=request.form['start_date'],
        end_date=request.form['end_date'],
        media_ids=_media_ids_from_sources_param(request.form['sources[]'])
        if 'sources[]' in request.form else None,
        tags_ids=_media_tag_ids_from_collections_param(
            request.form['collections[]'])
    ) if 'collections[]' in request.form else None,

    sentence_count_result = user_mc.sentenceCount(
        solr_query=solr_query,
        split_start_date=request.form['start_date'],
        split_end_date=request.form['end_date'],
        split=True)
    return jsonify(sentence_count_result)
예제 #11
0
def story_counts(topics_id):
    query = request.form['keywords'] if 'keywords' in request.form else ''
    #for preview information in subtopics and platforms - scope by media source info
    collections = _parse_collection_ids(request.args)
    sources = _parse_media_ids(request.args)
    merged_args = {}
    if ((sources not in [None, ''] and len(sources) > 0)
            or collections not in [None, ''] and len(collections) > 0):
        query = concatenate_query_for_solr(query, sources, collections)
        merged_args = {'q': query}
    filtered = apicache.topic_story_count(user_mediacloud_key(), topics_id,
                                          **merged_args)
    total = apicache.topic_story_count(user_mediacloud_key(),
                                       topics_id,
                                       timespans_id=None,
                                       snapshots_id=None,
                                       foci_id=None,
                                       q=None)
    return jsonify(
        {'counts': {
            'count': filtered['count'],
            'total': total['count']
        }})