CRAN Release
fotmob_get_match_info()
added. (#166)fb_squad_wages()
designed to get player wage estimates
from FBref via Capologyload_fb_big5_advanced_season_stats()
returning zero row
df when no season selected. Now rectifiedfotmob_get_season_stats()
: Fixed bug in
.fotmob_get_single_season_stats()
where season ids with
dashes, e.g. "17709-Apertura"
for Liga MX 2022/2023 would
error.fb_big5_advanced_season_stats()
throwing error for team
stats. Also updated to only have one page load, hopefully minimising the
risk of being blocked for excessive page loadsfotmob_get_match_team_stats()
added.Elements changed on FBref somewhere in the same time
v 0.5.11
was being released!
fb_advanced_match_stats()
fb_match_summary()
fb_advanced_match_stats()
replaces
get_advanced_match_stats
fb_match_lineups()
replaces
get_match_lineups
fb_match_results()
replaces
get_match_results
fb_match_report()
replaces
get_match_report
fb_match_shooting()
replaces
get_match_shooting
fb_match_summary()
replaces
get_match_summary
fb_match_urls()
replaces
get_match_urls
fb_season_team_stats()
replaces
get_season_team_stats
fb_team_match_results()
replaces
get_team_match_results
tm_player_market_values()
replaces
get_player_market_values
tm_player_transfer_history
replaces
player_transfer_history
The following functions now no longer return league/season metadata,
including columns League
, Gender
,
Country
, Season
:
fb_match_summary()
fb_advanced_match_stats()
fb_match_report()
v 0.5.10
as changed again on
FBreffb_big5_advanced_season_stats()
throwing error as
Matches played
column now names MP
#158Improve fotmob tests by checking for column names instead of just number of columns. ### Bug fixes
fotmob_get_league_tables()
: Fix unnesting to
accommodate additional nesting and identical names at different levels.
This bug affected fotmob_get_season_stats()
, which calls
fotmob_get_league_tables()
#155
fotmob_get_match_players()
returns stats as characters
#150fotmob_get_season_stats()
: Address logic for extracting
season ids from season stats pages that was failing due to blank stats
pages in the offseason for a league.get_match_lineups()
wasn’t returning the away team name
#147understat_league_season_shots()
would error when
passing in a new season_start_year
value for seasons that
haven’t yet started but match fixtures are available on Understat #148load_fotmob_matches_by_date()
,
load_fotmob_match_details()
: Functions to load pre stored
match ids and match details.fotmob_get_match_details()
,
fotmob_get_matches_by_date()
, and
fotmob_get_match_players()
: Nested list columns are
unnested by default. The lone exception is shotmap
in the
output for fotmob_get_match_players()
.load_understat_league_shots()
Functions to load pre
stored shooting locations for all matches played since the 2014/15
season for the five leagues available on the Understat site.load_match_comp_results()
Functions to load pre stored
match results from domestic and international cups/competitionsfotmob_get_season_stats()
no longer errors out when
stats are queried for a league in its offseason #136player_transfer_history()
no longer throwing errors for
players without a club #137player_transfer_history()
no longer throwing errors for
retired players and also addressed changed HTML on transfermarkt
returning no data #127fotmob_get_league_ids()
- now uses new endpoint for
league ids (data in script element no longer has data). This function is
internally used by fotmob_get_league_matches()
,
fotmob_get_league_tables()
, and
fotmob_get_season_stats()
, which would have been broken if
cached=FALSE
was specified.To respect FBref’s rate limiting rules, all functions have now been updated to have a default pause of three seconds between page loads, up from two seconds which was originally requested.
Now starting to have load functions:
get_match_report()
and
get_advanced_match_stats()
- now reporting the match date
and away team name again. Additionally, Home_Goals
and
Away_Goals
text strings now clean strings (tabs and line
breaks removed) #128Now starting to have load functions:
load_match_results()
- function to load pre stored data
similar to get_match_results()
load_fb_big5_advanced_season_stats()
- function to load
pre stored data similar to
fb_big5_advanced_season_stats()
fotmob_get_league_matches()
and
fotmob_get_league_tables()
after changes to names in JSON
response (fixtures
-> matches
,
tableData
-> table
) #121, #122api/
in URLfotmob_get_season_stats()
player_transfer_history()
updated after html changes on
Transfermarkt caused function to return zero row data frame #120tm_player_bio()
addresses where some data points don’t
exist for some players and returns NAsunderstat_team_stats_breakdown()
now returns the
correct season_start_year
value #119stat_name
#118time_pause
) before each page load to abide by their new
rate limiting rules. See here.
Default is set to 2
seconds.get_each_season_results()
exported
nowfotmob_get_seasons_stats
failed for non-domestic
leagues, even when setting cached=TRUE
. Fix was to add
logic such that the latest season for a given league is found from the
“See More” links on a generic stats page.fotmob_get_league_tables
works properly for international
tournaments.stat_type
argument in
fotmob_get_seasons_stats
renamed to stat_name
to reflect the different set of values that it takes. Valid values are
now equivalent to the options that can be found on the stats page in the
browser, e.g. the
Liverpool player stats page.fotmob_get_match_players
failed for non-domestic
leagues because the team
element does id not exist under
the table
element. Fix is to have more robust element for
assigning team ids for players.tm_player_bio()
now also returns the player’s maximum
valuation (max_player_valuation
) and the date that max
valuation was recorded (max_player_valuation_date
).
Note: there will now be an additional two columns to
the outputtm_player_bio
returning player number instead of name
and also NAs for valuation #109fotmob_get_season_stats
gains
stat_league_name
and can now be used for all leagues since
seasons are programmatically scrapedfotmob_get_league_matches
and
fotmob_get_league_tables
now check 2 places for the league
endpoint since it changes occasionally.fotmob_get_match_players
gets 3 additional columns:
match_id
, team_id
, team_name
. #105fb_team_match_log_stats()
- to get match logs of
selected stat types for a team(s) for all matches played in a
seasonfotmob_get_league_ids()
- to get Fotmob’s league ids,
which can be specified as an alternative to country
and
league_name
in fotmob_get_league_matches()
and
fotmob_get_league_tables()
fotmob_get_season_stats()
- to get stats for one or
more leagues, at team or player levelfotmob_get_league_matches()
- to select matches for one
or more leaguesfotmob_get_league_tables()
- to get standings for one
or more leaguesfotmob_get_matches_by_date()
- to select matches
occurring on specific day(s)fotmob_get_match_details()
- to get shooting locations
for an individual matchfotmob_get_match_players()
- extract player statistics
from matches.clean_table_names()
(internal function) now able to
clean tab names in fb_team_match_log_stats()
fotmob_get_match_players
and
fotmob_get_match_players()
fotmob_get_league_matches
and
fotmob_get_league_tables
updated to address new Fotmob
league endpoint.fotmob_get_match_players()
no longer returning the
identical home and away team IDs #93stats
column returned in fotmob_get_match_players()
fotmob_get_league_matches
and
fotmob_get_league_tables
updated to address new Fotmob
league endpoint.tm_squad_stats()
now returns team, league information
and also player URLsfb_player_scouting_report()
was returning incorrect
position comparisons in some cases #85get_player_market_values()
was returning no team URLs
for when there was no erroneous URLs in the initial scraped list, and
some columns not returning values due to HTML changes on
transfermarkttm_league_team_urls()
was returning no team URLs for
when there was no erroneous URLs in the initial scraped listget_match_results()
was returning additional
(incorrect) transfermarkt player URLs #82tm_league_debutants()
to be able to extract league
debutantstm_expiring_contracts()
to be able to extract expiring
contracts for a selected leaguetm_league_injuries()
to get all current injuries from a
selected leaguetm_player_injury_history()
to get the full player
injury history on transfermarkt for a selected player(s)fb_player_scouting_report()
had an issue with player
listed as three positions #80get_match_lineups()
now also returns match and player
URLs #78get_match_results()
now includes match URLs #78get_match_report()
now includes yellow and red card
counts #2tm_team_player_urls()
was returning additional
(incorrect) transfermarkt player URLstm_team_staff_urls()
allows users to extract URLs of
selected team staff members based on staff role (ie ‘Manager’,
‘Assistant Manager’, etc)tm_team_staff_history()
allows users to get all people
who have held the selected role in a team’s history and some summary
statisticstm_staff_job_history()
allows users to get all roles a
selected staff member(s) has held and performance data in that role
(wins, draws, losses, etc)tm_player_bio()
coercing other values to listsfb_team_player_stats()
allows users to get all stats
for a team(s) player season statsget_season_team_stats()
now returns an additional
column for MLS called Conference
for when
stat_type = "league_table"
and
stat_type = "league_table_home_away"
fb_player_scouting_report()
Warning: Unexecutable code in man/fb_player_scouting_report.Rd: pos_versus = "primary")
.pkg_message()
to allow users to easily suppress
messages outputted to the console by setting
options(mypackage.verbose = FALSE)
understat_
functions now return the
correct full season details (ie for
season_start_year = 2019
, the resulting season
column in the df will be ‘2019/2020’)understat_team_players_stats()
gets season-long player
stats for selected teamsunderstat_team_stats_breakdown()
gets team season
shooting data broken down into game statesunderstat_team_meta()
created to allow for the
extraction of team season URLsfotmob_get_matches_by_date()
and
fotmob_get_match_details()
added #61fb_player_scouting_report()
now contains an additional
column in the output (scouting_period
) that allows the user
to filter on the period they need the scouting report fortm_player_bio()
throwing errors due to another
change in html on Transfermarkttm_player_bio()
throwing errors due to change in
html on Transfermarkt #57player_dictionary_mapping()
#56get_match_summary()
and
get_match_lineups()
not returning results for games that
were canceled/postponed #55tm_team_transfers()
now includes which transfer window
the transfer occurred in #53tm_team_transfers()
now also includes player URLs from
Transfermarkt to allow for joining with player market values #51fb_player_season_stats()
was not returning results for
some players even though stats were available on FBref #52tm_player_bio()
now returns player market valuations #50get_player_market_values()
now returning the correct
current (current_club
) and previous
(previous_club
) clubs for playersplayer_dictionary_mapping()
returns a data frame of
players (names and FBref URLs) who have played in the top 5 Euro leagues
and their respective Transfermarkt URLfb_big5_advanced_season_stats()
now returns player URLs
from FBreffb_player_season_stats()
handles with print statement
when stat types are not present for players #33Transfermarkt functions tm_team_transfers()
and
player_transfer_history()
returning transfer prices now
differentiate between unknown (returning NA
) to free
transfers (returning 0
) #45
get_match_summary()
no longer throws errors where only
one team (home or away) didn’t have a recorded event #46Team
in the data frame column returned by
get_match_shooting()
no longer exists, with
Squad
being elevated in to it’s place instead.fb_player_scouting_report()
now returns results for
Goalkeepers also #42get_match_shooting()
now handles for when only one team
(home or away) record any shots #43get_match_shooting()
handles for extra time
periodstm_team_transfers()
handles for missing values for some
teams/leaguesget_player_market_values()
returning errors for seasons
prior to current season #41The following functions now return results for international matches fro FBref:
get_match_urls()
get_match_results()
get_match_report()
get_match_summary()
get_match_lineups()
get_match_shooting()
get_advanced_match_stats()
The following transfermarkt function has been improved:
tm_team_transfers()
now includes a column for
season
get_match_shooting()
returning duplicated home shots
data and not including away shotsget_match_summary()
not returning all Event_Players
where special characters usedtm_player_bio()
returning error when player valuations
not available on transfermarkt.complayer_transfer_history()
returns results even when
player hasn’t got a club to go to #37Functions to extract understat.com data now available: * Shots
locations data: * understat_league_season_shots()
to get
shot location data for all matches in a league season *
understat_team_season_shots()
to get shot locations for and
against a select team * understat_match_shots()
to get shot
locations for a selected match * understat_player_shots()
to get all available shot locations for games played by a selected
player * understat_league_match_results()
to get results
and match data for all matches played in a season
New transfermarkt.com functions: * tm_player_bio()
to
get player bios from transfermarkt * tm_team_transfers()
to
get all arrival and departures for a team season *
tm_squad_stats()
to get basic squad stats for teams for a
season * Helper functions: * tm_league_team_urls()
to get
teams URLs for a league season * tm_team_player_urls()
to
get player URLs for a given team
get_player_market_values()
from transfermarkt now
includes player heights, their preferred foot, when they joined the club
and where from and when their contract expiresplayer_transfer_history()
now includes remaining
contract expiry data and remaining contract length (in days) #34get_match_lineups()
now identifies diamond
formationsevent_time
, event_type
,
event_players
and score_progression
changed
for get_match_summary()
, and additional columns addedfb_player_season_stats()
now able to accept multiple
player_url
valuesget_match_summary()
now contains additional columns:
Is_Pens
to indicate whether the event is from a penalty
shootoutEvent_Half
to indicate which half the event occurred in
(1, 2, 3, 4, 5), with 3 & 4 being extra time and 5 being penalty
shootoutPenalty_Number
for penalty shootouts, the penalty
taking orderFix issue #32 for
get_match_summary()
where event times causing issues in
extra time of match half (ie 45+3 as opposed to 46th minute)
Fix issue #33 for
fb_player_season_stats()
where players not having played a
game were previously causing errors
get_advanced_match_stats()
, get_match_report()
and get_match_summary()
not returning results for lower
than tier 1 leaguesget_match_results()
not returning data for seasons before
2014-15fb_player_match_logs()
to get player match logs for a
season and stat type (issue #26)fb_player_scouting_report()
now returns a players
full scouting report against peers in Men’s Big 5
Leagues and European Competition over the last 365 days (issue 27)Squad
column of
the data frame returned using fb_player_season_stats()
get_match_shooting()
to get shot and shot creation
specific details (issue #3)get_team_match_results()
to get match results for a
given team or teams in a seasonget_match_lineups()
now returns additional summary
player performance data (shots, goals, cards, etc) to the original
lineups outputget_season_player_stats()
not
returning results for players who have only played in domestic comps
(not cups, internationals, etc) (issue #22)fb_big5_advanced_season_stats()
not
returning results for ‘playing_time’ stat_type (issue #23)tm_team_transfer_balances()
to get team total transfer
income and expenditure datatm_matchday_table()
to get league table after each
specified matchday(s)Fix duplicated results in some functions
Fix duplicating league URLs in various season-level functions as a result of including “Big 5” competition issue #20
Fix duplicating league URLs in fb_league_urls()
as a
result of including “Big 5” competition issue #19
fb_big5_advanced_season_stats()
to get fbref
season stats for all players or teams stats in the big five Euro
leaguesfb_league_urls()
to get fbref league URLs for a given
country, gender, season, tierfb_teams_urls()
to get fbref team URLs for a given
league_urlfb_player_urls()
to get fbref player URLs for a given
team_urlfb_player_scouting_report()
fb_player_season_stats()
get_match_urls()
,
get_match_results()
,
get_season_team_stats()
league_url
argument to
get_player_market_values()
to allow extraction of
non-standard (leagues not stored in
worldfootballR_data
) leaguesget_player_market_values()
data outputJaseZiv/worldfootballR_data
instead)get_player_market_values
to get player valuations
from transfermarkt.comget_match_results()
get_match_urls()
get_season_team_stats()
get_match_report()
get_match_lineups()
get_advanced_match_statistics()
get_match_summary()