def test_init(self): # this should fail # adb = FantasyLabsNBAAgent(db=True) adb = FantasyLabsNBAAgent(cache_name='testnba', db=self.db) self.assertIsNotNone(adb.scraper) self.assertIsNotNone(adb.parser) self.assertIsNotNone(adb.db)
def main(): logging.basicConfig(stream=sys.stdout, level=logging.INFO) config = ConfigParser() configfn = os.path.join(os.path.expanduser('~'), '.pgcred') config.read(configfn) cn = 'fl-agent-{}'.format(today()) fla = FantasyLabsNBAAgent(db=None, cache_name=cn, cookies=browsercookie.firefox()) models = fla.one_model(today(fmt='fl'), 'phan') optimizer = LineupOptimizer(settings.DraftKingsBasketballSettings) optimizer._players = fl_to_pydfs(models, weights=[.1, .6, .3]) for lineup in optimizer.optimize(n=5): print lineup
def setUp(self): self.today = dt.strftime(dt.today(), '%-m_%-d_%Y') self.config = ConfigParser() configfn = os.path.join(os.path.expanduser('~'), '.pgcred') self.config.read(configfn) self.db = FantasyLabsNBAPg(username=self.config['nbadb']['username'], password=self.config['nbadb']['password'], database=self.config['nbadb']['database']) self.a = FantasyLabsNBAAgent(cache_name='testflabs-nba', db=self.db)
def run(): logging.basicConfig(level=logging.INFO) a = NBAComAgent(db=True, safe=False) fla = FantasyLabsNBAAgent(db=True, safe=False) # update players logging.info('start update players') a.commonallplayers('2015-16') logging.info('completed update players') # Update cs_player_gamelogs table through yesterday's games logging.info('start update player_gamelogs') a.cs_player_gamelogs('2015-16') logging.info('end update player_gamelogs') # Update cs_playerstats table through yesterday's games logging.info('start update playerstats') a.cs_playerstats('2015-16') logging.info('end update playerstats') # Update cs_team_gamelogs table through yesterday's games logging.info('start update team_gamelogs') a.cs_team_gamelogs('2015-16') logging.info('end update team_gamelogs') # Update cs_teamstats table through yesterday's games logging.info('start update teamstats') a.cs_teamstats('2015-16') logging.info('end update teamstats') # Get models and salaries from today's games # insert salaries into database logging.info('start update models') players, pp_players = fla.today_models(insert_db=True) logging.info('end update models') # insert models into database # TODO: preprocess_models + insert models code return players, pp_players
from nba.agents.fantasylabs import FantasyLabsNBAAgent from nba.dates import datetostr from nba.db.fantasylabs import FantasyLabsNBAPg logger = logging.getLogger('nbadb-update') hdlr = logging.StreamHandler(sys.stdout) formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) logger.addHandler(hdlr) logger.setLevel(logging.INFO) logger.propagate = False config = ConfigParser() configfn = os.path.join(os.path.expanduser('~'), '.nbadb') config.read(configfn) flpg = FantasyLabsNBAPg(username=config['nbadb']['username'], password=config['nbadb']['password'], database=config['nbadb']['database']) fla = FantasyLabsNBAAgent(db=flpg, cache_name='flabs-nba', cookies=browsercookie.firefox()) fla.update_player_xref() q = """select distinct game_date from games where season = 2015 AND season_type = 'regular' order by game_date DESC""" for d in flpg.select_list(q): try: fla.salaries(day=datetostr(d, site='fl')) logger.info('completed {}'.format(d)) except Exception as e: logger.exception('{} failed: {}'.format(d, e)) finally: time.sleep(1.5)
def main(): #logger = logging.getLogger('nbadb-update') #hdlr = logging.StreamHandler(sys.stdout) #formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') #hdlr.setFormatter(formatter) #logger.addHandler(hdlr) #logger.setLevel(logging.INFO) #logger.propagate = False logging.basicConfig(stream=sys.stdout, level=logging.INFO) config = ConfigParser() configfn = os.path.join(os.path.expanduser('~'), '.nbadb') config.read(configfn) nbapg = NBAComPg(username=config['nbadb']['username'], password=config['nbadb']['password'], database=config['nbadb']['database']) flpg = FantasyLabsNBAPg(username=config['nbadb']['username'], password=config['nbadb']['password'], database=config['nbadb']['database']) cn = 'nba-agent-{}'.format(today()) a = NBAComAgent(cache_name=cn, cookies=None, db=nbapg) a.scraper.delay = 2 season = '2016-17' # ensures players table is up-to-date before inserting gamelogs, etc. a.new_players(season) logging.info('finished update nba.com players') # gets all missing (days) salaries from current seasons from nba.agents.fantasylabs import FantasyLabsNBAAgent fla = FantasyLabsNBAAgent(db=flpg, cache_name='flabs-nba') fla.salaries(all_missing=True) logging.info('finished dfs salaries') # ensures that player_xref table includes all players from salaries fla.update_player_xref() logging.info('finished update player_xref') # gets ownership data from fantasylabs fla.ownership(all_missing=True) logging.info('finished dfs ownership') # player_gamelogs a.player_gamelogs(season) logging.info('finished nba.com player gamelogs') # playerstats_daily ps = a.playerstats(season, all_missing=True) logging.info('finished playerstats daily') # update team_gamelogs a.team_gamelogs(season) logging.info('finished team gamelogs') # teamstats_daily a.teamstats(season, all_missing=True) logging.info('finished teamstats daily') # team_opponent_dashboards a.team_opponent_dashboards(season, all_missing=True) logging.info('finished team_opponent_dashboards') # refresh all materialized views refreshq = """SELECT RefreshAllMaterializedViews('*');""" nbapg.execute(refreshq)
class FantasyLabsNBAAgent_test(unittest.TestCase): def setUp(self): self.a = FantasyLabsNBAAgent(db=True, use_cache=True) def test_init(self): adb = FantasyLabsNBAAgent(db=True) self.assertIsNotNone(adb.db) asafe = FantasyLabsNBAAgent(safe=True) self.assertIsNotNone(adb.safe) asafe = FantasyLabsNBAAgent(use_cache=True) self.assertIsNotNone(adb.scraper) def test_past_day_models(self): delta = random.choice(range(1,7)) d = dt.datetime.today() - dt.timedelta(delta) fmt = site_format('fl') models, pp_models = self.a.past_day_models(model_day=dt.datetime.strftime(d, fmt)) logging.debug('there are {0} models'.format(len(models))) self.assertIsInstance(models, list) self.assertTrue(len(models) > 0) model = random.choice(models) self.assertIsInstance(model, dict) self.assertIn('Salary', model) pp_model = random.choice(pp_models) self.assertIsInstance(pp_model, dict) self.assertIn('salary', pp_model) def test_range_models(self): fmt = site_format('fl') delta = random.choice(range(7,14)) range_start = dt.datetime.today() - dt.timedelta(delta) range_end = range_start + dt.timedelta(2) models, pp_models = self.a.range_models(range_start=dt.datetime.strftime(range_start, fmt), range_end=dt.datetime.strftime(range_end, fmt)) logging.debug('there are {0} models'.format(len(models))) self.assertIsInstance(models, list) self.assertTrue(len(models) > 0) model = random.choice(models) self.assertIsInstance(model, dict) self.assertIn('Salary', model) pp_model = random.choice(pp_models) self.assertIsInstance(pp_model, dict) self.assertIn('salary', pp_model) def test_today_models(self): models, pp_models = self.a.today_models() logging.debug('there are {0} models'.format(len(models))) self.assertIsInstance(models, list) self.assertTrue(len(models) > 0) model = random.choice(models) self.assertIsInstance(model, dict) self.assertIn('Salary', model) pp_model = random.choice(pp_models) self.assertIsInstance(pp_model, dict) self.assertIn('salary', pp_model)
def setUp(self): self.a = FantasyLabsNBAAgent(db=True, use_cache=True)
def main(): logging.basicConfig(stream=sys.stdout, level=logging.INFO) config = ConfigParser() configfn = os.path.join(os.path.expanduser('~'), '.pgcred') config.read(configfn) nbapg = NBAComPg(username=config['nbadb']['username'], password=config['nbadb']['password'], database=config['nbadb']['database']) flpg = FantasyLabsNBAPg(username=config['nbadb']['username'], password=config['nbadb']['password'], database=config['nbadb']['database']) fla = FantasyLabsNBAAgent(db=flpg, cache_name='flabs-nba', cookies=browsercookie.firefox()) rgurua = RotoGuruNBAAgent(db=nbapg, cache_name='rg-nba') cn = 'nba-agent-{}'.format(today()) a = NBAComAgent(cache_name=cn, cookies=None, db=nbapg) a.scraper.delay = 1 season = '2016-17' # ensures players table is up-to-date before inserting gamelogs, etc. logging.info('starting update nba.com players') players = a.new_players(season[0:4]) logging.info('finished update nba.com players') # gets all missing (days) salaries from current seasons logging.info('starting dfs salaries') fla.salaries(all_missing=True) rgurua.salaries(all_missing=True) logging.info('finished dfs salaries') # ensures that player_xref table includes all players from salaries #logging.info('starting update player_xref') #fla.update_player_xref() #logging.info('finished update player_xref') # gets model from fantasylabs #td = today('fl') #mn = 'phan' #flpg.insert_models([{ # 'game_date': today('fl'), # 'data': fla.scraper.model(model_day=td, model_name=mn), # 'model_name': mn}]) # gets ownership data from fantasylabs #logging.info('starting dfs ownership') #fla.ownership(all_missing=True) #logging.info('finished dfs ownership') # gets data from rotogrinders #logging.info('starting rotogrinders') #rs = RotoGrindersNBAScraper() #rp = RotoGrindersNBAParser() #rdb = RotoGrindersNBAPg(username=config['nbadb']['username'], # password=config['nbadb']['password'], # database=config['nbadb']['database']) #jsonstr = rp.odds(rs.odds()) #rdb.insert_odds(today(), json.loads(jsonstr)) #logging.info('finished rotogrinders') # player_gamelogs logging.info('starting nba.com player gamelogs') a.player_gamelogs(season) logging.info('finished nba.com player gamelogs') # playerstats_daily logging.info('starting playerstats daily') ps = a.playerstats(season, all_missing=True) logging.info('finished playerstats daily') # player_boxscores_combined logging.info('starting player_boxscores_combined') pbs = a.player_boxscores_combined() logging.info('finished player_boxscores_combined') # update team_gamelogs logging.info('starting team gamelogs') a.team_gamelogs(season) logging.info('finished team gamelogs') # teamstats_daily logging.info('starting teamstats daily') a.teamstats(season, all_missing=True) logging.info('finished teamstats daily') # team_boxscores_combined logging.info('start team_boxscores_combined') tbs = a.team_boxscores_combined() logging.info('finished team_boxscores_combined') # team_opponent_dashboards logging.info('start team_opponent_dashboards') a.team_opponent_dashboards(season, all_missing=True) logging.info('finished team_opponent_dashboards') # v2015 boxscores - linescores, refs, etc. logging.info('start linescores') a.linescores() logging.info('finished linescores') # odds and lines logging.info('start odds and lines') dba = DonBestNBAAgent(db=nbapg) odds = dba.odds(all_missing=True) logging.debug(odds) logging.info('finished odds and lines') # refresh all materialized views logging.info('start refresh materialized queries') nbapg.refresh_materialized() logging.info('refreshed materialized queries')