예제 #1
0
 def test_sentiment(self):
     """Dataset.created_at should get set automatically."""
     msg = self.dataset.message_set.create(
         text="kitties are the worst awfullest animals and i hate them")
     models.set_message_sentiment(msg)
     self.assertEquals(msg.sentiment,
                       corpus_models.Message.SENTIMENT_NEGATIVE)
예제 #2
0
def get_or_create_a_tweet_from_json_obj(tweet_data, dataset_obj):
    """
    Given a dataset object, imports a tweet from json object into
    the dataset.
    """
    if 'in_reply_to_status_id' not in tweet_data:
        return None

    # if tweet_data.get('lang') != 'en':
    #     return None

    tweet, created = Message.objects.get_or_create(dataset=dataset_obj,
                                                   original_id=tweet_data['id'])

    # text
    if tweet_data.get('text'):
        tweet.text = tweet_data['text']

    # created_at
    if tweet_data.get('created_at'):
        tweet.time = datetime(*(parsedate(tweet_data['created_at']))[:6], tzinfo=utc)

    # language
    if tweet_data.get('lang'):
        tweet.language = get_or_create_language(tweet_data['lang'])

    if tweet_data.get('user'):
        # sender
        tweet.sender = create_an_user_from_json_obj(tweet_data['user'], dataset_obj)

        # time_zone
        if tweet_data['user'].get('time_zone'):
            tweet.timezone = get_or_create_timezone(tweet_data['user']['time_zone'])


    # type
    if tweet_data.get('retweeted_status') is not None:
        tweet.type = get_or_create_messagetype("retweet")

        handle_retweet(tweet_data['retweeted_status'], dataset_obj)

    elif tweet_data.get('in_reply_to_status_id') is not None:
        tweet.type = get_or_create_messagetype("reply")

        handle_reply_to(status_id=tweet_data['in_reply_to_status_id'],
                        user_id=tweet_data['in_reply_to_user_id'],
                        screen_name=tweet_data['in_reply_to_screen_name'],
                        dataset_obj=dataset_obj)

    else:
        tweet.type = get_or_create_messagetype('tweet')

    if tweet_data.get('entities'):
        handle_entities(tweet, tweet_data.get('entities'), dataset_obj)

    # sentiment
    set_message_sentiment(tweet, save=False)

    tweet.save()

    return tweet