def test_append_word_with_go_to_list(self):
     keyword_generator = KeywordGenerator()
     test_list = ['test', 'ok']
     self.assertEqual(['test', 'ok', 'gotest', 'gook'], keyword_generator.append_word_with_go_to_list(test_list))
     # No words
     test_list = []
     self.assertEqual([], keyword_generator.append_word_with_go_to_list(test_list))
 def test_generate_search_terms(self):
     keyword_generator = KeywordGenerator()
     # Fake ID
     self.assertEqual([], keyword_generator.generate_search_terms('FAKE TEAM ID'))
     # Actual ID
     expected_list = ['TrueToAtlanta', 'TrueToAtlanta', 'ATL', 'Hawks', 'Atlanta',
                      'goTrueToAtlanta', 'goTrueToAtlanta', 'goATL', 'goHawks', 'goAtlanta']
     self.assertEqual(expected_list, keyword_generator.generate_search_terms('20901970-53a0-417c-b5b4-832a74148af6'))
Exemplo n.º 3
0
 def test_append_word_with_go_to_list(self):
     keyword_generator = KeywordGenerator()
     test_list = ['test', 'ok']
     self.assertEqual(
         ['test', 'ok', 'gotest', 'gook'],
         keyword_generator.append_word_with_go_to_list(test_list))
     # No words
     test_list = []
     self.assertEqual(
         [], keyword_generator.append_word_with_go_to_list(test_list))
Exemplo n.º 4
0
 def test_generate_search_terms(self):
     keyword_generator = KeywordGenerator()
     # Fake ID
     self.assertEqual(
         [], keyword_generator.generate_search_terms('FAKE TEAM ID'))
     # Actual ID
     expected_list = [
         'TrueToAtlanta', 'TrueToAtlanta', 'ATL', 'Hawks', 'Atlanta',
         'goTrueToAtlanta', 'goTrueToAtlanta', 'goATL', 'goHawks',
         'goAtlanta'
     ]
     self.assertEqual(
         expected_list,
         keyword_generator.generate_search_terms(
             '20901970-53a0-417c-b5b4-832a74148af6'))
Exemplo n.º 5
0
 def __init__(self):
     """
     Initializes API keys and sets up Auth with Twitter API
     """
     self.APP_KEY = CommonUtils.get_environ_variable('SPORTS_CANARY_APP_KEY')
     self.APP_SECRET = CommonUtils.get_environ_variable('SPORTS_CANARY_APP_KEY_SECRET')
     self.OAUTH_TOKEN = CommonUtils.get_environ_variable('SPORTS_CANARY_OAUTH_TOKEN')
     self.OAUTH_TOKEN_SECRET = CommonUtils.get_environ_variable('SPORTS_CANARY_OAUTH_TOKEN_SECRET')
     self.auth = tweepy.OAuthHandler(self.APP_KEY, self.APP_SECRET)
     self.auth.set_access_token(self.OAUTH_TOKEN, self.OAUTH_TOKEN_SECRET)
     self.api = tweepy.API(self.auth)
     self.logger = logging.getLogger(__name__)
     self.keyword_generator = KeywordGenerator()
     self.score_updater = ScoreUpdater()
 def test_generate_search_terms_should_throw_exception(self):
     keyword_generator = KeywordGenerator()
     keyword_generator.team_data_path = ''
     with self.assertRaises(IOError):
         keyword_generator.generate_search_terms('20901970-53a0-417c-b5b4-832a74148af6', "notARealSport")
     assert True
 def test_get_team_data_path(self):
     keyword_generator = KeywordGenerator()
     expected_nba = os.getcwd() + '/Twitter_Utils/data/nba-teams-data.json'
     expected_nhl = os.getcwd() + '/Twitter_Utils/data/nhl-teams-data.json'
     self.assertEqual(expected_nba, keyword_generator.get_team_data_path("nba"))
     self.assertEqual(expected_nhl, keyword_generator.get_team_data_path("nhl"))
 def test_generate_search_terms(self):
     keyword_generator = KeywordGenerator()
     team_id = '84eb19ca-1e66-416f-9e00-90b20fe4bb5e'
     sport = 'nba'
     self.assertGreater(len(keyword_generator.generate_search_terms(team_id, sport)),35)
 def test_get_team_data_path_for_nba(self):
     keyword_generator = KeywordGenerator()
     expected = os.getcwd() + '/Twitter_Utils/data/nba-teams-data.json'
     self.assertEqual(expected, keyword_generator.get_team_data_path("nba"))
Exemplo n.º 10
0
class TwitterClient:
    def __init__(self):
        """
        Initializes API keys and sets up Auth with Twitter API
        """
        self.APP_KEY = CommonUtils.get_environ_variable('SPORTS_CANARY_APP_KEY')
        self.APP_SECRET = CommonUtils.get_environ_variable('SPORTS_CANARY_APP_KEY_SECRET')
        self.OAUTH_TOKEN = CommonUtils.get_environ_variable('SPORTS_CANARY_OAUTH_TOKEN')
        self.OAUTH_TOKEN_SECRET = CommonUtils.get_environ_variable('SPORTS_CANARY_OAUTH_TOKEN_SECRET')
        self.auth = tweepy.OAuthHandler(self.APP_KEY, self.APP_SECRET)
        self.auth.set_access_token(self.OAUTH_TOKEN, self.OAUTH_TOKEN_SECRET)
        self.api = tweepy.API(self.auth)
        self.logger = logging.getLogger(__name__)
        self.keyword_generator = KeywordGenerator()
        self.score_updater = ScoreUpdater()

    def tweet(self, tweet):
        """
        Tweets out content
        :param tweet: message to be tweeted
        """
        try:
            self.api.update_status(tweet)
        except:
            self.logger.error('Error sending: ' + tweet)

    def delete_latest_tweet(self):
        timeline = self.api.user_timeline(count=1)
        for t in timeline:
            self.api.destroy_status(t.id)

    @staticmethod
    def get_day_month():
        return datetime.now().strftime('%m-%d')

    def enriched_tweet_based_on_confidence(self, tweet_percentage_tuple, teams_tuple, slug, sport):
        """
        Tweets out with hashtags and confidence indicator.
        :param tweet_percentage_tuple: confidence for team_1 and team_2
        :param teams_tuple: team_1, team_2
        :param slug: game slug
        :param sport: Sport type - currently supports mlb, nba and nhl
        """
        try:
            home_away_id_tuple = self.score_updater.get_team_ids_for_game(slug, sport)
            home_hashtags = self.create_space_separated_hashtags(self.keyword_generator.get_hashtags_for_team(team_id=home_away_id_tuple[0], sport=sport))
            away_hashtags = self.create_space_separated_hashtags(self.keyword_generator.get_hashtags_for_team(team_id=home_away_id_tuple[1], sport=sport))
            if tweet_percentage_tuple[0] > tweet_percentage_tuple[1]:
                if abs(tweet_percentage_tuple[0] - tweet_percentage_tuple[1]) <= 15:
                    self.tweet(str(self.get_day_month()) + ' We predict the ' + teams_tuple[0] + ' will be victorious today against the ' +
                               teams_tuple[1] + '. #' + sport.upper() + ' ' + home_hashtags + ' ' + away_hashtags)
                else:
                    self.tweet(str(self.get_day_month()) + ' We feel confident the ' + teams_tuple[0] + ' will be victorious today against the ' +
                               teams_tuple[1] + '. #' + sport.upper() + ' ' + home_hashtags + ' ' + away_hashtags)
            else:
                if abs(tweet_percentage_tuple[1] - tweet_percentage_tuple[0]) <= 15:
                    self.tweet(str(self.get_day_month()) + ' We predict the ' + teams_tuple[1] + ' will be victorious today against the ' +
                               teams_tuple[0] + '. #' + sport.upper() + ' ' + home_hashtags + ' ' + away_hashtags)
                else:
                    self.tweet(str(self.get_day_month()) + ' We feel confident the ' + teams_tuple[1] + ' will be victorious today against the ' +
                               teams_tuple[0] + '. #' + sport.upper() + ' ' + home_hashtags + ' ' + away_hashtags)
            return True

        except:  #pragma: no cover
            self.logger.error('Error sending enriched tweet.')
            return False

    @staticmethod
    def create_space_separated_hashtags(list_of_hashtags):
        list_of_hashtags = ['#' + hashtag for hashtag in list_of_hashtags]
        return ' '.join(list_of_hashtags)