An emergency patch to get this back onto CRAN, and packaging up some longstanding bugfixes also. Will need to revisit testing policy in future releases.
ff_league.mfl_conn()
bug which created duplicate
rows for leagues with both an email auction and email draft. (resolves
#349)ff_scoringhistory()
default arguments, now uses nflreadr::most_recent_season()
as the default upper bound.(resolves #347)dp_values()
now explicitly returns rather than
invisibly returns.nflreadr::ffverse_sitrep()
and encourage
usage in bug reporting.ff_transactions.mfl_conn()
bug that did not return
auction bids, resolves #354ff_league.espn_conn()
now counts TQB when evaluating
qb_type and qb_count, resolves #367ff_starter_positions.mfl_conn()
now splits RB+WR and
RB+WR+TE positions into their own positional rows and resummarisessleeper_connect()
now warns if you use a non-character
league_id parameter - Sleeper league IDs are too long (18 characters)
and longdouble support is inconsistent from OS to OSff_standings.mfl_conn()
changed to adapt to MFL API
changes as documented in 2022
API release notes, resolves #366ff_starters.sleeper_conn()
bugfixed for API change
(last-scored-leg -> leg)ff_scoring()
fixed for dev purrr issuesff_transactions.flea_conn()
bugfixed for infinite loop
problem, resolves #356 (thank you @jdegregorio!)The main goal of v1.4.7 is to patch some minor bugs and to
pre-emptively correct issues related to upstream dependency
tidyr
.
ff_scoringhistory.flea_conn()
kicking bug.ff_schedule.mfl_conn()
NA bug..espn_stat_map()
to add threshold-based scoring
and fix a missing defensive scoring settingff_scoringhistory.espn_conn()
to add threshold
calcs. (thank you, @scottfrechette!)espn_potentialpoints()
to move regular flex ahead
of superflexff_scoring()
for MFL gets some tweaks to support
changes to tidyr (thanks, @DavisVaughan!)Grateful to @davisderodes,@DavisVaughan, @draftydesert277,@scottfrechette, and @TheMathNinja for their contributions to this release - feedback, issues, and PRs!
The main goal of v1.4.6 is to patch some minor bugs, introduce a unified dependency on nflreadr, and add some support for kicker scoring.
ff_template()
adds a template connection for
ff_starter_positions()
, ff_scoring()
, and
ff_scoringhistory()
to more easily pull common scoring
templates.ff_scoringhistory()
and
support ~ most kicker scorings (MFL’s may be weird.)ff_league()
for MFL now returns league type (“dynasty”,
“keeper”, “redraft”) if the field is set.ff_league()
for MFL now returns draft type (e.g. “email
draft”, “live auction”) if the field is set.ff_league()
for MFL now returns draft player pool
(e.g. “Rookie”, “Veteran”, “Both”) if the field is set. (These three
changes fix #311, thanks @maat7043!)ff_schedule()
for ESPN now credits a bye team with a
win instead of causing an error.espn_getendpoint()
no longer returns an error for
seasons prior to 2018. (Thanks, @JoeSydlowski!)nflfastr_weekly()
and nflfastr_roster()
now use the nflreadr package
functions back-endff_starters()
for ESPN now also tries to return a
projected score for the week - thank you, @scottfrechette! Resolves #323.ff_schedule()
for Sleeper no longer broken - resolves
#322.ff_schedule()
for MFL now returns NA as the result for
unplayed games and becomes consistent with other platforms.ff_scoringhistory()
for MFL now parses decimal ranges
correctlyff_scoringhistory()
into memoisable pieces
(.nflfastr_offense_long
,
.nflfastr_kicker_long
, .nflfastr_roster
)Immensely grateful to: Joe Sydlowski, Matt Spencer, Santiago Casanova, Scott Frechette, and all others who raised issues and contributed code towards this release!
The main goal of v1.4.5 is to comply with CRAN somehow testing our examples.
ff_league()
for ESPN now works for non-ppr
leagues.try()
in all examples because apparently
\donttest
doesn’t do anything anymore 😡 (fixes #308)The main goal of v1.4.4 is to patch minor bugs and to add some minor extensions such as an HTML cleaning function. v1.4.4 is also served from a different github organization and website domain.
mfl_getendpoint()
and similar get_endpoint functions
have an improved print method that tells you whether the request was
successful.ff_starters()
,
ff_transactions()
, ff_rosters()
,
espn_potentialpoints()
, ff_draft()
. Fixes
#297, thanks for the report @jpiburn!ff_transactions()
now correctly handles leagues using
waiver priority, fixes #299 - thanks for the report @BarkovMVP!ff_league()
for Sleeper now identifies best ball
leagues, fixes #300ff_scoring()
for MFL now has a points_type
column that is either “each” or “once” - this helps delineate fantasy
points awarded for meeting thresholds/bonuses from points awarded
per-stat, fixes #301ff_scoringhistory()
for MFL applies the new
ff_scoring()
points_type
column to calculate
scoring history. This should result in more sensible results for leagues
with bonus scoring! Fixes #301.dp_clean_html()
to clean html from names (cough MFL
cough)ff_starter_positions()
now handles a “range” inside of
the total_starters column for MFL, resolves #304The main goal of v1.4.3 is to patch some minor bugs.
ff_league()
now has a column that returns the
platform’s season - this is most useful when running ff_league in batch.
Thank you to @joeflan
for the contribution! (Fixes #287)ff_schedule()
for Sleeper now should extend into
playoff weeks. (Fixes #289)ff_draft()
for Sleeper now has an auction_amount column
if it is an auction draft. (Fixes #291)dp_cleannames()
now can flip names originally presented
in LastName, FirstName order into First Last, and also has a custom name
database to convert common alternate names to a unified one.nflfastr_stat_mapping
and dp_name_mapping
are namespaced within the package, so that they can be used internally
and externally a little more robustly.The main goal of v1.4.2 is to patch some minor bugs.
espn_rosters
now has a week
argument to
return a specific week of data. (Fixes #276, thanks @scottfrechette!)ff_scoringhistory
now tries to return a
platform-specific player ID, where available. (Fixes #275)sleeper_players()
- gsis_id gets
str_squish
applied to it to resolve some stowaway
whitespaces.mfl_players()
- add any_of
handling for
columns to handle column name changes.sleeper_transactions
now handles offseason transactions
correctlyThe main goal of v1.4.1 is to patch some issues raised by CRAN checks
and also correct some bugs in the new experimental
ff_scoringhistory
and ff_starter_positions
functions released in v1.4.0.
nflfastr_stat_mapping
is a dataframe that maps nflfastr
columns to fantasy scoring rules, and is now exported for end-user
usage. It is primarily used inside of
ff_scoringhistory()
.release_questions
to help remind me to maintain
test infrastructuremfl_starter_positions
now correctly calculates
offensive starters (first via “iop_starters” if defined and then
otherwise by subtracting idp starters) as well as kdst_starters
(Resolves #264).ffscrapr_env
relocated from being a child of the base
environment to being a child of the empty environment (Resolves
#269)ff_scoringhistory
refactored and adds better support
for MFL’s fumbles and firstdowns. (Resolves #265)The main goal of v1.4.0 is to add preliminary support for connecting ffscrapr to nflfastR weekly data, and to clean up bugs from v1.3.0. Huge thanks goes to Joe Sydlowski for his contributions on scoring history (and everything else DynastyProcess!)
nflfastr_weekly()
imports weekly offensive statistics
from nflfastR’s data
repository.nflfastr_rosters()
imports team rosters from nflfastR’s
roster
repository.ff_scoringhistory()
connects your league’s scoring
settings to the nflfastr data (c/o the functions above), and allows you
to reconstruct historical scoring for your league!ff_starter_positions()
describes the starter rules for
each player/position, including min and max starters at each position
accounting for flex spots. This should be useful for calculating things
like value over replacement!ff_scoring
for ESPN loses the “override_pos” which only
had a value of 16 for D/ST specific rulesff_scoring
rules for ESPN and Sleeper have been
expanded from one line per rule to one line per position per rulemfl_playerscores
to use season + league specific
players call where possible (#239)flea_rosters
test to 200, which
fixes an API check issue (#242)sleeper_transactions
now correctly handles multiple
dropped players in one transaction. (#246).mfl_transactions
- adds numeric string parsing to fix
bug in auction bid amount (#)mfl_draft
now calculates age as of timestamp and also
adds an overall column. (#259, #260)The main goal of ffscrapr 1.3.0 is to add support for the ESPN platform. It also includes several bug fixes, code quality improvements, and a major refactor of tests to reduce overall package size.
A huge thank-you goes to Tony ElHabr for his contributions to the package for the ESPN methods.
custom_players
arguments are deprecated for MFL - it
will now return them by default.ESPN is a tricky and undocumented API. Private leagues are accessible if you use the SWID/ESPN_S2 authentication arguments, which are a lot like API keys - see the ESPN authentication vignette.
Unsupported functions:
ff_draftpicks()
- this does not apply to ESPN primarily
because it does not support draft pick trades.ff_userleagues()
- ESPN does not support looking up
user’s leagues, even when authenticateddp_cleannames()
is a utility function for cleaning
player names that removes common suffixes, periods, and
apostrophes.espn_potentialpoints()
calculates the optimal lineup
for each week. This ishttr::RETRY
instead -
this adds some robustness for server-side issues. As suggested by Maelle
Salmon’s blog post on not reinventing the
wheel.ff_playerscores()
function so that
it correctly pulls older names. (Resolves #196)ff_starters()
function - bad
default arg, bad players call. (Fixes #202)ff_rosters()
by adding a week
parameter (Fixes #215)ff_transactions()
bid_amount into a numeric
(Fixes #210)ff_starters()
(Fixes
#212)Minor patches to dp_import functions to address issues discovered by CRAN checks.
Also adds minor helper function, dp_cleannames()
,
which is a utility function for cleaning player names that removes
common suffixes, periods, and apostrophes.
Messed up the export here, whoops. Fixing for next release.
dp_values()
and dp_playerids()
functions to use httr backend for compat with httptest, preventing CRAN
errors.sleeper_userleagues
to
be a character column (because of cran no-longdouble support)The main goal of ffscrapr 1.2.0 is to add a full set of methods for Fleaflicker. This release also adds improved caching options, including writing to your filesystem for persistent caching (see the vignette!), and one hotfix for sleeper_getendpoint.
sleeper_getendpoint()
now behaves more like the other
getendpoint functions - first argument is the endpoint and any further
args are passed as query parameters.All functions now have Fleaflicker methods! Here are notes about what isn’t the same:
fleaflicker_players()
requires a connection/leagueID by
default - acts a little oddly on game days as of right now.ff_playerscores()
- Fleaflicker’s API returns season
level data easily, week-level is not readily available yet without some
workarounds. Everything else seems to be okay.The main goal of ffscrapr 1.1.0 is to add a full set of methods for
Sleeper. Also adds two new generics: ff_userleagues()
and
ff_starters()
.
Here is a list of new functions available at the top level (ie for all platforms)
ff_userleagues()
returns a list of user leagues. This
is deployed slightly differently for MFL and Sleeper - MFL requires
authentication to access user’s leagues, while Sleeper doesn’t have
authentication so you can look up any user you like.ff_starters()
returns a list of players
started/not-started each week. MFL will return the actual score of each
player each week and calculate whether they were optimal, while Sleeper
just returns the player themselves.Almost all functions now have Sleeper methods - implemented in what hopes to be relatively familiar manner to MFL. Outlining the specifics of what isn’t the same:
sleeper_userleagues()
is a wrapper on
ff_userleagues()
that makes it easier to look up user
leagues without first creating a connection object.ff_playerscores()
is not available for Sleeper because
Sleeper removed the player stats endpoint - it will generate a warning
(rather than an error). Thinking about creating some functions to
calculate scoring based on nflfastr.sleeper_getendpoint()
is a little more simple than
MFL’s equivalent - just pass a string url (minus api.sleeper.app/v1) or
pass in chunks of code, the function will automatically paste them
together with “/”.ff_userleagues()
- Sleeper
league IDs are more annoying than MFL to handle, so the more intuitive
way is to look up the user’s league_ids by username first. MFL does have
a parallel feature even if used for different purposes.ff_userleagues()
ff_standings()
(#69, nice.)ff_starters()
as requested by #76 (thanks,
Mike!)httr::handle_reset()
call to fix login-caching
bug.This is the first (major) version of ffscrapr and it is intended to build out the full set of functions for the first API platform: MFL.
Future versions will add more platforms via methods mapped to the same functions.
Functions include:
ff_connect
(and sibling mfl_connect
) to
establish connection parameters and ratelimitingmfl_getendpoint
as a low-level function for making GET
requests from MFLff_draft
gets draft resultsff_draftpicks
gets current and future draft picks that
have not yet been selectedff_franchises
gets franchise-level identifiers and
divisionsff_league
gets league-level summaries of rules,
players, and franchisesff_playerscores
gets playerweek-level scoresff_rosters
gets franchise-level rosters complete with
namingff_schedule
gets weekly fantasy schedulesff_scoring
gets scoring rulesff_standings
gets league-level season summariesff_transactions
gets a list of all transactions and
cleans them into a data frame.