コード例 #1
0
    def team_opponent_dashboards(self,
                                 season,
                                 date_from=None,
                                 date_to=None,
                                 all_missing=False):
        '''
        Downloads and parses range of team_opponents

        Arguments:
            season (str): in YYYY-YY format
            date_from (str): in %Y-%m-%d format, default is actual start of season
            date_to (str): in %Y-%m-%d format, default is actual end of season
            all_missing (bool): get all missing dashboards

        Returns:
             topp (list): dicts

         Examples:
            a = NBAComAgent()
            topp = a.team_opponent_dashboards('2014-15')
        '''
        if date_from and date_to:
            content = self.scraper.team_opponent_dashboard(season,
                                                           DateFrom=date_from,
                                                           DateTo=date_to)
            topp = self.parser.team_opponent_dashboard(content)
            if self.insert_db:
                self.db.insert_team_opponent_dashboards(topp, as_of=date_to)
            return topp

        elif all_missing:
            topps = {}
            start = datetostr(d=season_start(season), site='nba')
            for day in self.db.select_list(
                    'SELECT * FROM missing_team_opponent_dashboard'):
                daystr = datetostr(day, 'nba')
                content = self.scraper.team_opponent_dashboard(season,
                                                               DateFrom=start,
                                                               DateTo=daystr)
                topp = self.parser.team_opponent_dashboard(content)
                if self.insert_db:
                    self.db.insert_team_opponent_dashboards(topp, as_of=daystr)
                topps[daystr] = topp
            return topps

        else:
            raise ValueError(
                'need to specify dates or set all_missing to true')
コード例 #2
0
ファイル: nbacom.py プロジェクト: WINsconsinSports/nba
    def games(self, content, season):
        '''

        Args:
            content(dict): is parsed json
            season(str): is in YYYY-YY format

        Returns:
            results(list): of game dict
        '''
        results = []
        start = season_start(season)
        for item in content.get('lscd'):
            mscd = item.get('mscd')
            for g in mscd.get('g'):
                gd = g.get('gdte')
                try:
                    gd = datetime.datetime.strptime(gd, '%Y-%m-%d')
                    # the json includes preseason games, filter them
                    if start <= gd:
                        results.append({
                            'game_id':
                            g.get('gid'),
                            'gamecode':
                            g.get('gcode'),
                            'visitor_team_id':
                            g.get('v').get('tid'),
                            'visitor_team_code':
                            g.get('v').get('ta'),
                            'home_team_id':
                            g.get('h').get('tid'),
                            'home_team_code':
                            g.get('h').get('ta'),
                            'game_date':
                            gd,
                            'season':
                            int(season[0:4])
                        })

                except (ValueError, TypeError) as e:
                    logging.exception(e)

        return results
コード例 #3
0
ファイル: depth-update.py プロジェクト: WINsconsinSports/nba
def rotoworld(scraper, season, db):
    results = []
    p = RotoworldNBAParser()

    url = 'http://www.rotoworld.com/teams/depth-charts/nba.aspx'

    for d in date_list(d2=season_start(season), d1=season_end(season), delta=7):
        dstr = datetostr(d, 'db')
        try:
            content, content_date = scraper.get_wayback(url, d=dstr, max_delta=10)
            if content and content_date:
                for r in p.depth_charts(content, dstr):
                    r.pop('pf', None)
                    db._insert_dict(r, 'depth_charts')
                    results.append(r)
                logging.info('completed {}'.format(dstr))
            else:
                logging.error('could not get {}'.format(dstr))
        except Exception as e:
            logging.exception('could not get {}: {}'.format(dstr, e))
コード例 #4
0
ファイル: nbacom.py プロジェクト: WINsconsinSports/nba
    def teamstats(self,
                  season,
                  date_from=None,
                  date_to=None,
                  all_missing=False):
        '''
        Fetches teamstats and updates database table

        Arguments:
             season (str): in YYYY-YY format (2015-16)
             date_from (str): in %Y-%m-%d format, default beginning of season
             date_from (str): in %Y-%m-%d format, default yesterday
             all_missing: boolean

        Returns:
             list of team dictionary of basic and advanced stats

         Examples:
            a = NBAComAgent()
            ps = a.teamstats(season='2015-16', date_from='2016-03-01', date_to='2016-03-08')
            ps = a.teamstats(season='2015-16', all_missing=True)
        '''
        if date_from and date_to:
            ts_base = self.parser.teamstats(
                self.scraper.teamstats(season,
                                       DateFrom=date_from,
                                       DateTo=date_to))
            ts_advanced = self.parser.teamstats(
                self.scraper.teamstats(season,
                                       DateFrom=date_from,
                                       DateTo=date_to,
                                       MeasureType='Advanced'))
            ts = [
                merge(dict(), [psb, psadv])
                for psb, psadv in zip(ts_base, ts_advanced)
            ]
            if self.insert_db:
                self.db.insert_teamstats(ts, as_of=date_to)
            return ts
        elif all_missing:
            tstats = {}
            start = datetostr(d=season_start(season), site='nba')
            for day in self.db.select_list(missing_teamstats()):
                daystr = datetostr(day, 'nba')
                ts_base = self.parser.teamstats(
                    self.scraper.teamstats(season,
                                           DateFrom=start,
                                           DateTo=daystr))
                ts_advanced = self.parser.teamstats(
                    self.scraper.teamstats(season,
                                           DateFrom=start,
                                           DateTo=daystr,
                                           MeasureType='Advanced'))
                ts = [
                    merge(dict(), [psb, psadv])
                    for psb, psadv in zip(ts_base, ts_advanced)
                ]
                tstats[daystr] = ts
                if self.insert_db:
                    self.db.insert_teamstats(ts, as_of=daystr)
                    logging.debug('teamstats: completed {}'.format(daystr))
                else:
                    logging.error('did not insert: {}'.format(ts))
            return tstats
        else:
            raise ValueError(
                'need to specify dates or set all_missing to true')
コード例 #5
0
ファイル: nbacom.py プロジェクト: WINsconsinSports/nba
    def playerstats(self,
                    season,
                    date_from=None,
                    date_to=None,
                    all_missing=False):
        '''
        Fetches playerstats and updates player_gamelogs table

        Arguments:
            season: str in YYYY-YY format (2015-16)
            date_from: str in YYYY-mm-dd format
            date_to: str in YYYY-mm-dd format
            all_missing: boolean

        Returns:
             players (list): player dictionary of stats + dfs points

        Examples:
            a = NBAComAgent()
            np = a.playerstats(season='2015-16', date_from='2016-03-01', date_to='2016-03-08')
        '''
        if date_from and date_to:
            ps_base = self.parser.playerstats(
                self.scraper.playerstats(season,
                                         DateFrom=date_from,
                                         DateTo=date_to))
            ps_advanced = self.parser.playerstats(
                self.scraper.playerstats(season,
                                         DateFrom=date_from,
                                         DateTo=date_to,
                                         MeasureType='Advanced'))
            ps = [
                merge(dict(), [psb, psadv])
                for psb, psadv in zip(ps_base, ps_advanced)
            ]
            if self.insert_db:
                self.db.insert_playerstats(ps, as_of=date_to)
            return ps
        elif all_missing:
            pstats = {}
            start = datetostr(d=season_start(season), site='nba')
            for day in self.db.select_list(missing_playerstats()):
                daystr = datetostr(day, 'nba')
                ps_base = self.parser.playerstats(
                    self.scraper.playerstats(season,
                                             DateFrom=start,
                                             DateTo=daystr))
                ps_advanced = self.parser.playerstats(
                    self.scraper.playerstats(season,
                                             DateFrom=start,
                                             DateTo=daystr,
                                             MeasureType='Advanced'))
                ps = [
                    merge(dict(), [psadv, psb])
                    for psb, psadv in zip(ps_base, ps_advanced)
                ]
                pstats[daystr] = ps
                if self.insert_db:
                    self.db.insert_playerstats(ps, as_of=daystr)
                    logging.info('completed {}'.format(daystr))
            return pstats
        else:
            raise ValueError(
                'need to specify dates or set all_missing to true')