/// <summary> /// Helper method to test the APIs /// </summary> /// <param name="apiKey">Your personal API key as provided by FootyStats</param> public static void Test_APIs(string apiKey) { FootyStatsTypes.League[] leagues = FootyStatsObjectFactory.GetLeagues(apiKey); Console.WriteLine("League Count: {0} - League 1 Name: {1} - League 1 Season Count '{2}'", leagues.Length, leagues[1].name, leagues[1].season.Length); FootyStatsTypes.Match[] matches = FootyStatsObjectFactory.GetMatches(apiKey, 1625); Console.WriteLine("Matches count: {0} - Match 1 ID: {1} - Match 1 total goal count '{2}'", matches.Length, matches[0].id, matches[0].totalGoalCount); FootyStatsTypes.MatchDetails matchDetails = FootyStatsObjectFactory.GetMatchDetails(apiKey, 453979); Console.WriteLine("Match ID: {0} - Match Attendance: {1} - Match total goal count'{2}'", matchDetails.id, matchDetails.attendance, matchDetails.totalGoalCount); FootyStatsTypes.PlayerDetails[] playerDetails = FootyStatsObjectFactory.GetLeaguePlayers(apiKey, 1625); Console.WriteLine("Matches count: {0} - Match 1 ID: {1} - Match 1 total goal count '{2}'", playerDetails.Length, playerDetails[0].id, playerDetails[0].full_name); }
/// <summary> /// Helper Method to get all players who were involved in Goals and the necessary context, then writes it to an output CSV /// </summary> /// <param name="apiKey">Your personal API key as provided by FootyStats</param> /// <param name="seasonId">The Id of the season to get the player goals for</param> public static void Get_Players_Involved_In_Goals_With_Context(string apiKey, int seasonId) { List <FootyStatsTypes.MatchDetails> matchDetailsList = new List <FootyStatsTypes.MatchDetails>(); List <FootyStatsTypes.PlayerGoal> playerGoalsList = new List <FootyStatsTypes.PlayerGoal>(); Dictionary <int, FootyStatsTypes.PlayerDetails> playerDetailsIndexed = FootyStatsObjectFactory.GetLeaguePlayersIndexById(apiKey, seasonId); Dictionary <int, FootyStatsTypes.TeamDetails> teamDetailsIndexed = FootyStatsObjectFactory.GetLeagueTeamsIndexById(apiKey, seasonId); FootyStatsTypes.Match[] matches = FootyStatsObjectFactory.GetMatches(apiKey, seasonId); int counter = 0; foreach (FootyStatsTypes.Match match in matches) { FootyStatsTypes.MatchDetails matchDetails = FootyStatsObjectFactory.GetMatchDetails(apiKey, match.id); matchDetailsList.Add(matchDetails); // if (++counter > 5) break; } foreach (FootyStatsTypes.MatchDetails matchDetails in matchDetailsList) { if (matchDetails.status == "canceled") { continue; } int previous_score_home = 0; int previous_score_away = 0; List <FootyStatsTypes.Goal> homeGoals = matchDetails.team_a_goal_details.ToList(); int homeGoalsCount = homeGoals.Count; List <FootyStatsTypes.Goal> awayGoals = matchDetails.team_b_goal_details.ToList(); int awayGoalsCount = awayGoals.Count; List <FootyStatsTypes.Goal> sortedGoals = new List <FootyStatsTypes.Goal>(); while (homeGoals.Count > 0 || awayGoals.Count > 0) { FootyStatsTypes.Goal currentGoal; if (homeGoals.Count == 0) { currentGoal = awayGoals[0]; currentGoal.home = false; awayGoals.RemoveAt(0); sortedGoals.Add(currentGoal); } else if (awayGoals.Count == 0) { currentGoal = homeGoals[0]; currentGoal.home = true; homeGoals.RemoveAt(0); sortedGoals.Add(currentGoal); } else { if (homeGoals[0].clean_time < awayGoals[0].clean_time) { currentGoal = homeGoals[0]; currentGoal.home = true; homeGoals.RemoveAt(0); } else { currentGoal = awayGoals[0]; currentGoal.home = false; awayGoals.RemoveAt(0); } sortedGoals.Add(currentGoal); } } for (int i = 0; i < sortedGoals.Count; i++) { FootyStatsTypes.PlayerGoal currentPlayerGoal = new FootyStatsTypes.PlayerGoal(); FootyStatsTypes.Goal currentGoal = sortedGoals[i]; if (sortedGoals.Count == 1) { currentPlayerGoal.only_goal = true; } currentPlayerGoal.player_id = currentGoal.player_id; currentPlayerGoal.player_name = playerDetailsIndexed[currentGoal.player_id].full_name; currentPlayerGoal.match_id = matchDetails.id; currentPlayerGoal.previous_score_home = previous_score_home; currentPlayerGoal.previous_score_away = previous_score_away; currentPlayerGoal.scored = true; if ((previous_score_home - previous_score_away) == 0) { currentPlayerGoal.go_ahead_goal = true; if (i == sortedGoals.Count - 1) { currentPlayerGoal.game_winning_goal = true; } } else if ((((previous_score_home - previous_score_away) == -1) && currentGoal.home) || (((previous_score_home - previous_score_away) == 1) && !currentGoal.home)) { currentPlayerGoal.tying_goal = true; if (i == sortedGoals.Count - 1) { currentPlayerGoal.game_tying_goal = true; } } if (currentGoal.home) { if (homeGoalsCount == 1) { currentPlayerGoal.only_goal_team = true; } currentPlayerGoal.team_id = matchDetails.homeID; currentPlayerGoal.team_name = teamDetailsIndexed[matchDetails.homeID].name; currentPlayerGoal.team_final_table_position = teamDetailsIndexed[matchDetails.homeID].table_position; currentPlayerGoal.away_goal = false; previous_score_home++; } else { if (awayGoalsCount == 1) { currentPlayerGoal.only_goal_team = true; } currentPlayerGoal.team_id = matchDetails.awayID; currentPlayerGoal.team_name = teamDetailsIndexed[matchDetails.awayID].name; currentPlayerGoal.team_final_table_position = teamDetailsIndexed[matchDetails.awayID].table_position; previous_score_away++; currentPlayerGoal.away_goal = true; } playerGoalsList.Add(currentPlayerGoal); /// remember to also do the assist } } var csv = new StringBuilder(); csv.AppendLine(FootyStatsTypes.PlayerGoal.csv_header); foreach (FootyStatsTypes.PlayerGoal playergoal in playerGoalsList) { csv.AppendLine(playergoal.csv_line); } string filePath = @"c:\temp\PlayerGoals.csv"; File.WriteAllText(filePath, csv.ToString()); }