private static void ParseScorecard(FileStore dataStore, ScorecardDetails md) { CricketMatch m = dataStore.Load <CricketMatch>(CricketMatch.GenerateId(md.Season, md.MatchCode)); if (m != null) { Log.InfoFormat("Match {0} ({1}) has already been imported", md.MatchCode, m); return; } Log.InfoFormat("Parsing scorecard for {0}", md); string scorecard = dataStore.LoadText(md.GenerateScorecardKey(), "html"); if (string.IsNullOrEmpty(scorecard)) { return; } DependencyFinder finder = new DependencyFinder(dataStore); ScorecardParser parser = new ScorecardParser(md, finder); parser.Parse(scorecard); CricketMatch match = parser.Match; dataStore.Save(match, match.Id); Log.Info(match.ToLongString()); }
protected static string FormatValue(ScorecardDetails value, int length) { string asString = value.ToString(); asString = Regex.Replace(asString, "\\s+", " "); if (asString.Length <= length) { return(asString.PadRight(length)); } return(asString.Substring(0, length)); }
public ScorecardParser(ScorecardDetails details, DependencyFinder finder) { _finder = finder; _match = new CricketMatch { Id = CricketMatch.GenerateId(details.Season, details.MatchCode), MatchCode = details.MatchCode, HomeTeam = details.HomeTeam, AwayTeam = details.AwayTeam, Season = details.Season, StartDate = details.Date, Players = "11 per side", Innings = new List <Innings>() }; }
private static void SaveScorecard(ScorecardDetails details, Task <string> task, FileStore dataStore) { if (task.Exception != null) { Log.Error(string.Format("Failed to download file from http://www.cricketarchive.com{0}", details.ScorecardUrl), task.Exception); return; } string scorecard = task.Result; if (string.IsNullOrEmpty(scorecard)) { Log.WarnFormat("Nothing returned from http://www.cricketarchive.com{0}", details.ScorecardUrl); return; } dataStore.StoreText(scorecard, details.GenerateScorecardKey(), "html"); }
private static Task DownloadScorecardAsync(ScorecardDetails details, FileStore dataStore) { Log.InfoFormat("Fetching URL {0}", details.ScorecardUrl); return(Task.Factory.StartNew(() => WebClient.FetchWebPageContent(details.ScorecardUrl)) .ContinueWith(t => SaveScorecard(details, t, dataStore))); }