Example #1
0
def main(params):
    try:
        msg = InputMessage.from_params(params)
        text = msg.payload.get('text')
        return OutputMessage.create().with_type('cortex/Text').with_payload({'text':  'Echo: '+ text}).to_params()
    except:
        return OutputMessage.create().with_type('cortex/Text').with_payload({'text': 'error: ' + params}).to_params()
def main(params):
    msg = InputMessage.from_params(params)
    text = msg.payload.get('text')
    return OutputMessage.create().with_type('cortex/Text').with_payload({
        'text':
        'Got: ' + text
    }).to_params()
Example #3
0
def main(params):
    # Parse the function params
    msg = InputMessage.from_params(params)

    # Get text and payload
    text = msg.payload.get('text')

    # Compute and create output
    return OutputMessage.create().with_type('cortex/Text').with_payload({
        'text':
        text
    }).to_params()
Example #4
0
def main(params):
    try:
        cortex_params = InputMessage.from_params(params)
        profile_key = "newsAgent/profiles/{}.json".format(
            cortex_params.payload.get("profileId"))

        # Download users current profile attributes (if it exists ...)
        profileAttributes = safe_load_list_of_jsons_from_managed_content(
            cortex_params, profile_key)
        eprint(profileAttributes)

        user_keyword_affinities = determine_user_keyword_affinity_score(
            profileAttributes)

        # List the users keywords sorted
        userKeywordLikes = [{
            "keyword": y[0],
            "score": y[1]
        } for y in sorted(user_keyword_affinities.items(),
                          key=lambda x: -1 * x[1])]
        eprint(userKeywordLikes)

        # List the users topics sorted
        topics = {
            topic["topic"]: topic["keywords"]
            for topic in safe_load_list_of_jsons_from_managed_content(
                cortex_params, "newsAgent/datasets/topics.json")
        }
        eprint(topics)

        # Determine User Topic Affinities ...
        userTopicLikes = [{
            "topic":
            topic,
            "score":
            joint_score_of_affinities(user_keyword_affinities, keywords)
        } for topic, keywords in topics.items()]
        eprint(userTopicLikes)

        return OutputMessage.create().with_payload({
            "profileId":
            cortex_params.payload.get("profileId"),
            "profileAttributes": {
                "userAffinityTowardsInsightsWithKeywords": userKeywordLikes,
                "userAffinityTowardsInsightsAboutTopics": userTopicLikes,
            }
        }).to_params()
    except Exception as e:
        return OutputMessage.create().with_payload({
            'message': str(e)
        }).to_params()
Example #5
0
def main(params):
    msg = InputMessage.from_params(params)
    fake = Faker()
    name_of_movie = msg.payload.get('name_of_movie')
    movie = {
        'name_of_movie': name_of_movie,
        'lead_1': fake.name(),
        'lead_2': fake.name(),
        'support_1': fake.name(),
        'support_2': fake.name()
    }
    return OutputMessage.create().with_type('cortex/Text').with_payload({
        'movie':
        movie
    }).to_params()
Example #6
0
def main(params):
    # Parse the function params
    msg = InputMessage.from_params(params)

    # Get source and n
    source = msg.payload.get('source')
    n = msg.payload.get('n')

    # get api token from properties
    api = msg.properties.get('token')

    # get the top headlines using the news api
    top_head = news(source.lower(), n, api)

    # Compute and create output
    return OutputMessage.create().with_payload({'route':'headline','top_head': top_head,'api':api}).to_params()
Example #7
0
def main(params):
    datasetReferences = get_dataset_refs(params)
    parsedArgs = {
        NAME_COMPANIES_REF: datasetReferences.get(NAME_COMPANIES_REF),
        "api_endpoint": params.get("apiEndpoint")
    }

    jwt = params.get("token")
    datasetStream = read_dataset(parsedArgs, jwt,
                                 parsedArgs[NAME_COMPANIES_REF])

    msg = InputMessage.from_params(params)
    text = msg.payload.get('text')

    return OutputMessage.create().with_payload({
        'data': datasetStream
    }).to_params()
Example #8
0
def main(params):
    try:
        cortex_params = InputMessage.from_params(params)

        # Download profile attributes (if it exists ...)
        profileAttributes = safe_load_list_of_jsons_from_managed_content(cortex_params, "newsAgent/profiles/{}.json".format(cortex_params.payload.get("profileId")))
        # eprint(profileAttributes)

        # Download news articles to present ...
        artilces = safe_load_list_of_jsons_from_managed_content(cortex_params, "newsAgent/datasets/newsArticles.json")
        # eprint(artilces)

        # if the user does not have a profile, return 10 random artilces ...
        if not profileAttributes:
            scored_articles = [(0, x) for x in random.sample(artilces, 10)]
            eprint("No Profile for User...")
        # Here on out, we are assuming the user has a profile ...
        else:
            # Get User Affinity Score Per Keyword
            user_keyword_affinities = determine_user_keyword_affinity_score(profileAttributes)
            # eprint(user_keyword_affinities)
            # Score Each Article Against Users Afinnity Scores & Sort Them...
            scored_articles = list(sorted(
                [score_article(a, user_keyword_affinities) for a in artilces],
                key=lambda x: -1 * x[0]
            ))

        eprint(scored_articles)
        # Take the top 3 Articles ...
        insights = turn_scored_articles_into_insights(
            cortex_params.payload.get("profileId"),
            scored_articles[:3]
        )
        
        # - [ ] TODO: Download Insights File and Append Newly Generated Insights to it
        eprint(insights)
        return OutputMessage.create().with_payload({
            "profileId": cortex_params.payload.get("profileId"),
            "insights": insights
        }).to_params()
    except Exception as e:
        return OutputMessage.create().with_payload({'message': str(e)}).to_params()
Example #9
0
def main(params):
    # Parse the function params
    msg = InputMessage.from_params(params)

    # Get input parameters
    source = msg.payload.get('source')
    category = msg.payload.get('category')
    country = msg.payload.get('country')
    query = msg.payload.get('query')

    # Get properties
    batch_size = msg.properties.get('batch_size')
    batch_no = msg.properties.get('batch_no')
    api_token = msg.properties.get('api_token')
    filter_type = msg.properties.get('filter_type')

    # get an API response
    response = \
        filter_news(country, category, source, query, batch_size, batch_no, api_token, filter_type)

    # convert response to strings
    url, status, results, error_code, error_message = (str(x)
                                                       for x in response)

    # return the status and results if no error
    if error_code == "None":
        return OutputMessage.create().with_payload({
            'status': status + ": " + url,
            'results': results
        }).to_params()
    # return error code and message if error
    else:
        return OutputMessage.create().with_payload({
            'status':
            status + ": " + url,
            'error_code':
            error_code,
            'error_message':
            error_message
        }).to_params()
Example #10
0
def main(params):
    try:
        cortex_params = InputMessage.from_params(params)
        profile_key = "newsAgent/profiles/{}.json".format(
            cortex_params.payload.get("profileId"))

        # Download users current profile attributes (if it exists ...)
        profileAttributes = safe_load_list_of_jsons_from_managed_content(
            cortex_params, profile_key)
        eprint(profileAttributes)

        userKeywordLikes = Counter(
            determine_user_keyword_affinity_score(profileAttributes))
        eprint(userKeywordLikes)

        keywordsOfInsightsLiked = Counter(
            list(
                itertools.chain.from_iterable([
                    set(x["content"]["keywords"])
                    for x in cortex_params.payload.get("insightsLiked", [])
                ])))
        eprint(keywordsOfInsightsLiked)

        updatedKeywordLikeCounts = userKeywordLikes + keywordsOfInsightsLiked
        new_profile_attributes = recreate_keyword_based_profile_attributes(
            cortex_params.payload.get("profileId"), updatedKeywordLikeCounts)
        eprint(new_profile_attributes)

        safe_save_list_of_jsons_to_managed_content(cortex_params, profile_key,
                                                   new_profile_attributes)

        return OutputMessage.create().with_payload({
            "profileId":
            cortex_params.payload.get("profileId")
        }).to_params()
    except Exception as e:
        return OutputMessage.create().with_payload({
            'message': str(e)
        }).to_params()