public static string BuildBoxScoresLast5MinUrl(BoxScoresLast5MinDTO oLast5MinDTO) { oLast5MinDTO.Source = "BasketballReference"; string BbrferTeam = SqlFunctions.TeamLookupTeamNameByTeamNameInDatabase(oLast5MinDTO.GameDate, oLast5MinDTO.LeagueName, oLast5MinDTO.Source, oLast5MinDTO.Team).Trim(); return($"https://www.basketball-reference.com/boxscores/pbp/{oLast5MinDTO.GameDate.ToString("yyyyMMdd")}0{BbrferTeam}.html"); }
static void populateBoxScoreLast5MinDTOValues(List <string> ocValues, object DTO) { BoxScoresLast5MinDTO oLast5MinDTO = (BoxScoresLast5MinDTO)DTO; ocValues.Add(oLast5MinDTO.LeagueName.ToString()); ocValues.Add(oLast5MinDTO.GameDate.ToString()); ocValues.Add(oLast5MinDTO.RotNum.ToString()); ocValues.Add(oLast5MinDTO.Team.ToString()); ocValues.Add(oLast5MinDTO.Opp.ToString()); ocValues.Add(oLast5MinDTO.Venue.ToString()); ocValues.Add(oLast5MinDTO.Q4Last5MinScore.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinScore.ToString()); ocValues.Add(oLast5MinDTO.Q4Score.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinScoreUs.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinScoreOp.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinWinningTeam.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt1.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt2.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinUsPt3.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt1.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt2.ToString()); ocValues.Add(oLast5MinDTO.Q4Last1MinOpPt3.ToString()); ocValues.Add(oLast5MinDTO.Source.ToString()); ocValues.Add(oLast5MinDTO.LoadDate.ToString()); }
static void populateAwayBoxScoreLast5MinDTOValues(BoxScoresLast5MinDTO oHomeDTO, BoxScoresLast5MinDTO oAwayDTO) { // Populate AWAY L5Min - reverse HOME info to AWAY info oAwayDTO.LeagueName = oHomeDTO.LeagueName; oAwayDTO.GameDate = oHomeDTO.GameDate; oAwayDTO.RotNum = oHomeDTO.Venue == "Home" ? --oHomeDTO.RotNum : ++oHomeDTO.RotNum; oAwayDTO.Team = oHomeDTO.Opp; oAwayDTO.Opp = oHomeDTO.Team; oAwayDTO.Venue = oHomeDTO.Venue == "Home" ? "Away" : "Home"; oAwayDTO.Q4Last5MinScore = oHomeDTO.Q4Last5MinScore; oAwayDTO.Q4Last1MinScore = oHomeDTO.Q4Last1MinScore; oAwayDTO.Q4Score = oHomeDTO.Q4Score; oAwayDTO.Q4Last1MinScoreUs = oHomeDTO.Q4Last1MinScoreOp; oAwayDTO.Q4Last1MinScoreOp = oHomeDTO.Q4Last1MinScoreUs; oAwayDTO.Q4Last1MinWinningTeam = oHomeDTO.Q4Last1MinWinningTeam; // Move OP info to US & Vise versa oAwayDTO.Q4Last1MinUsPt1 = oHomeDTO.Q4Last1MinOpPt1; oAwayDTO.Q4Last1MinUsPt2 = oHomeDTO.Q4Last1MinOpPt2; oAwayDTO.Q4Last1MinUsPt3 = oHomeDTO.Q4Last1MinOpPt3; oAwayDTO.Q4Last1MinOpPt1 = oHomeDTO.Q4Last1MinUsPt1; oAwayDTO.Q4Last1MinOpPt2 = oHomeDTO.Q4Last1MinUsPt2; oAwayDTO.Q4Last1MinOpPt3 = oHomeDTO.Q4Last1MinUsPt3; oAwayDTO.Source = oHomeDTO.Source; oAwayDTO.LoadDate = oHomeDTO.LoadDate; }
public static void InsertAwayHomeRowsBoxScoresLast5Min(BoxScoresLast5MinDTO oLast5MinDTOHome) { string url = Bball.DAL.Parsing.BoxScoresLast5Min.BuildBoxScoresLast5MinUrl(oLast5MinDTOHome); // Get Bb-ref Play by Play url Bball.DAL.Parsing.BoxScoresLast5Min oLast5Min = new Bball.DAL.Parsing.BoxScoresLast5Min(url); oLast5Min.ParseBoxScoresLast5Min(oLast5MinDTOHome); InsertBoxScoresLast5Min(oLast5MinDTOHome); // Insert Home BoxScoresLast5MinDTO oLast5MinDTOAway = new BoxScoresLast5MinDTO(); populateAwayBoxScoreLast5MinDTOValues(oLast5MinDTOHome, oLast5MinDTOAway); InsertBoxScoresLast5Min(oLast5MinDTOAway); // Insert Away }
public void ParseBoxScoresLast5Min(BoxScoresLast5MinDTO oLast5Min) { _oLast5Min = oLast5Min; HtmlParser oPage = new HtmlParser(_html); oPage.FindTagByString("Start of 4th quarter"); if (oPage.ReturnCode != 0) { throw new Exception("ParseBoxScoresLast5Min - Start of 4th quarter Not Found"); } oPage.FindTagByTagname("tr"); if (oPage.ReturnCode != 0) { throw new Exception("ParseBoxScoresLast5Min - Initial TR Not Found"); } parseTR(oPage.HtmlInner); while (otrTDs.TimeInSeconds > 300) // Get next TR savTime until Time< 5:00 / 300 seconds { oLast5Min.Q4Last5MinScore = otrTDs.AwayScore + otrTDs.HomeScore; oPage.FindTagByTagname("tr"); if (oPage.ReturnCode != 0) { throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 5 mins Not Found"); } parseTR(oPage.HtmlInner); } // while while (otrTDs.TimeInSeconds > 60) // Get next TR savTime until Time< 1 min / 60 seconds { oLast5Min.Q4Last1MinScore = otrTDs.AwayScore + otrTDs.HomeScore; oLast5Min.Q4Last1MinWinningTeam = otrTDs.AwayScore > otrTDs.HomeScore ? oLast5Min.Opp : oLast5Min.Team; oLast5Min.Q4Last1MinScoreUs = (double)otrTDs.HomeScore; oLast5Min.Q4Last1MinScoreOp = (double)otrTDs.AwayScore; oPage.FindTagByTagname("tr"); if (oPage.ReturnCode != 0) { throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 1 min Not Found"); } parseTR(oPage.HtmlInner); } // while while (otrTDs.TimeInSeconds > 0) // Get next TR savTime until Time = 0 seconds { oLast5Min.Q4Score = otrTDs.AwayScore + otrTDs.HomeScore; if (otrTDs.AwayPoints > 0) { switch (otrTDs.AwayPoints) { case 1: oLast5Min.Q4Last1MinOpPt1++; break; case 2: oLast5Min.Q4Last1MinOpPt2++; break; case 3: oLast5Min.Q4Last1MinOpPt3++; break; } } if (otrTDs.HomePoints > 0) { switch (otrTDs.HomePoints) { case 1: oLast5Min.Q4Last1MinUsPt1++; break; case 2: oLast5Min.Q4Last1MinUsPt2++; break; case 3: oLast5Min.Q4Last1MinUsPt3++; break; } } oPage.FindTagByTagname("tr"); if (oPage.ReturnCode != 0) { throw new Exception("ParseBoxScoresLast5Min - Get next TR savTime until Time< 5:00 Not Found"); } parseTR(oPage.HtmlInner); } // while Time > 0 } // ParseBoxScoresLast5Min
static void InsertBoxScoresLast5Min(BoxScoresLast5MinDTO oBoxScoresLast5MinDTO) => InsertRowPrep(BoxScoresLast5MinTable, BoxScoresLast5MinColumns, oBoxScoresLast5MinDTO, populateBoxScoreLast5MinDTOValues);
public int LoadBoxScore(DateTime GameDate) // Return NumOfMatchups { /* * * */ DateTime LoadDateTime = DateTime.Now; string _strLoadDateTime = LoadDateTime.ToString(); SortedList <string, CoversDTO> ocRotation = new SortedList <string, CoversDTO>(); RotationDO.PopulateRotation(ocRotation, _oSeasonInfo.GameDate, _oLeagueDTO, _ConnectionString, _strLoadDateTime); if (ocRotation.Count == 0) { return(0); // No Games for GameDate } foreach (var matchup in ocRotation) { CoversDTO oCoversDTO = matchup.Value; // 1) Get BoxScore from Covers CoversBoxscore oCoversBoxscore = new CoversBoxscore(GameDate, _oLeagueDTO, oCoversDTO); oCoversBoxscore.GetBoxscore(); // Get BoxScore from Covers if (oCoversBoxscore.ReturnCode != 0) { // kdtodo log error continue; } string[] arVenue = new string[] { "Away", "Home" }; for (int i = 0; i < 2; i++) { try { // Write Away & Home rows to BoxScores BoxScoresDTO BoxScoresDTO = new BoxScoresDTO(); oCoversBoxscore.PopulateBoxScoresDTO(BoxScoresDTO, arVenue[i], _oSeasonInfo.oSeasonInfoDTO.Season, _oSeasonInfo.oSeasonInfoDTO.SubSeason, LoadDateTime , oCoversBoxscore.LoadTimeSecound, "Covers"); Bball.DAL.Tables.BoxScoreDO.InsertBoxScores(BoxScoresDTO); } catch (Exception ex) { string msg = $"BoxScore Load Error - " + $"{_oLeagueDTO.LeagueName}: {GameDate} {oCoversDTO.RotNum}:{arVenue[i]} {oCoversDTO.TeamAway}-{oCoversDTO.TeamHome} " + "\n" + oCoversDTO.Url; throw new Exception(SysDAL.DALfunctions.StackTraceFormat(msg, ex, "")); } } // Write Last 5 Minutes stats BoxScoresLast5MinDTO oLast5MinDTOHome = new BoxScoresLast5MinDTO() { LeagueName = oCoversDTO.LeagueName , GameDate = oCoversDTO.GameDate , RotNum = oCoversDTO.RotNum + 1 , Team = oCoversDTO.TeamHome , Opp = oCoversDTO.TeamAway , Venue = "Home" , LoadDate = LoadDateTime }; try { //Bball.DAL.Tables. BoxScoreDO.InsertAwayHomeRowsBoxScoresLast5Min(oLast5MinDTOHome); } catch (Exception ex) { string msg = $"BoxScoreL5Min Load Error - " + $"{_oLeagueDTO.LeagueName}: {GameDate} {oCoversDTO.RotNum}: {oCoversDTO.TeamAway}-{oCoversDTO.TeamHome} " + "\n" + Bball.DAL.Parsing.BoxScoresLast5Min.BuildBoxScoresLast5MinUrl(oLast5MinDTOHome); // throw new Exception(SysDAL.DALfunctions.StackTraceFormat(msg, ex, "")); //Trace.Trace.Log(SysDAL.DALfunctions.StackTraceFormat(msg, ex, "")); } } // foreach AdjustmentsDO oAdjustments = new AdjustmentsDO(GameDate, _oLeagueDTO.LeagueName, _ConnectionString); oAdjustments.ProcessDailyAdjustments(GameDate, _oLeagueDTO.LeagueName); return(ocRotation.Count); // return NumOfMatchups } // LoadBoxScore