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"); }
public override bool Equals(object obj) { ScorecardDetails md = obj as ScorecardDetails; if (md == null) { return(false); } if (MatchCode == md.MatchCode && !string.IsNullOrWhiteSpace(MatchCode)) { return(true); } if (!string.IsNullOrWhiteSpace(MatchCode) && !string.IsNullOrWhiteSpace(md.MatchCode)) { return(MatchCode == md.MatchCode); } return(Date == md.Date && HomeTeam == md.HomeTeam && AwayTeam == md.AwayTeam); }
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)); }