From 573a2889ab1078a52490a6373ae197177ad91d7e Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Mon, 10 May 2021 09:11:07 -0400 Subject: [PATCH 01/31] Increment version number --- DESCRIPTION | 2 +- NEWS.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 6e89da6f..a4bc3d5f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2 +Version: 1.4.2.00 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 26111ed8..3d59a8cf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# ffscrapr (development version) + + + +--- + # ffscrapr 1.4.2 The main goal of v1.4.2 is to patch some minor bugs. From 92376b20caca5efef767987b8898fdb07cdcfff8 Mon Sep 17 00:00:00 2001 From: Joe Flanagan Date: Wed, 26 May 2021 22:31:17 -0400 Subject: [PATCH 02/31] Adding season to ff league function (#288) * adding season to ff_league function Fixes #287 * setting all season to ints --- R/espn_league.R | 1 + R/flea_league.R | 1 + R/mfl_league.R | 1 + R/sleeper_league.R | 1 + README.md | 3 ++- 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/R/espn_league.R b/R/espn_league.R index 12942264..ae446be4 100644 --- a/R/espn_league.R +++ b/R/espn_league.R @@ -27,6 +27,7 @@ ff_league.espn_conn <- function(conn) { tibble::tibble( league_id = conn$league_id, league_name = league_endpoint$content$settings$name, + season = as.integer(conn$season), league_type = .espn_is_keeper(league_endpoint), franchise_count = franchise_count, qb_type = .espn_is_qbtype(league_endpoint)$type, diff --git a/R/flea_league.R b/R/flea_league.R index 368b95dd..6ddc0d58 100644 --- a/R/flea_league.R +++ b/R/flea_league.R @@ -20,6 +20,7 @@ ff_league.flea_conn <- function(conn) { tibble::tibble( league_id = as.character(conn$league_id), league_name = league_endpoint$league$name, + season = as.integer(conn$season), league_type = .flea_isdyno(league_endpoint), franchise_count = as.numeric(league_endpoint$league[["capacity"]]), qb_type = .flea_qbtype(league_endpoint)$type, diff --git a/R/mfl_league.R b/R/mfl_league.R index 450054b3..59622416 100644 --- a/R/mfl_league.R +++ b/R/mfl_league.R @@ -20,6 +20,7 @@ ff_league.mfl_conn <- function(conn) { tibble::tibble( league_id = conn$league_id, league_name = league_endpoint$name, + season = as.integer(conn$season), franchise_count = as.numeric(league_endpoint$franchises$count), qb_type = .mfl_is_qbtype(league_endpoint)$type, idp = .mfl_is_idp(league_endpoint), diff --git a/R/sleeper_league.R b/R/sleeper_league.R index 312b705a..38aec6d9 100644 --- a/R/sleeper_league.R +++ b/R/sleeper_league.R @@ -31,6 +31,7 @@ ff_league.sleeper_conn <- function(conn) { tibble::tibble( league_id = as.character(conn$league_id), league_name = league_endpoint$name, + season = as.integer(conn$season), league_type = .sleeper_isdyno(league_endpoint), franchise_count = as.numeric(league_endpoint$total_rosters), qb_type = .sleeper_qbtype(starting_positions)$type, diff --git a/README.md b/README.md index 063177d1..bdd72ded 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,10 @@ ff_league(ssb) %>% str() #> Using request.R from "ffscrapr" #> No encoding supplied: defaulting to UTF-8. #> No encoding supplied: defaulting to UTF-8. -#> tibble [1 x 13] (S3: tbl_df/tbl/data.frame) +#> tibble [1 x 14] (S3: tbl_df/tbl/data.frame) #> $ league_id : chr "54040" #> $ league_name : chr "The Super Smash Bros Dynasty League" +#> $ season : int 2020 #> $ franchise_count: num 14 #> $ qb_type : chr "1QB" #> $ idp : logi FALSE From 1c164ceaf496456b4c5e86d24efff31c9ee87f47 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 26 May 2021 22:36:47 -0400 Subject: [PATCH 03/31] v1.4.2.01 - add season to ff_league()` --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a4bc3d5f..84ade524 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.00 +Version: 1.4.2.01 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 3d59a8cf..5f4b6e9d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,8 @@ # ffscrapr (development version) +## Minor changes +- `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) (v1.4.2.01) --- From 2f05e6f84fa8441caae9a44a3aa9c155e646a813 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 26 May 2021 22:37:51 -0400 Subject: [PATCH 04/31] update test cache to dev version --- README.Rmd | 6 +++--- tests/testthat/setup.R | 6 +++--- tests/testthat/test-ff_scoringhistory.R | 4 ++-- vignettes/espn_basics.Rmd | 6 +++--- vignettes/espn_getendpoint.Rmd | 6 +++--- vignettes/ffscrapr_scoringhistory.Rmd | 4 ++-- vignettes/fleaflicker_basics.Rmd | 6 +++--- vignettes/fleaflicker_getendpoint.Rmd | 6 +++--- vignettes/mfl_basics.Rmd | 6 +++--- vignettes/mfl_getendpoint.Rmd | 6 +++--- vignettes/sleeper_basics.Rmd | 6 +++--- vignettes/sleeper_getendpoint.Rmd | 6 +++--- 12 files changed, 34 insertions(+), 34 deletions(-) diff --git a/README.Rmd b/README.Rmd index 7b210f89..8c0c54d1 100644 --- a/README.Rmd +++ b/README.Rmd @@ -23,10 +23,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -109,5 +109,5 @@ The APIs and data accessed by this package belong to their respective owners, an ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index fff492e5..6c31d7ec 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -15,13 +15,13 @@ skip <- FALSE if (download_mock) { tryCatch( expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip", "f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip", "f.zip") unzip("f.zip", exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2") + httptest::.mockPaths(new = "ffscrapr-tests-main") withr::defer( - unlink(c("ffscrapr-tests-1.4.2", "f.zip"), recursive = TRUE, force = TRUE), + unlink(c("ffscrapr-tests-main", "f.zip"), recursive = TRUE, force = TRUE), testthat::teardown_env() ) }, diff --git a/tests/testthat/test-ff_scoringhistory.R b/tests/testthat/test-ff_scoringhistory.R index c12c8afc..2aae334c 100644 --- a/tests/testthat/test-ff_scoringhistory.R +++ b/tests/testthat/test-ff_scoringhistory.R @@ -4,9 +4,9 @@ with_mock_api({ if (!identical(Sys.getenv("MOCK_BYPASS"), "true")) { testthat::local_mock( - nflfastr_weekly = function() readRDS("ffscrapr-tests-1.4.2/gh_nflfastr/player_stats.rds"), + nflfastr_weekly = function() readRDS("ffscrapr-tests-main/gh_nflfastr/player_stats.rds"), nflfastr_rosters = function(seasons) { - purrr::map_df(seasons, ~ readRDS(glue::glue("ffscrapr-tests-1.4.2/gh_nflfastr/roster_{.x}.rds"))) + purrr::map_df(seasons, ~ readRDS(glue::glue("ffscrapr-tests-main/gh_nflfastr/roster_{.x}.rds"))) } ) } diff --git a/vignettes/espn_basics.Rmd b/vignettes/espn_basics.Rmd index 90bbb764..e38ba0a7 100644 --- a/vignettes/espn_basics.Rmd +++ b/vignettes/espn_basics.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -158,6 +158,6 @@ In this vignette, I've used only a few functions: ff_connect, ff_league, ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/espn_getendpoint.Rmd b/vignettes/espn_getendpoint.Rmd index b38b71fe..febca384 100644 --- a/vignettes/espn_getendpoint.Rmd +++ b/vignettes/espn_getendpoint.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -153,5 +153,5 @@ Many of the API endpoints are being researched in other languages and you might ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/ffscrapr_scoringhistory.Rmd b/vignettes/ffscrapr_scoringhistory.Rmd index 73988f1a..61bd300b 100644 --- a/vignettes/ffscrapr_scoringhistory.Rmd +++ b/vignettes/ffscrapr_scoringhistory.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) diff --git a/vignettes/fleaflicker_basics.Rmd b/vignettes/fleaflicker_basics.Rmd index 603bd541..67c019d9 100644 --- a/vignettes/fleaflicker_basics.Rmd +++ b/vignettes/fleaflicker_basics.Rmd @@ -21,10 +21,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -160,6 +160,6 @@ In this vignette, I've used only a few functions: ff_connect, ff_league, ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/fleaflicker_getendpoint.Rmd b/vignettes/fleaflicker_getendpoint.Rmd index ca11ccf5..7a7a4e46 100644 --- a/vignettes/fleaflicker_getendpoint.Rmd +++ b/vignettes/fleaflicker_getendpoint.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -121,6 +121,6 @@ From here, you can keep unravelling - including the "viewingActualPoints" and "v ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/mfl_basics.Rmd b/vignettes/mfl_basics.Rmd index 2b65e593..7b024613 100644 --- a/vignettes/mfl_basics.Rmd +++ b/vignettes/mfl_basics.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -155,6 +155,6 @@ Now that you've gotten this far, why not check out some of the other possibiliti ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/mfl_getendpoint.Rmd b/vignettes/mfl_getendpoint.Rmd index 4c39256f..e3ff61f5 100644 --- a/vignettes/mfl_getendpoint.Rmd +++ b/vignettes/mfl_getendpoint.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -103,5 +103,5 @@ head(fog_tradebait) ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/sleeper_basics.Rmd b/vignettes/sleeper_basics.Rmd index 1da9e735..375876a6 100644 --- a/vignettes/sleeper_basics.Rmd +++ b/vignettes/sleeper_basics.Rmd @@ -21,10 +21,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -165,6 +165,6 @@ In this vignette, I've used ~three functions: ff_connect, ff_league, and ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/sleeper_getendpoint.Rmd b/vignettes/sleeper_getendpoint.Rmd index 02d3b1d0..1ea4504a 100644 --- a/vignettes/sleeper_getendpoint.Rmd +++ b/vignettes/sleeper_getendpoint.Rmd @@ -20,10 +20,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-1.4.2")}, + httptest::.mockPaths(new = "ffscrapr-tests-main")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -93,6 +93,6 @@ There - this means something to us now! As of this writing (2020-11-10), Kalen B ```{r include = FALSE, eval = eval} httptest::stop_mocking() -unlink(c("ffscrapr-tests-1.4.2","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) ``` From dd316632e813dc9afe107d55bb84aac9cb6630e2 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 26 May 2021 23:35:14 -0400 Subject: [PATCH 05/31] add test version switching script --- .Rbuildignore | 1 - dev/switch_test_cache.R | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 dev/switch_test_cache.R diff --git a/.Rbuildignore b/.Rbuildignore index a4c37cec..50314ba1 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -11,5 +11,4 @@ ^README\.Rmd$ ^cran-comments\.md$ ^CRAN-RELEASE$ - ^data-raw$ diff --git a/dev/switch_test_cache.R b/dev/switch_test_cache.R new file mode 100644 index 00000000..c7141c03 --- /dev/null +++ b/dev/switch_test_cache.R @@ -0,0 +1,38 @@ +library(xfun) + +paths <- c( + "ffscrapr-tests-1.4.2", + "ffscrapr-tests-main", + "https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip", + "https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.2.zip" +) + +use_ffscrapr_tests_main <- function(){ + + gsub_dir("archive/[0-9,\\.]+\\.zip", "archive/main.zip", dir = "tests",recursive = TRUE, ext = c("R","Rmd")) + gsub_dir("archive/[0-9,\\.]+\\.zip", "archive/main.zip", dir = "vignettes",recursive = TRUE, ext = c("R","Rmd")) + + gsub_dir("ffscrapr\\-tests\\-[0-9\\.]+", "ffscrapr-tests-main", dir = "tests", recursive = TRUE, ext = c("R","Rmd")) + gsub_dir("ffscrapr\\-tests\\-[0-9\\.]+", "ffscrapr-tests-main", dir = "vignettes", recursive = TRUE, ext = c("R","Rmd")) + + message("Check your version control now!") + invisible() +} + +# use_ffscrapr_tests_main() + +use_ffscrapr_tests_version <- function(version){ + + stopifnot(length(version)==1) + + gsub_dir("archive/main", paste0("archive/",version), dir = "tests", ext = c("R","Rmd"),recursive = TRUE) + gsub_dir("archive/main", paste0("archive/",version), dir = "vignettes", ext = c("R","Rmd"),recursive = TRUE) + + gsub_dir("ffscrapr\\-tests\\-main", paste0("ffscrapr-tests-",version), dir = "tests", ext = c("R","Rmd"), recursive = TRUE) + gsub_dir("ffscrapr\\-tests\\-main", paste0("ffscrapr-tests-",version), dir = "vignettes", ext = c("R","Rmd"), recursive = TRUE) + + message("Check your version control now!") + invisible() +} + +# use_ffscrapr_tests_version('1.4.2') From 0dd57a12bb660a219e27b600975a16f32166d886 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 26 May 2021 23:36:15 -0400 Subject: [PATCH 06/31] bumpver - add test cache switch helper --- DESCRIPTION | 2 +- NEWS.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 84ade524..669ab2bf 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.01 +Version: 1.4.2.02 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 5f4b6e9d..4c0ebdf4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ ## Minor changes - `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) (v1.4.2.01) +- Added helper script in dev/ for switching between test cache versions. (v1.4.2.02) --- From 0e7cdd57b41bfe77e3aac209ddb7228395950334 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Tue, 1 Jun 2021 11:37:56 -0400 Subject: [PATCH 07/31] update spacing --- dev/switch_test_cache.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/switch_test_cache.R b/dev/switch_test_cache.R index c7141c03..defc9267 100644 --- a/dev/switch_test_cache.R +++ b/dev/switch_test_cache.R @@ -25,8 +25,8 @@ use_ffscrapr_tests_version <- function(version){ stopifnot(length(version)==1) - gsub_dir("archive/main", paste0("archive/",version), dir = "tests", ext = c("R","Rmd"),recursive = TRUE) - gsub_dir("archive/main", paste0("archive/",version), dir = "vignettes", ext = c("R","Rmd"),recursive = TRUE) + gsub_dir("archive/main", paste0("archive/",version), dir = "tests", ext = c("R","Rmd"), recursive = TRUE) + gsub_dir("archive/main", paste0("archive/",version), dir = "vignettes", ext = c("R","Rmd"), recursive = TRUE) gsub_dir("ffscrapr\\-tests\\-main", paste0("ffscrapr-tests-",version), dir = "tests", ext = c("R","Rmd"), recursive = TRUE) gsub_dir("ffscrapr\\-tests\\-main", paste0("ffscrapr-tests-",version), dir = "vignettes", ext = c("R","Rmd"), recursive = TRUE) From 7874f672a6f88b8dd24420c0d5da963b88afff65 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Tue, 1 Jun 2021 12:01:05 -0400 Subject: [PATCH 08/31] 1.4.2.03 - extend ff_schedule to cover playoff weeks --- DESCRIPTION | 2 +- NEWS.md | 1 + R/sleeper_schedule.R | 18 +++++++++--------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 669ab2bf..0a6492cb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.02 +Version: 1.4.2.03 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 4c0ebdf4..c7218239 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ - `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) (v1.4.2.01) - Added helper script in dev/ for switching between test cache versions. (v1.4.2.02) +- `ff_schedule()` for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03) --- diff --git a/R/sleeper_schedule.R b/R/sleeper_schedule.R index 56f7699b..35ab8d1c 100644 --- a/R/sleeper_schedule.R +++ b/R/sleeper_schedule.R @@ -22,7 +22,9 @@ ff_schedule.sleeper_conn <- function(conn, ...) { last_scored_week <- sleeper_getendpoint(league_path) %>% purrr::pluck("content", "settings", "last_scored_leg") - weeks <- seq_len(regular_season_end) + max_week <- max(c(regular_season_end, last_scored_week), na.rm = TRUE) + + weeks <- seq_len(max_week) matchups <- purrr::map_dfr(weeks, .sleeper_matchup, conn, last_scored_week) @@ -49,14 +51,12 @@ ff_schedule.sleeper_conn <- function(conn, ...) { df_matchups <- df_matchup %>% dplyr::left_join( - dplyr::select( - df_matchup, - dplyr::any_of(c( - "opponent_id" = "franchise_id", - "opponent_score" = "franchise_score", - "matchup_id" - )) - ), + dplyr::select(df_matchup, + dplyr::any_of(c( + "opponent_id" = "franchise_id", + "opponent_score" = "franchise_score", + "matchup_id"))) %>% + dplyr::filter(!is.na(matchup_id)), by = "matchup_id" ) %>% dplyr::filter(.data$franchise_id != .data$opponent_id) %>% From a558b7e787dac9882b6fe62aa6b3ecd8723e85eb Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 2 Jun 2021 18:41:59 -0400 Subject: [PATCH 09/31] add sleeper auction amounts column, fixes #291 --- DESCRIPTION | 2 +- NEWS.md | 1 + R/sleeper_draft.R | 1 + R/sleeper_draftpicks.R | 13 +++++++++++-- tests/testthat/test-ff_draft.R | 5 +++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0a6492cb..5df5cdd4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.03 +Version: 1.4.2.04 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index c7218239..164ed817 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ - `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) (v1.4.2.01) - Added helper script in dev/ for switching between test cache versions. (v1.4.2.02) - `ff_schedule()` for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03) +- `ff_draft()` for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04) --- diff --git a/R/sleeper_draft.R b/R/sleeper_draft.R index 4d7f3f83..dfef24e5 100644 --- a/R/sleeper_draft.R +++ b/R/sleeper_draft.R @@ -35,6 +35,7 @@ ff_draft.sleeper_conn <- function(conn, ...) { "season", "round", "pick", + "auction_amount", "franchise_id", "franchise_name", "player_id", diff --git a/R/sleeper_draftpicks.R b/R/sleeper_draftpicks.R index 8b62de97..23dc25a4 100644 --- a/R/sleeper_draftpicks.R +++ b/R/sleeper_draftpicks.R @@ -51,8 +51,17 @@ ff_draftpicks.sleeper_conn <- function(conn, ...) { picks <- glue::glue("draft/{draft_id}/picks") %>% sleeper_getendpoint() %>% purrr::pluck("content") %>% - purrr::map_dfr(`[`, c("round", "draft_slot", "roster_id", "player_id")) %>% - dplyr::select(dplyr::any_of(c("round", "pick" = "draft_slot", "franchise_id" = "roster_id", "player_id"))) + purrr::map(`[`, c("round", "draft_slot", "roster_id", "player_id", "metadata")) %>% + tibble::tibble() %>% + tidyr::unnest_wider(1) %>% + tidyr::hoist("metadata","auction_amount"="amount") %>% + dplyr::select(dplyr::any_of(c("round", "pick" = "draft_slot", "franchise_id" = "roster_id", "player_id","auction_amount"))) + + if(all(is.na(picks$auction_amount))) { + picks$auction_amount <- NULL + } else { + picks$auction_amount <- as.numeric(picks$auction_amount) + } return(picks) } diff --git a/tests/testthat/test-ff_draft.R b/tests/testthat/test-ff_draft.R index f6f742c3..ca1965cb 100644 --- a/tests/testthat/test-ff_draft.R +++ b/tests/testthat/test-ff_draft.R @@ -17,6 +17,11 @@ with_mock_api({ expect_tibble(jml_draftresults, min.rows = 40) + auction_conn <- ff_connect(platform = "sleeper", league_id = "695482984576385024", season = 2021) + auction_draftresults <- ff_draft(auction_conn) + + expect_tibble(auction_draftresults, min.rows = 250) + joe_conn <- fleaflicker_connect(season = 2020, league_id = 206154) joe_draftresults <- ff_draft(joe_conn) From a38731b4c34bb5385165b8b55b3df7f13c416e4c Mon Sep 17 00:00:00 2001 From: Tan Ho <38083823+tanho63@users.noreply.github.com> Date: Thu, 3 Jun 2021 14:12:21 -0400 Subject: [PATCH 10/31] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bdd72ded..0a4acdda 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label= status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) +[![nflverse discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) From b45214d1fb2b70c65eb30c5af67cf82c5042157a Mon Sep 17 00:00:00 2001 From: Tan Ho <38083823+tanho63@users.noreply.github.com> Date: Thu, 3 Jun 2021 14:12:41 -0400 Subject: [PATCH 11/31] Update README.Rmd --- README.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.Rmd b/README.Rmd index 8c0c54d1..b9b9a652 100644 --- a/README.Rmd +++ b/README.Rmd @@ -39,7 +39,7 @@ httptest::use_mock_api() -[![CRAN status](https://img.shields.io/cran/v/ffscrapr?style=flat-square&logo=R&label=CRAN)](https://CRAN.R-project.org/package=ffscrapr) [![Dev status](https://img.shields.io/github/r-package/v/dynastyprocess/ffscrapr/dev?label=dev&style=flat-square&logo=github)](https://ffscrapr.dynastyprocess.com/dev/) [![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-green.svg?style=flat-square)](https://lifecycle.r-lib.org/articles/stages.html) [![Codecov test coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label=codecov&style=flat-square&logo=codecov)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=main) [![R build status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) +[![CRAN status](https://img.shields.io/cran/v/ffscrapr?style=flat-square&logo=R&label=CRAN)](https://CRAN.R-project.org/package=ffscrapr) [![Dev status](https://img.shields.io/github/r-package/v/dynastyprocess/ffscrapr/dev?label=dev&style=flat-square&logo=github)](https://ffscrapr.dynastyprocess.com/dev/) [![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-green.svg?style=flat-square)](https://lifecycle.r-lib.org/articles/stages.html) [![Codecov test coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label=codecov&style=flat-square&logo=codecov)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=main) [![R build status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![nflverse discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) From 676d664d37b37a4ddf6259820dc31d6e666d7e70 Mon Sep 17 00:00:00 2001 From: Tan Ho <38083823+tanho63@users.noreply.github.com> Date: Sat, 5 Jun 2021 02:12:59 -0400 Subject: [PATCH 12/31] upgrades to dp_cleannames - fixes #284 (#293) * add dp_cleannames work * update version - 1.4.2.05 - cleannames upgrades * tutu spelling bad --- DESCRIPTION | 2 +- NEWS.md | 1 + R/1_import_dp.R | 36 ++++++++++++++++--- data-raw/mismatches.csv | 59 ++++++++++++++++++++++++++++++++ data-raw/usedata_namemapping.R | 7 ++++ data/dp_name_mapping.rda | Bin 0 -> 1041 bytes man/dp_cleannames.Rd | 18 +++++++++- man/dp_name_mapping.Rd | 20 +++++++++++ tests/testthat/test-import_dp.R | 15 +++++++- 9 files changed, 151 insertions(+), 7 deletions(-) create mode 100644 data-raw/mismatches.csv create mode 100644 data-raw/usedata_namemapping.R create mode 100644 data/dp_name_mapping.rda create mode 100644 man/dp_name_mapping.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 5df5cdd4..da4e654e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.04 +Version: 1.4.2.05 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 164ed817..0ef13f1f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ - Added helper script in dev/ for switching between test cache versions. (v1.4.2.02) - `ff_schedule()` for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03) - `ff_draft()` for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04) +- `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. (v1.4.2.05) --- diff --git a/R/1_import_dp.R b/R/1_import_dp.R index 339fb239..d860f1ab 100644 --- a/R/1_import_dp.R +++ b/R/1_import_dp.R @@ -76,25 +76,53 @@ dp_playerids <- function() { #' #' @param player_name a character (or character vector) #' @param lowercase defaults to FALSE - if TRUE, converts to lowercase +#' @param convert_lastfirst converts names from "Last, First" to "First Last" (i.e. MFL style) +#' @param use_name_database uses internal name database to do common substitutions (Mitchell Trubisky to Mitch Trubisky etc) #' #' @examples #' \donttest{ #' dp_cleannames(c("A.J. Green", "Odell Beckham Jr.", "Le'Veon Bell Sr.")) +#' +#' dp_cleannames(c("Trubisky, Mitch", "Atwell, Chartarius", "Elliott, Zeke", "Roethlisberger, Ben"), +#' convert_lastfirst = TRUE, +#' use_name_database = TRUE) #' } #' +#' @seealso +#' #' @return a character vector of cleaned names #' #' @export -dp_cleannames <- function(player_name, lowercase = FALSE) { - checkmate::assert_logical(lowercase) +dp_cleannames <- function(player_name, lowercase = FALSE, convert_lastfirst = FALSE, use_name_database = TRUE) { checkmate::assert_character(player_name) + checkmate::assert_flag(lowercase) + checkmate::assert_flag(convert_lastfirst) + checkmate::assert_flag(use_name_database) + + n <- player_name - n <- stringr::str_remove_all(player_name, "( Jr\\.$)|( Sr\\.$)|( III$)|( II$)|( IV$)|( V$)|(\\')|(\\.)") + if(convert_lastfirst) n <- stringr::str_replace_all(n, "^(.+), (.+)$", "\\2 \\1") - if (lowercase) n <- tolower(n) + n <- stringr::str_remove_all(n, "( Jr\\.$)|( Sr\\.$)|( III$)|( II$)|( IV$)|( V$)|(\\')|(\\.)") n <- stringr::str_squish(n) + if(use_name_database) n <- unname(dplyr::coalesce(dp_name_mapping[n],n)) + + if(lowercase) n <- tolower(n) + return(n) } + +#' Alternate name mappings +#' +#' A named character vector mapping common alternate names +#' +#' @format A named character vector +#' \describe{ +#' \item{name attribute}{The name of each element of the vector is the "alternate" name} +#' \item{value attribute}{The value of each element of the vector is the "correct" name.} +#' } +#' +"dp_name_mapping" diff --git a/data-raw/mismatches.csv b/data-raw/mismatches.csv new file mode 100644 index 00000000..02dac16f --- /dev/null +++ b/data-raw/mismatches.csv @@ -0,0 +1,59 @@ +correct_name,alt_name +Alex Armah,Alexander Armah +Andrew Van Ginkel,AndrewVanGinkel +Arthur Maulet,Art Maulet +Blessuan Austin,Bless Austin +Brandon Rusnak,Brandon Watson +Cam Batson,Cameron Batson +Cam Johnston,Cameron Johnston +Cam Lewis,Cameron Lewis +Chris Herndon,Christopher Herndon +Chris Jones,Christion Jones +CJ Gardner-Johnson,Chauncey Gardner-Johnson +CreVon LeBlanc,Crevon LeBlanc +DaQuan Jones,Daquan Jones +Darnay Holmes,Darney Holmes +DaRon Payne,Daron Payne +Davon Hamilton,DaVon Hamilton +DeMarcus Lawrence,Demarcus Lawrence +DeVante Parker,Devante Parker +DeVonta Smith,Devonta Smith +Ezekiel Elliott,Zeke Elliott +Ezekiel Turner,Zeke Turner +Folorunso Fatukasi,Foley Fatukasi +HaHa Clinton-Dix,Hasean Clinton-Dix +HaHa Clinton-Dix,HaSean Clinton-Dix +Jacob Dolegala,Jake Dolegala +Jacob Martin,Jake Martin +JaMycal Hasty,Jamycal Hasty +Jeff Wilson,Jeffery Wilson +Jody Fortson,Joe Fortson +Jon Brown,Jonathan Brown +Joshua Perkins,Josh Perkins +KhaDarel Hodge,Khadarel Hodge +LaMical Perine,Lamical Perine +LeVante Bellamy,Levante Bellamy +Matthew Judon,Matt Judon +Matthew Slater,Matt Slater +Michael Badgley,Mike Badgley +Michael Jordan,Mike Jordan +Mitchell Trubisky,Mitch Trubisky +Nate Gerry,Nathan Gerry +Nick Westbrook-Ikhine,Nick Westbrook +Nick Williams,Nicholas Williams +Nickell Robey-Coleman,Nickell Robey +Ola Adeniyi,Olasunkanmi Adeniyi +PJ Walker,Phillip Walker +Rudy Ford,Johnathan Ford +Scott Miller,Scotty Miller +Sean Murphy-Bunting,Sean Bunting +Sebastian Joseph-Day,Sebastian Joseph +Shaquil Barrett,Shaq Barrett +Shaquill Griffin,Shaq Griffin +Steve McLendon,Steve Mclendon +Steven Hauschka,Stephen Hauschka +TJ Carrie,Travis Carrie +Ugo Amadi,Ugochukwu Amadi +Tutu Atwell,Chatarius Atwell +Odafe Oweh,Jayson Oweh +Rob Kelley,Robert Kelley diff --git a/data-raw/usedata_namemapping.R b/data-raw/usedata_namemapping.R new file mode 100644 index 00000000..f2eebba5 --- /dev/null +++ b/data-raw/usedata_namemapping.R @@ -0,0 +1,7 @@ +library(tidyverse) +# Import Name Mapping CSV +dp_name_mapping <- read.csv("data-raw/mismatches.csv") %>% + dplyr::select(alt_name, correct_name) %>% + tibble::deframe() + +use_data(dp_name_mapping, overwrite = TRUE) diff --git a/data/dp_name_mapping.rda b/data/dp_name_mapping.rda new file mode 100644 index 0000000000000000000000000000000000000000..06972cbcfb67ebb49355b7778ccb1b01f37816a7 GIT binary patch literal 1041 zcmV+s1n&DnT4*^jL0KkKS+b}rF8~6Y|A78K{y;zi5D-8A|Iokh|L_0-Py{`d?%HEe z005OTO-bMqY3Rg*)E=ODAPoVa15Z#Ir-T|2H8!SzXc_}R27mxG0me+3F&LNuGGLhi zG+`J57zWg&0iqe8nJ`8GOiU)26KI}@$R#vEG$T~;GG#m|wNFn(^*{ljGzNoZ98sah z02ej^crWhp&9IyR2U(=L`r!t>_8)#yarV9>dPv%bse$_lQhodGUVg)R;yiJ}vvV8I5h1I#AVRhyl@OBxa?qO-G>iNZoGX4>RW z36h;1=`VhwREqQ=a6KVTL!7eJE>#<9gE1Dm;pTL5KZ6_b${_iZj(m>-ksi~69u^9( zwA9Sd2!SOqSBwK%YZ=Kvki~ue-{%YSzI2F(dY2kuz?--rAS~r07zki#K|r<$&u~lT z_`O|`fjT%CRzL_#o($lxIjJmjawxGN0Zbz^fTAj5v`~Un1$~rfVy}Ee&}QN+Y3aup z)KTvPFsEvkIIJ_8OBm#0M;X*%Aci9hn#@B>N5`7^*UDr4aFIe|L*c%|($jF(RAe6} zo>MrZWcgB&V5uMvaScbwDTwU!nNH)dfB3a07e(X4G?CQoy%m``Zr+mLl4 zWR1I|cQB|HdRNCfQ#W=LJYgM1+GY_4K^zU}sc>y2Q#_6(<{=5Woz*yq%wj*NIGgtN zvh)(va;Fz}ky9(h@RFPOI|c8Xm}uVIe&PGo#lbys$AvB zdj$yu5)E0k{^>MzK2~cN?>7AO7d$j1hd}I;nlI<{N1@^>vbeY|VwIsQ6A`__^FcxF z*xDu2Skea8jz{exppL|FEJfp<1&yIrb9nAzJF@6zB>^Uw<|biYOfpBWnDGy9Oqt6e zTnK_I+p#3#Ian%Ctpx>@XoQReP?X9LLOHma2Wga`giuX*;PEjmER(urdzs1>*0jf; z_krm-K~lH1)z(W{ Date: Sat, 5 Jun 2021 11:25:28 -0400 Subject: [PATCH 13/31] polish docs for new dp_cleannames --- R/1_import_dp.R | 20 ++++++++++++++------ man/dp_cleannames.Rd | 13 +++++++++---- man/dp_name_mapping.Rd | 10 ++++++++-- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/R/1_import_dp.R b/R/1_import_dp.R index d860f1ab..bda01652 100644 --- a/R/1_import_dp.R +++ b/R/1_import_dp.R @@ -71,8 +71,11 @@ dp_playerids <- function() { #' Clean Names #' -#' Applies some name-cleaning heuristics to facilitate joins. -#' May eventually refer to a name-cleaning database, for now will just include basic regex. +#' Applies some name-cleaning heuristics to facilitate joins. These heuristics may include: +#' - removing periods and apostrophes +#' - removing common suffixes, such as Jr, Sr, II, III, IV +#' - converting to lowercase +#' - using `dp_name_mapping` to do common name substitutions, such as Mitch Trubisky to Mitchell Trubisky #' #' @param player_name a character (or character vector) #' @param lowercase defaults to FALSE - if TRUE, converts to lowercase @@ -83,12 +86,12 @@ dp_playerids <- function() { #' \donttest{ #' dp_cleannames(c("A.J. Green", "Odell Beckham Jr.", "Le'Veon Bell Sr.")) #' -#' dp_cleannames(c("Trubisky, Mitch", "Atwell, Chartarius", "Elliott, Zeke", "Roethlisberger, Ben"), +#' dp_cleannames(c("Trubisky, Mitch", "Atwell, Chatarius", "Elliott, Zeke", "Elijah Moore"), #' convert_lastfirst = TRUE, #' use_name_database = TRUE) #' } #' -#' @seealso +#' @seealso `dp_name_mapping` #' #' @return a character vector of cleaned names #' @@ -119,10 +122,15 @@ dp_cleannames <- function(player_name, lowercase = FALSE, convert_lastfirst = FA #' #' A named character vector mapping common alternate names #' +#' @examples +#' \donttest{ +#' dp_name_mapping[c("Chatarius Atwell", "Robert Kelley")] +#' } +#' #' @format A named character vector #' \describe{ -#' \item{name attribute}{The name of each element of the vector is the "alternate" name} -#' \item{value attribute}{The value of each element of the vector is the "correct" name.} +#' \item{name attribute}{The "alternate" name.} +#' \item{value attribute}{The "correct" name.} #' } #' "dp_name_mapping" diff --git a/man/dp_cleannames.Rd b/man/dp_cleannames.Rd index 6d058bb4..69935fa3 100644 --- a/man/dp_cleannames.Rd +++ b/man/dp_cleannames.Rd @@ -24,19 +24,24 @@ dp_cleannames( a character vector of cleaned names } \description{ -Applies some name-cleaning heuristics to facilitate joins. -May eventually refer to a name-cleaning database, for now will just include basic regex. +Applies some name-cleaning heuristics to facilitate joins. These heuristics may include: +\itemize{ +\item removing periods and apostrophes +\item removing common suffixes, such as Jr, Sr, II, III, IV +\item converting to lowercase +\item using \code{dp_name_mapping} to do common name substitutions, such as Mitch Trubisky to Mitchell Trubisky +} } \examples{ \donttest{ dp_cleannames(c("A.J. Green", "Odell Beckham Jr.", "Le'Veon Bell Sr.")) -dp_cleannames(c("Trubisky, Mitch", "Atwell, Chartarius", "Elliott, Zeke", "Roethlisberger, Ben"), +dp_cleannames(c("Trubisky, Mitch", "Atwell, Chatarius", "Elliott, Zeke", "Elijah Moore"), convert_lastfirst = TRUE, use_name_database = TRUE) } } \seealso{ - +\code{dp_name_mapping} } diff --git a/man/dp_name_mapping.Rd b/man/dp_name_mapping.Rd index ef3c6be1..24d30dca 100644 --- a/man/dp_name_mapping.Rd +++ b/man/dp_name_mapping.Rd @@ -7,8 +7,8 @@ \format{ A named character vector \describe{ -\item{name attribute}{The name of each element of the vector is the "alternate" name} -\item{value attribute}{The value of each element of the vector is the "correct" name.} +\item{name attribute}{The "alternate" name.} +\item{value attribute}{The "correct" name.} } } \usage{ @@ -16,5 +16,11 @@ dp_name_mapping } \description{ A named character vector mapping common alternate names +} +\examples{ +\donttest{ +dp_name_mapping[c("Chatarius Atwell", "Robert Kelley")] +} + } \keyword{datasets} From 0ba33cbf5abca022e016cae8a6805dd1ccaeb31c Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 5 Jun 2021 17:03:36 -0400 Subject: [PATCH 14/31] add a few more names --- data-raw/mismatches.csv | 38 +++++++++++++++++++++++++++++++++++--- data/dp_name_mapping.rda | Bin 1041 -> 1483 bytes 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/data-raw/mismatches.csv b/data-raw/mismatches.csv index 02dac16f..14953c02 100644 --- a/data-raw/mismatches.csv +++ b/data-raw/mismatches.csv @@ -1,5 +1,6 @@ correct_name,alt_name Alex Armah,Alexander Armah +Alize Mack,Alizé Mack Andrew Van Ginkel,AndrewVanGinkel Arthur Maulet,Art Maulet Blessuan Austin,Bless Austin @@ -14,46 +15,77 @@ CreVon LeBlanc,Crevon LeBlanc DaQuan Jones,Daquan Jones Darnay Holmes,Darney Holmes DaRon Payne,Daron Payne +DaShon Polk,Dashon Polk Davon Hamilton,DaVon Hamilton +DeAndra Cobb,Deandra Cobb +DeAndrew Rubin,Deandrew Rubin +DeAngelo Hall,Deangelo Hall +DeAngelo Tyson,Deangelo Tyson +DeJon Gomes,Dejon Gomes +DeJuan Groce,Dejuan Groce +DeLawrence Grant,Delawrence Grant +DeMarco Sampson,Demarco Sampson DeMarcus Lawrence,Demarcus Lawrence +DeMarcus Van Dyke,Demarcus Van Dyke +DeMarcus Ware,Demarcus Ware +DeShaun Foster,Deshaun Foster DeVante Parker,Devante Parker DeVonta Smith,Devonta Smith +Elerson Smith,Elerson G. Smith Ezekiel Elliott,Zeke Elliott Ezekiel Turner,Zeke Turner Folorunso Fatukasi,Foley Fatukasi +Gary Jennings,Gary Jennings Jr HaHa Clinton-Dix,Hasean Clinton-Dix HaHa Clinton-Dix,HaSean Clinton-Dix Jacob Dolegala,Jake Dolegala Jacob Martin,Jake Martin +JaJuan Dawson,Jajuan Dawson +JaJuan Seider,Jajuan Seider JaMycal Hasty,Jamycal Hasty Jeff Wilson,Jeffery Wilson Jody Fortson,Joe Fortson Jon Brown,Jonathan Brown Joshua Perkins,Josh Perkins +Ken-Yon Rambo,Ken-yon Rambo +Kerrith Whyte,Kerrith Whyte Jr KhaDarel Hodge,Khadarel Hodge +LaBrandon Toefield,Labrandon Toefield LaMical Perine,Lamical Perine +LaMont Jordan,Lamont Jordan +LaTarence Dunbar,Latarence Dunbar +LaVar Arrington,Lavar Arrington +LeRoy Hill,Leroy Hill LeVante Bellamy,Levante Bellamy +Malaefou MacKenzie,Malaefou Mackenzie +Mark LeGree,Mark Legree Matthew Judon,Matt Judon Matthew Slater,Matt Slater Michael Badgley,Mike Badgley Michael Jordan,Mike Jordan Mitchell Trubisky,Mitch Trubisky Nate Gerry,Nathan Gerry +NaVorro Bowman,Navorro Bowman Nick Westbrook-Ikhine,Nick Westbrook Nick Williams,Nicholas Williams Nickell Robey-Coleman,Nickell Robey +Norman LeJeune,Norman Lejeune +Odafe Oweh,Jayson Oweh Ola Adeniyi,Olasunkanmi Adeniyi PJ Walker,Phillip Walker +R Jay Soward,R jay Soward +Rob Kelley,Robert Kelley Rudy Ford,Johnathan Ford Scott Miller,Scotty Miller Sean Murphy-Bunting,Sean Bunting Sebastian Joseph-Day,Sebastian Joseph +Seth DeValve,Seth Devalve Shaquil Barrett,Shaq Barrett Shaquill Griffin,Shaq Griffin Steve McLendon,Steve Mclendon Steven Hauschka,Stephen Hauschka TJ Carrie,Travis Carrie -Ugo Amadi,Ugochukwu Amadi +Travis LaBoy,Travis Laboy +Tron LaFavor,Tron Lafavor Tutu Atwell,Chatarius Atwell -Odafe Oweh,Jayson Oweh -Rob Kelley,Robert Kelley +Ugo Amadi,Ugochukwu Amadi diff --git a/data/dp_name_mapping.rda b/data/dp_name_mapping.rda index 06972cbcfb67ebb49355b7778ccb1b01f37816a7..027a95be2c6e4290310470066abb8d277046acc6 100644 GIT binary patch literal 1483 zcmV;+1vL6XT4*^jL0KkKSuujRRR9D2f0X_|{y;zj5CA{_|M0*6|L_1H2mk;9U12{e!%pa5tA>Ib0!8UO(mG-;DT zh-eu!!~v#(gwcq}h`^W{pQ$2vsCtbJ4F-VILqHlBfb}v1Moe*&CX7Q9Oau%GrU=0? zG}Ax^5K3r-$U{IwO#miI={-|4&}||cN$DOFQ#o|5^GpK=!2tAJZw#}N0n85R2dK2!S;|`8O}zB z&pER*Hi?Z2la=I2Aqz8^VQ5B*mJ7W99MNwf@C8lJElv;xsLn#iWms?~H3UZSgP+Ul)0zlUOeZTVd z!#lQxS0v^$l&nnGNkGLN%+gL3KLwtIv!|4@l+@=r$f^yn|ZpSJiLk*kV zv+gj$y}do+U*zjOUMKE)6P@uy)-o`hYH@>+?>xq15$vG{bq(Q{BiD4en1;RlMX!w4C=*B$DkthZ$`?zH+Cmn{%9` ziyJr7S)_tn_4Gl&d~~cs;3DR+ZYIr7&iS@8Y6GIW8gyZGrYGJg7|H%OkCYb!rb6SCG(nQ7&Dj$Alx&Hj}j8X*h={dOC#W zgP9l{48dZ>HAvn_>N6TbX}gZf2*7hWm>s%<0;jWK(2)l7nxnJoE41EqTK9LER=m9V z%yQfb$V@9Iuc8nd*{WPrXLulR z&XPp83kIR+EDsG!l5o&itP+99yd+c*K_HpH*?FT;xI+9E;o4<8kF@*2%RyD!QtRbW zO=)n|6?Skk0Xduk&(33}*JS#_czSDmkFPcqO^9O0hlV)dQOt{j$cjkcFmoe$>N}3} z5p(T}wDdPLyf#E_RU1+I^ir{rM%oa(69X)e{yh1b+yd0T;=RhLn7~d{4 z8Vcl;GZLB_4Kxc3SWJZ&Vnne7#?+4ER+yAM{Ss-S2Du8&M|4P)dHPNcwu?axhLD&H z7%pPMF{v*oBZ`7lK}rrmX%criB4T!!R75q!XdxE}&SxG0N`hF~Cv?jfG?XvUsBM=Y zT3=s`M*}$n$gx~Qyjlz`$WxH*-O@FT+R9+k+&efSG8_8)#yarV9>dPv%bse$_lQhodGUVg)R;yiJ}vvV8I5h1I#AVRhyl@OBxa?qO-G>iNZoGX4>RW z36h;1=`VhwREqQ=a6KVTL!7eJE>#<9gE1Dm;pTL5KZ6_b${_iZj(m>-ksi~69u^9( zwA9Sd2!SOqSBwK%YZ=Kvki~ue-{%YSzI2F(dY2kuz?--rAS~r07zki#K|r<$&u~lT z_`O|`fjT%CRzL_#o($lxIjJmjawxGN0Zbz^fTAj5v`~Un1$~rfVy}Ee&}QN+Y3aup z)KTvPFsEvkIIJ_8OBm#0M;X*%Aci9hn#@B>N5`7^*UDr4aFIe|L*c%|($jF(RAe6} zo>MrZWcgB&V5uMvaScbwDTwU!nNH)dfB3a07e(X4G?CQoy%m``Zr+mLl4 zWR1I|cQB|HdRNCfQ#W=LJYgM1+GY_4K^zU}sc>y2Q#_6(<{=5Woz*yq%wj*NIGgtN zvh)(va;Fz}ky9(h@RFPOI|c8Xm}uVIe&PGo#lbys$AvB zdj$yu5)E0k{^>MzK2~cN?>7AO7d$j1hd}I;nlI<{N1@^>vbeY|VwIsQ6A`__^FcxF z*xDu2Skea8jz{exppL|FEJfp<1&yIrb9nAzJF@6zB>^Uw<|biYOfpBWnDGy9Oqt6e zTnK_I+p#3#Ian%Ctpx>@XoQReP?X9LLOHma2Wga`giuX*;PEjmER(urdzs1>*0jf; z_krm-K~lH1)z(W{ Date: Tue, 8 Jun 2021 09:01:15 -0400 Subject: [PATCH 15/31] update logo and badgesish --- README.Rmd | 10 ++++++++-- README.md | 13 +++++++------ man/figures/ffscrapr.svg | 21 ++++++++++++--------- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/README.Rmd b/README.Rmd index b9b9a652..958767e4 100644 --- a/README.Rmd +++ b/README.Rmd @@ -33,13 +33,19 @@ tryCatch(expr = { httptest::use_mock_api() ``` -# ffscrapr +# ffscrapr *An R Client for Fantasy Football League APIs* -[![CRAN status](https://img.shields.io/cran/v/ffscrapr?style=flat-square&logo=R&label=CRAN)](https://CRAN.R-project.org/package=ffscrapr) [![Dev status](https://img.shields.io/github/r-package/v/dynastyprocess/ffscrapr/dev?label=dev&style=flat-square&logo=github)](https://ffscrapr.dynastyprocess.com/dev/) [![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-green.svg?style=flat-square)](https://lifecycle.r-lib.org/articles/stages.html) [![Codecov test coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label=codecov&style=flat-square&logo=codecov)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=main) [![R build status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![nflverse discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) +[![CRAN status](https://img.shields.io/cran/v/ffscrapr?style=flat-square&logo=R&label=CRAN)](https://CRAN.R-project.org/package=ffscrapr) +[![Dev status](https://img.shields.io/github/r-package/v/dynastyprocess/ffscrapr/dev?label=dev&style=flat-square&logo=github)](https://ffscrapr.dynastyprocess.com/dev/) +[![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-green.svg?style=flat-square)](https://lifecycle.r-lib.org/articles/stages.html) +[![Codecov test coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label=codecov&style=flat-square&logo=codecov)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=main) +[![R build status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) +[![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) +[![nflverse discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) diff --git a/README.md b/README.md index 0a4acdda..894b9538 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# ffscrapr +# ffscrapr *An R Client for Fantasy Football League APIs* @@ -19,7 +19,8 @@ coverage](https://img.shields.io/codecov/c/github/dynastyprocess/ffscrapr?label= status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/R-CMD-check?label=R%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) [![API status](https://img.shields.io/github/workflow/status/dynastyprocess/ffscrapr/Test%20APIs?label=API%20check&style=flat-square&logo=github)](https://github.com/DynastyProcess/ffscrapr/actions) -[![nflverse discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) +[![nflverse +discord](https://img.shields.io/discord/591914197219016707.svg?color=5865F2&label=nflverse%20discord&logo=discord&logoColor=5865F2&style=flat-square)](https://discord.com/invite/5Er2FBnnQa) @@ -89,11 +90,11 @@ ff_rosters(ssb) #> # A tibble: 442 x 11 #> franchise_id franchise_name player_id player_name pos team age #> -#> 1 0001 Team Pikachu 13189 Engram, Evan TE NYG 26.7 -#> 2 0001 Team Pikachu 11680 Landry, Jarvis WR CLE 28.4 -#> 3 0001 Team Pikachu 13645 Smith, Tre'Quan WR NOS 25.3 +#> 1 0001 Team Pikachu 13189 Engram, Evan TE NYG 26.8 +#> 2 0001 Team Pikachu 11680 Landry, Jarvis WR CLE 28.5 +#> 3 0001 Team Pikachu 13645 Smith, Tre'Quan WR NOS 25.4 #> 4 0001 Team Pikachu 12110 Brate, Cameron TE TBB 29.9 -#> 5 0001 Team Pikachu 13168 Reynolds, Josh WR LAR 26.2 +#> 5 0001 Team Pikachu 13168 Reynolds, Josh WR LAR 26.3 #> # ... with 437 more rows, and 4 more variables: roster_status , #> # drafted , draft_year , draft_round diff --git a/man/figures/ffscrapr.svg b/man/figures/ffscrapr.svg index 32e9b695..c25272b8 100644 --- a/man/figures/ffscrapr.svg +++ b/man/figures/ffscrapr.svg @@ -8,12 +8,15 @@ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="207.26576mm" - height="225.86987mm" - viewBox="0 0 207.26576 225.86987" + height="239.83647mm" + viewBox="0 0 207.26576 239.83647" version="1.1" id="svg51" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" - sodipodi:docname="ffscrapr-v2.svg"> + sodipodi:docname="ffscrapr-v2.svg" + inkscape:export-filename="C:\Users\Tan\Documents\GitHub\__dynastyprocess\graphics\ffscrapr\ffscrapr-logo-v2.png" + inkscape:export-xdpi="53.799999" + inkscape:export-ydpi="53.799999"> image/svg+xml - + @@ -55,10 +58,10 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(-0.66136852,-69.249578)"> + transform="translate(-0.66136852,-55.572237)"> Date: Tue, 8 Jun 2021 09:17:56 -0400 Subject: [PATCH 16/31] update pkgdown --- pkgdown/_pkgdown.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 32ebb519..80be380a 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -34,6 +34,26 @@ reference: contents: - starts_with(".ff") +navbar: + structure: + left: [home, reference, news, articles] + right: [discord, github, more] + components: + discord: + icon: "fab fa-discord fa-lg" + href: https://discord.com/invite/5Er2FBnnQa + more: + text: "More" + menu: + - text: ffsimulator + href: https://ffsimulator.dynastyprocess.com + - text: DynastyProcess.com + href: https://www.dynastyprocess.com/ + - text: ffverse + href: https://github.com/ffverse/ + - text: nflverse + href: https://www.nflfastr.com + articles: - title: Getting Started navbar: Getting Started @@ -54,6 +74,10 @@ articles: navbar: "Cache" contents: - starts_with("ffscrapr_caching") +- title: Other + navbar: "Other" + contents: + - "ffscrapr_scoringhistory" url: ffscrapr.dynastyprocess.com From 12462c3f4a7163df4dfa73b50606a8623906c915 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Tue, 8 Jun 2021 23:28:42 -0400 Subject: [PATCH 17/31] continue messing with pkgdown --- README.Rmd | 4 ++-- README.md | 8 +------- man/figures/logo.png | Bin 59661 -> 0 bytes man/figures/{ffscrapr.svg => logo.svg} | 0 pkgdown/_pkgdown.yml | 8 ++++++++ pkgdown/favicon/apple-touch-icon-120x120.png | Bin 12837 -> 7100 bytes pkgdown/favicon/apple-touch-icon-152x152.png | Bin 17559 -> 9362 bytes pkgdown/favicon/apple-touch-icon-180x180.png | Bin 22205 -> 11245 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 5424 -> 3038 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 7100 -> 3833 bytes pkgdown/favicon/apple-touch-icon.png | Bin 22205 -> 11245 bytes pkgdown/favicon/favicon-16x16.png | Bin 1442 -> 939 bytes pkgdown/favicon/favicon-32x32.png | Bin 2518 -> 1540 bytes pkgdown/favicon/favicon.ico | Bin 15086 -> 15086 bytes 14 files changed, 11 insertions(+), 9 deletions(-) delete mode 100644 man/figures/logo.png rename man/figures/{ffscrapr.svg => logo.svg} (100%) diff --git a/README.Rmd b/README.Rmd index 958767e4..245d0171 100644 --- a/README.Rmd +++ b/README.Rmd @@ -33,7 +33,7 @@ tryCatch(expr = { httptest::use_mock_api() ``` -# ffscrapr +# ffscrapr *An R Client for Fantasy Football League APIs* @@ -74,7 +74,7 @@ The dev version has a [separate documentation site here](https://ffscrapr.dynast All `ffscrapr` functions start with a connection object created by `ff_connect()`, which stores connection, authentication, and other user-defined parameters. This object is used by all other functions to help return the correct data. -```{r eval = eval} +```{r eval = eval, message = FALSE} library(ffscrapr) ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020) diff --git a/README.md b/README.md index 894b9538..6541e4ed 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# ffscrapr +# ffscrapr *An R Client for Fantasy Football League APIs* @@ -63,9 +63,6 @@ ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020) # Get a summary of league settings ff_league(ssb) %>% str() -#> Using request.R from "ffscrapr" -#> No encoding supplied: defaulting to UTF-8. -#> No encoding supplied: defaulting to UTF-8. #> tibble [1 x 14] (S3: tbl_df/tbl/data.frame) #> $ league_id : chr "54040" #> $ league_name : chr "The Super Smash Bros Dynasty League" @@ -84,9 +81,6 @@ ff_league(ssb) %>% str() # Get rosters ff_rosters(ssb) -#> No encoding supplied: defaulting to UTF-8. -#> No encoding supplied: defaulting to UTF-8. -#> No encoding supplied: defaulting to UTF-8. #> # A tibble: 442 x 11 #> franchise_id franchise_name player_id player_name pos team age #> diff --git a/man/figures/logo.png b/man/figures/logo.png deleted file mode 100644 index f6d473ce4413064503dfc060ded6b9322d6af36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59661 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

`E+Y2CMAT&w!Nq6d7U0WJ9 z2E2s^om!~AE~}6?@b*|%q3$W=jSdj@{3j>t3GeuQ&^8(&((p9WI`UxDc5>9s!%aDG zu)}4*Qtaegn%vL0xARxro0v*YlaglSZO(N)5@%-XGX0_>v1_*ZxMi)dL_%6?@`|k1 z<06CRYXVO1j*z^)epP_V2l*+ZT}xrow@n>*&xtk8!>!q^{*QgD^mya-32|Ds-~5|< zWo=cp9(8%Rl(J#-iMRHdu3fw4|KYUR1z(QLo6oauKJOqEN^P)8ZL={u{-s+oajV45 z%`KPr^6a&1hMMiHR?%(aL}hq=GZ>@Rt>%nlEvj;lr2nW02?-4bVkh}Ql9|_~t)JNP z?O}a_M_qQQYrOcnEP*4@g$uqGu}4*e;#z)w46}0-4yTkfl@D3(_gSA??Rm0fM!mAB zk>7C1z2c*ro9IUwXQpecVwwzZPS}!D%$dk5|56BEEh?Smv{hi#DxO$|U3Y$a68+Kb zF>Cpep-z_kcnyZ6W2sFxsrB1j?iEonhx@*U?%ThAzpw_=#puAt_~L1+j%;o0nCzcD zv%{5Aq|lXc10KH-DK_M=98y*!W9rVJJ)U&dzD=+0`U+44_WuhY`e#q}4F#;^(4j$( z)!LTy-S5sML@X6g8uWNEY_~d?+%C2k@$*|lTX*mz_ zn}H}=G?R5>1%7IoIFXq z_0RApgf>R}{<^jM2E(yThh6_1I-8KhfPZGcf9CADYrUF$y*d~koTu~Dhw5I5LkIBx z+iD+A^K;@CDa%WP^pqYIcYCz_pJA7sk48rdPepLZ+CRUpY1pf!#Z>8)o5Fu@#qz?1 z3%UfT8edCn)QB&IM1J2Nbt5&cTG`YsKfQk8P>W@#De6CIY8=Pk;Q5nXr!7sZsZl$b z9g`6xsoLloi(i9}0>mZ+Aag z3h>?9jn?|58Qd~$R5SKKNJ#S&x~6X7`ThuxEM5|g1fr}PGg&tld^;bn%i6qglf)|? z=D0)Vc%bFo!iyE?u`ap;O=a?|b4v@RTM8Lf=eVQJkp!)s#GLvFKao@~47IHiY!WAy6HAF4EeC?~FQaY| za>axAymM`zyIXxVY4%x)S<@}+jH(HjHgKN@Q_%xWdL$Nav3ikpvq1GSXNLoDH+WPh zFMmoQ%v>SlOlHsC9syR=8+TDtb;|r>s&Y5doc}VFN5u2oI`NuF&d} z@bxeJlFF!JuNhBx9emk-Pl8JfyZ?qnMpSVj#rM>0J72(05NS65LKe@$g}#IxS`|FRB*RdayJ}+9}-EoegWLt8?T73i`!0OPX)Wh!S`5e@IL7J z?n~j?g24+WwC|m=3nDyvmOT)s@`JizuLk_64gcsc3R6oo#D1h0j{QjKY9`pvlC}0M zv!-FIj(9J1JOGR#^{w6B%Xe*&udoW$HNhHBhD$FD^|LODu!S@H1!t|BO{=t-Q?%?d zcX#h&IE=Ag+$n=KW86f@aV1{Ee2YPt%b?MUp~+T$@X3kMu{{;6CVFF(X0Bah)%{Cd zca?l5%K2RdAC!#g(CqJ*?cwrsfA36=Jp!~O9#4+yZ0)^7>l4Sgy5}a(3zLVZ9#o)q z#9+addknP^tJctKOYcrECCyAv{hm0FAvsD%nN{F*J@wZL5xi$HY z)}fnn#_I9Y**UClhgb~?g1%|fUS8qrG|VX)n(mB2@xoq%1TIt^4&g$zAY^s$cs<0Z z{(WlQmsF8^q;*bMBwZ3LsDzjN-`zA`8#{*IRroX!Id=;0W!;uN_G1!Cbp8t@4;t?D zcV3=sNGA@y>{?R6%y^90_q5F69y?IYxrINdwq4nrQ>`x!Z<|jQQRJH_t|WI5ufBk5*Tty_DCvGK3c3+4p(unJEsNAZql$2U!98HI(%KLpu-D5Fri zknF5e*((v27Qu0b{%RO2MbmGJAdVjA&AKtQhc#A7bt-}6ze&P zx%`1)LsQ)j2uhQoFPs|Jp94bbH7$1Q_#f7ohn1bx#ladPMBr)_ThGDjBHsSg9|GW5 zg0-P7l;<`#h_+gNS&5!>8%PQb4&hRAN3}WZSXe9$_bkSXlD6Z4_C@{4@(*duyXD+A z#FOBnbTHy3NJDnt}%*7LeCqRjKJEwIW{tdD$K6Z!Um@%gM9lUe)= z9VD|cc+tB!BV&|HCRX=H#va5yNK-5de@Y*Wlc~|SbR$D}@Ez*izJzyPlJK?9{Q9Ws z`T#d7%vG7G+u8utx~@H&_T!n9iUTbq=GMeiu$t~~_c#?SPIRA->az6^$=&PKR*{=N zYVhDXije|~0lq;)wj{9W9bethKVJ)$5@M;3RF>}<`!{HZmD1@FVfQ*%U0&FL>AEyL zMrxwbs&T(Jv8^wi=WN~BU7p!&-FmGO@Rm-YsDs7CqS^dymmQ$22jOz4acmSlAuSHw`{*#%+1HiXdmMQ(>P8_#4->vpk8p&Q7&0;95zY4z;N%*of?7PH z!Z_1)=KN|XZFVI*pZT+(8P_$|Q|~I5G(AQdh}p{A*txyg6}$tqzu*8UMJK~KE%Bh| zWEs9<&ug(1`W>_&i~XkI|B901XID0j!ZY4%0#jD4p-x?B|y}dBqkS~Av+8=*v$)nefRz=?vYG6He?#;yu*PEi%NeG(# z9U0!pG+)c^o>RC{AlUTXncr1yjfa75YdCzRFq7;KkPT`J5^*&(=CS?SzS|ybW2I-R ze1g>+v|OHD_s8y}SXV2UL{-R}sB=bS4fjIX&4Vz!Yda+RzGU{_D`NMS=XG8^lCHkM zc8!#c*q!98;*I+(T!d`g&q>L0810mpV_CVa{yS!{5~+&}K0Q$XWB(|)syFwYj@~mB zO*&R_f8!B*qKJq&>ATuv`vnb}IhP9QLKw`nXs?OqO;|aXuwKv^^=FmX*Y(1yQh%=L zRQD@N7T4bD_kj)B?fYJ}kMX#VyBhkx@oM<|NsM-7T$|0wSw{|1y8twEdAtGqH?^M?rO?{zf%GhB6H{laZ@of+W_P^6oOKn~L$yoc8D&?h5 zM4`>5M>vnV_&a_ll)Y8cA@%KL$Mm)t+x-9nd50ZYxUHstBFc$|SHsj~$?+YG2_ z_nBDPRet%dZZ9Sp-Cd~rX{Uf&+>M>QrZ^VYfpcu}sYjIc=Y~>N24)eTRj2V7`zVdy z+TS#dhbIKC37_x6Ez2!G-yfL^KcA-FLv?eQai(vT)D!rL(rhgiEZrbXQN8z6IT(|% z91;DrK@%-jZVWe0K5$^>Tu)yVao>14b^c_7^f-In_q4Y)DW^W#HxN6=yQnA*J+J#Q zy3e(_$<5Go!r;p5kV)MH9!T*H)}p^=@EB73bY~%!jTQ54m`LZXXkJucYuhm?QM10> zwt7ST0V@eOf$x_^s<*eR^`+Qy7f!g_v0tLQcE;>QcK5q@qmu(ZWK1QK$1^NGmG)kk zlyVin^UzY>SDPL(mf{zDJ(njT^h5CNyyx^e;kDWJvUkPZPQz8SMlv+q&R&qud%ewV zzli!c4=|=L{v3Ug^3$_Lr9WhE{D|a^IA=Yq|Nh}HhS;m~yaW%6yqvRE;Q9B;cp;Z9 zEaVp#Z(B2JP14~pGu}D|Mb4r`?Wgf~sV&>74K{IiWFa~76?;+ZF*j`A_pEh$(sFT_ z-3!bv0cJ;Tr%64RhVy=z%AV0*$5!rZS07lY`XwD9@+Z=2veU1;nNYTB%E5c*lgi0~ zCnsqme)W$NFV1K7`{p-Pum5IDn@KW!trk@!X={+qyfw`FgQe~1A9A2c-De59zekK6 zBD}n+x$XZ{R#GifaB;P!_%%F!W_3;WDRFk@kDR#gIfcZxnTct`U73lSgsUCH#(ne! za_uEPf3x(qrg;+Hmr8wQKn4G#>ro4ZtIRawst;@G<63{l2x`VyC4BwgnFp|uE*mxw zY{i^uLq(O@v`F?oZRSf`eUh4q;fcKBNd=j;5DL%5QMQNzq&c++~kll50oX?~mB-=DqQW)iM1I4nu@&EVq& zhg_I#VNYJc6jeUKX?02|LsnypLz9#HW~;chDjp zJUDJWPL{TOwI$=Z*LZ>g@%zQWy+*F|hY3d^UG?u?i)n(?ZNdG>nYPcjC|ACaulR=~ z7f0P)I$<~S>I1H``|5{_ID{pcTW{;yotkpQ-pq7z?8l~WpGLmcjtG0yy z0}7;viuIh!`*eF<37&JN8$TVx3^+I?=>3wRw5zANxQRnJqZ~AaLs&%pb=`FAUBktd zyV^9r=7+7>zqw^l(3&JC#$+nkTzjK*`qiValZ;(cMY#>Dx~|T655C8ngGPthFkkoV zFK}vOj2dm$cImoN6Q+xk8ohw1r?Fp3&TGD}JfC<}C9Z`;y4oeC4#a!9?bFKBYID$X zCv5V=&Y40ndb<;^P5H{q05!lOJ3sg=gBCw?>4{rFSG1lG~gl&l@2oHs8_AkKvF zuh8*q<}^SwY&72qb?6HyQJ9GHMrJCC#Qt z$)-4E_{H(o{=U%6uSM$%x@1H7+i#4=JSRQub7EwYGiTPzCNt?m^wt`gI)y!My->}s zK4%?euJs1*>^yCw$l}MZdu;Q}o#|wBt33uI_|%u8Z@LVf`L%Md^2{6S$R)U?5JL6j zt(;=@h5uwWvezLCx(PcZlgkl=kvoswx_>sQ{oy+^-Ig(DYFY97O5_Z?)dSYc08?F@ z2-V7%$06)RPG|1>XNA+>4a>gp|H%64pg6iNZxRAY&=A}MNwC1+t_ctb9^3|ZcejKG zmw^!6-QC??26wl?ZE*dX=iS|^{kH0M)%-Iv-M8;K_x$8^pQ=o3DC%9XQzodL)!qFg zCY3%}qxW*A-e&34#~Inq;)lk41NGN2WqmqR^w0m6pVW@eT{RN%6Fj(yPj@YV`K5w5_j09#0+bRZf=JuZrcIH11AYYvR>`v;IW6S~ zEYQ8lg@sP%mK(=Vo%c%P`RD}Z!m!~I&;Gtukz_BenqSr&^^f?fE zM%biV;9;d>bMYlN%*e>d+%_jVh$^2I;(`2v7g^*&4{fj*2pB@^HLksP5E}|?O&t4q z<#7)w0bs}8X9n`icc26uH>eB-aT;nWM^o}-^sssICL&xPPmr8Bc{09;H5~8|$o;aG zzq%*UH6;diLRWODTQE{_ZaPZjr3|ZLv^skrwDsZ})-{~g*PqUvnJIBoVIuKvb?w^{ z1^#Xs_8XD}g$X?LH;^0mj)2is!}^$-zlE^%|JL*aP{|gq@0yb)w#otDUly0l!j?We z=WbZZ3rtDaNbcV+p1xmXubWa%UF&#ztQ$y}s=rVdf3*KUiEKhGw|nKPS2_hqXgPHv zlcVZIf z0S#q|1)#IF3~Yf$77(!J?rU-%H{Mf*Z4#FOX$*jdza{z_iUxy|Aep0>s6fQ8{nyUE z@0H|vw?dUT%&sF!*$H4%sfd!`-oxI(qA$c79t}+mt%sGgQ?3+FgQt{|e7O2ARc@(N zF#b6h!oBV#YdkXW?{k?Y=d3q&`+b)qx)=waW7`}*E|dqjvz&sh!4mzcfh}~`q7}Mj z5PFV^ZsaMRXb}mGZLge=bJWHv#Ifz@NCXVA)vXyab~w@$Sf#@(;n_a@HUgt=#&{j& zR2lo}jN+Mhu}U0X;sAIT07aD0A}c(mg|8p8L`$VELzkRAvvnc03h3)u?ZD}WX4a9P zbY~h)|D~il3%!X?VxlD5DYed0H}2jz!Y=kay1!5rpJS@;68kw#RaZk|JDkn}aaMFG zV;qtD2CVp$h%2K4=>Jfod$a(dEM*34;ICI262rr9Ilg>Xq{G$n-Wc}hi|Km<>@*u$ zgYcV7;m;tGNSf>BW)AM$aPk|P^^o2#LndqXFu?`ZdKR{BHjV z)-B6_^#wELCbz10W8!^X4Co}Ao%BDbHU>CQR9>m-(^`#K&jPGLHh>txNof^WaPcf!h>dD98^#w!2} zwjFhP6*36Wy<{_Z9z(QVzR+MDH7}QzruF0T5m57{p4HQ=CAy~+kj+j3Ha4q0lxe-> z<5mpq2wY^5li@4>OdRU~Su5{k1FuBN3(WJ>8*`7(h6>zASk`N*j|QBaY}c9CFBa^P z9@C-QLK0z{S=IkPMry|?oxHKRe<%kfVly|_NbE~~j`DydYWK1c-#s+w=b|{6@&Pvh zz2;FQNHlu7KBBR7L9Z;_zD=3n)LraL7ExW!clQFsaL5@u)o;0O*AUf%j_3feSIVWU ziTZDeA+yUrA_YWM|1y}OrJWfaHVXA21J69qGr6x3z~{A~dnR66d~`fM-f~)9%GB(w zE=+C@z(K^lQKqC!Xw;=&iv`~uOaCQib2Sk~Q?HJ6jM8ueynL(vQ#O?0m~oVhbw zo__Oya#pHzCFeU()-r;j6&1fE25x5wJm|=6JBu~-$eU)or+1}Qu>W6=VZJ=-WXGF?{2bUo9}k6LNDUQjmf ztHp%VwEU=rLU$0EEe*TdFE8ox8aNC%$Hyyf+5zfDe8CrdtcvSU8Iw;6ABWJ`l$fe#2&F8aiKbvcmdxKdR94s<}pIZAB&&UnD1nYz_oE@<@X zJ`KvPlmwZbnrJUY#6~#wrw`UdTN5 z3K7XT{ZY(>HdlQY?JrpJ2EYfVap=BUgZDx=Z7Z_&MDhoJEkkC2A$T4BA#3nr7n9P+ zm4bCCFkY+Ag3&TH0{!rn8|l!9mTA?gJvdt@f~@E z^v$gL(CNnGKTZ?b#U?qo@c^P5zVzc2=Xr!QzvIr2ybAclsSAZdEUR?(gZJL}0CB)1tsPS0rH5T4QgC#sQ z=7uA=G2XxfL^Ge3c17*)i|C0pz0!s--4L~k?CI0QSwn{upVa>4!Jg@SHiZYp`v+D; zWLba>#$HV*EZv+=#Tuq@Onvt4$ae8)M=Jl}o17V&WOoT4=EZ1=@;J8q zi4$4iGGs4|*ML>o96=ZzA^CfrsFalLqt^oWt<1iwA4=>D)83INwVrk~_y$#So}XN{ zIkKG`OmD&HmX7R5Oj`zvbx` zHvPX?yr--y8H?+8$6LM|6$HOuRJX&%E>AUr?jwcI|iD#}Xvj8a1{$l3G_*t5!xTYa|ML2{QPS z&9yA|=5K_gC_h^=mz)6;_61DUpKl2ErK6h51HnpU&Oeqj?L)h7m|52uji|Y7=aVjt z8xS9F+9~nf8i6Z5$6NgWf32{G7CWjRknO^;0cu~LZ*l{u z8`&E#w!`QFlBiCgcd${r8?Ns1SX9LiWIe}*ERveOW$yc;!H!xp?ct^jF~GoLkcg%l z5fV=@-6i{oK_BHjZoB-VCdDK1@Mfs^)llg_ih(rTnXMiSBd+JuC#4njtjOCtskJ=3 zm#l|^JJl;HNr-jKA>KQ-*Z95XsE-zUSRTyywzk=AD?<_y3Y*~hB=32t3#8}>N3~dh zV>ULkE{H<=2*^m&#(do?*;Me6#6kR{>!CV9CRknkCwVnq zrR-k0Y$5B%@~Ho!4R6E+vZwv`xH~M%K*pTR&lPp^2UcZhTKJojgkM+qFoYjcc*tc; z2#bMhZ`Y2&d}K_LB-Lo)TvWXlQ6HIoKi2f0x`gJ1C*Qk~R-<9WQ&e`^Ki#<$O>`7i zY){pfA3Hr&^imOJ|B!|VcGnJ?G4Zlp$BKcyR4-l4)GN$hdq+CS0|Fka{5^PN>ezc1 zbtu(&8JH=65O|GAMsx-HSAP>v9{&n==DqCsrgb1Qb$})=>`j4y81T^#C#4Xv(3~HM}3^mN;m(5VPvUkBe`#lQ7mzg41& zf<{KMPI=Gk+k3XdV$#=`qZQ_MPp@h>@E~6v1-33OF6^$r&N8#`L&YXAl~0M8$lm0E z=cw~=;32p=wLcl`FsDj#w^OEmt~0*T&Q2yr0Gj95T&|#84ohs>S8XEZbnRuPx03u zFFjZscX6e%WCHYuL+Z#mKc*B{+_`hW;kZ_LRmnQeFVqEudKd!4RWjaqB7rE#QKn2#Rm&z5oZ+24-q)*DFQXZLmPN+k|`&JtfUkIY1 z@QrD^Ga^SiMUF{bVE(-KG^<~|_w%@%sFmHZKboyK|CTD71A0!TZq!zGZpQGSbCdaw zkf~*d!|l+JF=SX8W&%Y#9V|4Ai87dyAi!VOo1eNHjs!7B5s;Li02|Xzr^*l*6c#y( z_I%b7rg->HZ?HfUhVXIXgR#&PPI!}g+p#gF+rvx25=H}XkG|vd zM*%-=RH4(Weo&|r)>+w8J zP}ue$J!5Sz(qK&%`(7Q3&pr#T0H>U;%HrzqKi$h&o$2AKQ&4Udt06u2+U`rMYu$Ht zyQbZ@RjfGk8U^=>s$csOzKJt5!XS#Kui_jY)~s$js8O&cFmUUPmE}p74JEiu5*HW9 zVUGd0^0ywRZ7c0al)%DcHVxr21e&K=9GA2%$p z9zl5eZDt43n76uC_4U18MiIR*H2u9dH|y82lvz@||HU}3+uVDaQnUrmZ;m^V&^!vb z(rY`B7Ak{MPhg%m(JF6$=g;knQfY;9)WxUG$eKDbQtQ)~N-d%~zv5Few7Qxb0yPxT zb6W9ln8xDTl}U`b|19Y+G&Wgx(lW8rV%8I8ZWF{R>%^Fw&^BI zFfM?ee4F0(P&Vct2dbD`peBG*qj_atyKBTV>+?9TTtw&aU4p~5eXDF)mmJU^3ad`@==#a6@M4 zWxm1I-XssdZgz{A&0obzPEcbUaLi;mx*{@$It44Dc(ruS`l9Ahdny^-skTvfKZlD& zsyHvVSt3C2xs#Sa-2pWzUho%Zw8l?>?6T|zXra5|(upxa5< zKvr(|d&I$-Uvf-+`25dc0mmFa6mg-zqnI@qG&6HjO;SzmRl7OxTV;amDvH)uKHBAR zz`_zj{K9*|^2|Y&M9@h0=7o6xod+{^&G2xdz3s2pPX{{j$HN>11>;S!26QKA%bW_H z|M3DT-zST9`v?R6tR)VO28-?$jUku-{0FFIrvsR}@(pS(hih?#6pfsm{%SCwm@X6~ zM_Hx4_^2mld^o(OY|vCg+m<4u%qTNs)RXcm&<7uSW_@ug>>7g^BVHdyta08Kit_|V zOC0{;YoDA!grHGCVp#UzLmX1g{_9q4U^VFR(_=p^!q=ho^2bktlCmv@<2S#aXK_p+ zeqKLMM5dO}$_{$|%9}&*nP8*Ffg9D}pLK8GJ`T3LY;|w?)+*>|ty%R)lCeH+LC{HK zBIT);*NNk>-q38^>9@G=fdnsF%E=BXOl?w@TKb--QDMQWZBNe<+?BXif4;-`GZ`0B zom~#aUeOI8kq-Cr)&E-3VH_;P+(vpbw@U!XBy*8Y1mcsYe@qFQ<_KZKBV1QEFH`^m z8}}ui3Z-7A2RgL(W4Myqezn?FX!0i1Xf)8pMZK4BB(O}4q&6R8XB%UOClzh?nn`Fvrsw(DB%zS%MB&ySY7;!=GMTZipuUFU61Ax!NC3Wuazu%uf!VK$uZpJFtz)fTHlrPZ_eGurXz-?0@retjnoAX8e&-ccGc_w zcZRv_X3qBJ@5R8dyAx{akn_-BhsdiSG~dG?A;3_x>bw2dZK8M9@+oNwC?Gn+`!~SB zt+G{(Eobh4PCZ=(!|V(MH)@;C!v`m`z5plhCP2Coli_@cSu`d?jG;95lRuGt?sE6? zp+>)h20Rv})pqOArrH`qPq8pzyv&Wf^QFFs#874VWlUXJ7y60+ORd1piCuz5-i^!= zYC-&Xm(bpIX0rW&c+psMxWEjqr$^`N#mE>j6dY$?-$i~0-wwQ1g6^yc!&IoQ7B`Uu z?$;vUuOucbIy*=HByn06RPfx07+j(3A zZf5iZj4EQY5l0mDZ->){_|5ekv(<@MlxDi$72IDR9zX&HJ$#A7@vj}d_dKmr zHEimunJ(?mu}&OdJB+UV!O#ZghPaqQD%{{hr?T z-)3uu$-Q92UCHyMGT@y+{;=T_J6FsB>?z@a#0loE8lxnB4-)k2Jm*N8% zNeArJYKHE=`4PXCxIZ03$p_|BJ4lq|M;IBQc2qvobpKB4UQx?k!9;9eUGaFXg+t499-E99eeLRp_N@;rFIfyw#xWYiebK2bQXsMQ<>Rxx zo)k)Vkp1=FVq%GG0ldjCEND9XGoF6chA)+bkA>`J!R+lpI`micmH#wF$b{ZLwp8@O z;8+|l{C-ik?lR5B1fNRGQ%4-2Rt|cC1vZ?BOsFXK;(!t{HW<^Um3O#i&KA4occm|ayGda5- z)-!!UwP+2&tus6SMRIVs6CwZ#AIjI!S>glAXFp{hmrKLoT91BM$lusd0EF`-qz?aS z>Q%%X!YTB)DSZ9qJoNM!wwo2Cu|K~&0H#(r&ucy zr_t$T6-LUDw2f#{lvVnnqJ{iq^Y6cnQ8$Qm{lg@+bXEY9tJy)L;n3f$c*<`YX(-Or3jro>ZpP!=3E zP7kmRJ?$wn0kz2B5oRK_U+7w7VzSc8ym0>_WbK_P&l_dl>c_H=6vQ* znd5)08Vw(*TQ>6#4QxF=<^ssJzBy(<+dp*|KCFbFY)SPA6%B=_j45DI%7e$)T(TC7 z>}!X!sS^hn0NY%Yi^s-X-rZe2Gn%ip$KjWA2WL)q+T4TL`ocNM2wK2P+{YD&=F31E z0%r}I`#Kw0#Q(lI>s^|_l#Our>P`Fm1@{%=%I#Ma+T6+%{5>7#wN8D%=o(jM4C&5O zIwOCFc>0F0QfT+ZxPWv|e?4yN6%lUVifYP3dzYeq^A9m?gt_kcVom=!ocu3mqn_y({|?3q$Wkn9%vbtn(H9<7rKf7-L2llU^qQ)UNlV@6>0P zjKW9B>fe^9s;S-Bo^L@zjeuW+FTUjQ0TAcHZg@Y5bxqTet{J->I?u(2qP2KVZV3)C z_xJRs^S1WkICOE;l|t8Y`8j6rfyLv2r#Mdyo-m=ZaUFx5Wt0ME4rrDesLmcabAv9a zD`r=k3F6Q5PrHC8`x)Kp%k&i&Z*rhVSa-*H#)5Jsv^VjE=2p9sR@cdDTKUsb9r8hu ze42K2@uWl5TCr-EhT}Qmb=texD5u$|5`i45-PfJu2qSc;ZUb3BmD)`%!q( zF=#l1HuRUd8|YyoC4CK9J=b7)X3CTzJLSgOOLZNsr^<^~| z+DE5jFUN1G3Y!kkp*Xgtm~`mm_t}xn)IB@gxd+z86C20JJXDE|q$#_hx}sRkUqx~S?^jAb zWKak0oC&XEWqq^hctcGDy4=wH2mAY{jI|ZU%x;)u%#UuLiWj(pSvnZr7VRwDx?e#? zEGC42m)$q!YkyLlcl@{VzS7i%9^mjdCDODz?WS+^qUF?Vb@-OhcjyV1KJ)9S6NL1c zJl~_r+y;`Eq&!QNi!#DfD=|yK9Izoo(u_-+VG8`7Ua)&5ALn62e7p{Kb6(kNQ z;&=PeNV)Nc&$Ztz$l3-F|JwlZUx7;2nH$Yv5-$u>+Lv4=q>^?c#XhR;jZ234`SFiI zOtX~SWiv1DQDg0K0V{AAcWSsz!2yN$tgBTY;L=)j zEo$iv67BRJ`GlLY+;@2(ZOPxcnrCU##ld|LM-oIxQX>s;bHdZtP1^ywU0+IDdY+G! z#}hG4r`^v0z~kqnZwz;!V+TR&^>fz`$2A-F-Vqw}0_c+5PVHT&C%&g~hYt}{7p#1i zd%X!i)qUwqes$d{<=ff6244dBvKfrnIF$|b$lSt%6pgQK(#A9{ca*-eTOS1?OHV8^ zIw8pQQzGC6-);($gEkOyYa*AR(^3@27edp8g3`djL{AM5&G zEM!IAz0xH(Jv&lyb-gOQAI5wNf3_49L=UPp?U-3K+VX2U9mxA~nS#KMfuWV7Y%W!U z+vdLd)(O?Q;c%GB-}%ZPD!g2bK2KX^gQzk{XugGCu=?!@3Z1B|)hJ4pOnICwr;F83 z)Y}GFis;=B$Q%HtFI-+F$tLt?mopFceHv?f)C~%8fTpr?DC_cSz7y+<)gGel{8W&z zh>(bO$fDL>LWh33NJ73vTZ~mA!x9J3VF2*LK!-u*5wfKH=Z?UTffxAEh&tCrvBm@d zxi$xjYg*PlmFO^FnvR=sg2HDnJ3=hn*F@#}KMh*frG)Lzlmk^v16i#i9lU3`mZ;); zr24a`2m$KYdn1z57Rr1?-=d}e%L*_!#C+>%|IR7hxQx38} z(mw-Tp@Rh1>~%&rp5n1!ONtj5N5*GPJR{oK8}}8ffD^W&00)cr<{p>|M(3~=cY)d- z*FA*S!+}rB$4Pqzt!X=_yojJ!*Wslw>#NFh%Bc4Lc!p!iZS}2OR6OT#tmtMy2Q=&V zc5OFXK8|yMp|6j{rMYu`E1aN|S_*^fLOT~HSd>Gs#cvp5y|x|#GU${xS8F+FNN}2R zK3tZ5XW}cIAPHpkS10sQV&iz)11auO)~$prlgyVdQFXrdo5z!i=O5Mfk4d&kR^oyR zDadCDzmqucePO`NA$g?QI??GjoQN2lf6q5GTKCC~x&~MgK7<%=Q zTY)W<*6`FUz)!_6p}&3>eoK7d`hfm;x%>pFE>y9D`(FS;y!S|IDNx>^069e}Li?ht zo87-;atv)n8(FV31(airi;vzYq*mzk7#0$nZYN-fIv$8Mh6!tT|_ z>C^-ERl?53ea6oWUQrbUc^@%Sp|G19UrhL_Fr>m|Y-+K=6j4RX_C`%m7OA1?*&&9V zWud`0O}J56Z{PUa<)fDSFGsZ>8&mUN(R{Tybym?f#zBLB>udb?m<(L(+DwW*=ydD& z!Q9sMi6)#Ve?H7~qvtv%kfTBZ18%>k=4)yAXW42Z{S;B32P{ZHuSM#`Y|+r&;@?yM z#JC>|<(WH^arKO30k!K?&>Vff6;oDK{n%?JG}pE6SQp@^1Bl7R$I}H>w?n-lRuTqY zw{rrqaI#`};k*1)fLD8aZcsZcX1`@mXK*>?^2oP#t67A8UZaChi(Y@vwA)mA=QfXe z-JxSSJYCcMG5oU_qj~9Y!(#N?8^xNwPSdDd_jR1)TQA(WuYC>ov#@+bz9=94pfTuM z5Iv`}K_c&0dvDP!0U+xDVta3c1)lOZz-ke*#ZOPFWUT>H`8HBo=kfT@;POA+K$C&- z1ak#D-oE?FeDBrczBY^dB|YE<5L2tR&##iRF|=8J5$brYMvww zcjo8l{XTcdkrBuXiHXM}a?r7f=Jl{zy!61BLyl%X$V;_yD(}eo7N`L5uQL-QESZZR zc8XjUxpx#iPZqA-K&EzSJ=}20aT4M3wfa3-=Q%|*Uo|c9Z>@L>F)yUxA4}+vfd(2) zIgC?uF1^G_7NO6nPAG^kmm_P{89P*Ez#jya9M=l)7WAUlN$U z1{?h5pFS*0mn%^pItWYDnQ~e=@CZ{e=iLt}YjJT)X|DNw?n8Jc5e?dpHTa^r+4@w@ z%Y5x1us;1Qo|;#ah;9i$7)i20CIX`O+G=BKsWiMZShNT5y7s-|9n*yu8u%p!XL=6_T-QcAMf zMFntZK<{GG%>!vnlx9l(;4CV^9k4?AQ&a4Hotj$U5}6 zFyrbMy{OutmN^l8ytVE%j-+G~~v<;afs>|BuzI7iqGlI8MWtA9#lG_FP zrB2fugLQxujpMHlxPK%5pI*-gTf0;Hm7jtsHrMSW0Sq@NsRR!7R)1l93sM)7b|Bd6 z;U|G6IBO#4kM{t>!?Te^lpSsP+jm~g=Y8F+uix~X2Wd=#bkZv)>w!V#(OIL(X+Ym=nyMN=>&XRSC7|@FPHf#UW zF^etouWc8QXy%oyjf39&N5FOZ#PFEUD6qI9mWBRotoV~j${|bj#p1dRbn8WoR#*cb zL^8zPQJ8wk*@e-8i9h+Xi?mlvP=+}H;aW*0+Qc2_m#tN|`KyDS@XE>wUA3IhtpFwC zvXwYT^Sw7KCfPI@2Ijv5`xKcC{%znBhjfm20PY^j2Q5o;sQ3|@C_qHI2#g{sdmc? zXi8E&{{m_~?Z$JLpvrx7F&K1FoV3z zoL;IU!d1(>>vuNyQJ??0i|gel{cB`E7F@Y%X2+9NG37EA!2+6PW3Q3FVAk`^ubs(h zCmj$Z^oJRlj%2pRwAXBWu&(am5y^7Jm^)^V)`-EJjkAs4r+Zu;0sPJP3mH(LtL5&N z0o;%(C{Dy9TIRp>w*;1qvWNL#&)Y}-{H_(W%tktoiiJZxe-5aHq4dxpUe#^tohep}sZCyH&r$=8UO45^IKtG(@)FjRhw4_4u!iow7|{ew+Qdm+#w&oZuf1cg!G$W~%E z<$N;HP*+5|#yrNU=ibPtNRuJ}f;dWO@ghEl+}PAdQo{I1!UHgSCNLkRKwJcrR{Ttt zgHACkC+@o)5}m1bh&Zz@NzdVu0;%+EpXcZTE<_C^-Vh2D+~C{4x7eMIjCcC`=3|RZ zQ%9?JZ5I-5Hm>3QZm^cY`yHh#Rnv&iDeat?c-*C{DQ*i%-~6nTPRwrouwFu)IJPs+ zt4p|^ytMwLI%rICiXRcJk-8_G54L1G#l_H2wiOS~ zO(^Ey>+w?*Qa8(3+bpLj;8L8^cpJvK1_!VPF&Ymz2XUl*Q9a9mI_2>6c)0_@?bI^AN zNs)QgS3oDB%_7ImK>1T@^IdplK?_{)QJ_|qkqM1-SGqx`)JM;H_G?#M#SgC_)5MBa zkxC=y%Eo>xuhyk|j_=sK;!%`(!ipmAuteOBJ$-cjX=_v9cb##0ouo#F6NB*o_5xVN z+aEQT!ZsqsHr+=SUB9qir9f}IpfKXUiA0PW1TopR>{wxWkUd$_m-BynGf~C)jYfab z%MHL`;=W`#l8Bk#JG$#X6>|+9+&EGbv6qjG3zDMj^<-Y0iD^uOFNAc3o|YN3Swp}m zx#>ZRr=P5}ol&0-{pX}}DeY=cR^AF(sVZ-dc{>d$L_E~6DmUh3larcFA}W1Fs(U3I z{4)(v&FAxxO$N4qw&Sn`vFiI^Gmp+(!A7sa(L=|W$5SC+{}hy(oeO=dT0EuA{jqQ_ z%k!*DXPs2Wa!BvJoXFBptEZ*P#OO_K=dcHok7gCcO0oAL&L}OXs9O%pC-6_=sm#0m zDeAs3)hrAoo(Lof+R-&3NjNyTVZ(b!Q;k%=0|%=dy0z4qV-T=+)d zAx9&fjPVbV{N%o8s$jWc2)M&2>H>LYs%vxGRTM$Hf_HVAv2n{>mUTg+Wq-g|I(1}w-=M$MwR&2T+@C@Bsb(7_{ZBYcIv+scbv6^L<6 zSn5ubBZkRlCNA7?Mf8;;Q|NVtkk2g%MrBL1hu1yDAJd~C#r7W2RRw| zJwD}y?9q%z5}-JIK;2Xu8fsU=V1r9-W#@L#nQryUwy`*97w4xQl&Zwu#;}8VlVDTU zJTTMm<&u%ge2FcL?F`eJV{s#<+bx~{C}0uZm%KFTsi1^BX4|I}@M~rmv($d}yfBf& zPqv!dV_bz_AHHTuGE}3hs$0S^w(XuvDE{z%ioH0F|EZ$o=Wb*s1$e1r?mTWGTjk5y zg=((PW%UUb)bs5~nloDW-gJi(lFl(xZ9u1PdBXGy*q2Z zRf^?f;2MN~V6SlKTDf07JWaCqN4C}GNRL5fM=(~|=Qy`cK63%_ch)oP9*6szkOU~F z3jvoQXmlEa)=P*RL&iOt_a&S&FN31UslDuoPrlSPEdP!SG1H%n`~7%b0dl=MQzF@A z-GzLt-b2Y^@g5iYX3ZU%+OP%sOwuv~&1ir~mR7Zc!)qI-oYP(VUGF?Jnjz2Y&}eJ* z+s4eV^)4N68M;z1g#1xY{4oRe-baz;F=r>l4BJst>JTO$O`b41>d&W$_|^$fNSd{q#e6aUIIlz^etn0~$3TwbRyC7aYEAaGKqD@G zR%(*fz|2EhwKTSZ@}+Ta7jeYeOFZ)Fw$;3Jv2cHfsZ)PEOJgUx)v2dl^*mTGx~QOv zf;IZ5%OPW1eN}!vhQ##-E`z)ZKS}rtp+6YzV7DUkmKZ$h%QqMY&gPCHqRd80HcmJ@ zLjLemEllx0XY|5XGjX@tulJSk_}pQdgN8fB!7m@|Uzc7sG9)w6A3|jh)@wfxE(mV? zaZn>t!A0nk(G|Y6_tS=`AmcccZ}U&Ql9HTBS#Ksc76U?%3loXw1nFbvI3s3&gO}rA z%EhwM&Wt`7ej&nJs`pmVd$}Q+UWHAS4sC)7LukL4=6oj-%%84Q)MH!=@Gq?o!uZL0gX{=F+d7x;4ud4FIoV^5i%Ftzn$cfq#(^lLfyNe@=OMmdFG?g=DmprJR39>nwXNJ7 z!BWcvvC|0ev6-_75ASbbB{w{KhW+k21WL}AVr3Bv&)=WfVVOM3)&8|O!Aq7$ho@YhMMIRMdG`o;A3t!v@yb3)??>b^6ve+BDVY7+;!K%CD@ME}c}940 zbfH^a`KOWF$(CW^2thn~!b%ue_&c@9FL{pEwwtl5L+qOUuYt*+$8u^scM0$*&}`a8 zWUw^^O9}GHl?LM-#FIhObj~V2;QMD)AO`~v0IL>Q0j%8&+SbvdyGy3Q`kI9l0>Dg! zD86pGJw{30n{!7uiS+s@>^j!P2!>jUw+LPJjdoi!B7Q*s4HAY{U+t$hZtkW*2EB51 zUc0jetSEjMJYYEA?`Oeu9{h#JwHgCFQQ`gV{8>)~GF4gge7vR>epCR%3_@0axQ~Y5 zaYE_t;e(k&`N5JEp2lVd;qwIC*3rwd245o}j~E%YNXA6Y9uK%WGH37A7Im<&g+6~b z(p0=O*5xAe=*BI|@VKVH`R8v60WTgO`it+PEz1Lyyhy8>F@F_vH?S`94?Em%Ok?U1 z#anr5)A1iG4m?X!<=Zf(*p7u+uZv$*{52$SOV|IU{7UsZQc}NJYIebWS4^!6+dpg{ zV&+kc(y@fW`*EVLM>(8cExJ`nrlb^{6ecuJEKKS$ekNGo$VKea19p*#=$rY~YTmc2 ze1jqHpSlUuQX94oQ=Q*d?jX!Z0RK=sTL`@BcXY@umB>Ya|ByZi=*hqnBo&H5bzO98 zQV?>-*6v3&NZtVI3elk96v^>C90zN`C`lsvn~YsoON2mb3-OQvk6YU-kLI82O2N0< z>u4C)ng#mZFB880!r1hg(1JW#8wv%?ek6_f)U2?hJefQzrW4x`ahtunS1mU_I&lz$ z@xc`qMv@)^BA6&BT=;DdnmQ`lJ-MF`jbTg!48nyG+-C1s=+8YmH z40V_J`7=Fd**nz>zOQY1o)=mCNJh=)pHg_T-w4AoQFm{ZaijUHZl=;!T+Qblj%VY| zI{Juj=aSw6#AWiY>7`x7(I%c!4dQ!$e|8b2h;72JZM0hS@I9Lk<)~Sg=(^Gc%o7#O z^Rdwy{?pf4MCADP2qPo=7kk9oo^l(#T5}oj5EN9$F(iF9i=BENWu@$bf{o%^ub-Wx zBR(3|(Jqc%F!{T@{BZ(K+>LTH;U}eC6?RTGiz!|MGw}o`-5(SovR)qoNJp-AS9l2B zu5IMNQo#-ewft5J<{{Xr{H-SrS<=Tw+H&|)EgfC(mt}zb6Yq~nnju5_Wva!~9Tyib zFFpNdx{Yc82I+JSDQ}hi3>lJddsYiH!v3}SS+jG#du>Va<9v&!+dfS2!QJz|pQoA2 zKK$}%VWprHLNtE%4HARzHrdLYQ(lb~Rs;&^I7P(KDVnbG9hm5c!l()V6rs`NSfy#-ZIs}!UH9wHa$=qLf5!QV6K zX!=w{?=A}tZu?=9(CTv21oe8e>TL$q**(Gw#(m<@-Lv_??=zxX&~~*81uNm! zy@b*YvXbJY)xCtkBYv_9-k!OxIN-(7KMLTk=h|SD^QlgBqHYY?K9*9vMr_cCVFHl` zzJkU`ig%7TQ^Cb&%SX!>Ro_0m8=Yx6^8q#JNR5|nIWY&f|e zdp_pNY@>{ZQVI`wov6;$7Z9y1G3zeAxl4ZB%j9VV<+O*@m%nNmGu#p6L82KMGsD?I zc%<90-Nj6Xv+s&GgD}s2{XVdnG&D6dU9TJ!mI;`e$cg^!NvuYO!ljlgLwa$wau;5V zk=_S$|p|DX*t%RqCGJ$J3T0&6A<)0HhoJ}i-GZsZsop8l^l#e710y7sHR#p z)0p+NgEK17nu$-_nNBnM!sBb#;kZIFilWj~UXY{Ob$(D%W!`M2_d`ZvL+eu$!$mXY({Dq=npA7o6TG@uc0cWP#3vf@gG21mxC9_%|f zdMB#Yti7pZJ2akmo992%%T~rrr;VrSL~>ex-ZUy7qFoonSH!!Qr!DdfOY_9SzPWw@(wFHqOSvqfwl&hIAU zfX3{wpRToNA$$K6#|7P9jON*eY)^DLHl>iXbiNcW?u0s=x<9V zzb%wMQRf)4WC+1}Ny}z}d{mysrm`C$947R`8xa)S(e8$yZQI$>d1z{fQ-yM}0wZZ- zafB{;okxYh-iPe8uEpY?GJqV*^AlWrdwa`B@`a9GURU>5a7eJCrsgMS z+U24JtCpX{oYrHFk}ER>5M}E7qFY$}pUWG~d6@m~aH~c0BCTG5ai1b2BA+Zh&g~zm zt$0hgm)ZtLRaIXmr=&+gwj{4S{YMlBgv$_@MYk6FbPRIq=c=`7k;m89bF;E4o2z~f z9ztrvx|cTicS{$#Acm_l<;Sg_p3r z2Pkl8Cn#Q>*QWQ?<^Fy~93xJ1;=m05^=(EoC44!$C*nddz(PTw~Ljl{)YLUlk&ZR z*%(*~$&@)fBJ|N+^tfWuH$}3<e>ijq zp40s1$v016DQhw6BEPWtvu>lP06}J_yooj!k{D)WVyo5v+M&Ht4a)N7BeLzfq(Vi_ zo{RQ#>P4{Af*dWKGeY>s*9rH5ykWZhTjjhxpio{buxI1yjy=s=8=cs$;@ZZ{B9J!9DLBm8S z6B>2W@#sCOhf&}zJdQ<^foq*?Zj)~=j%Q>+0UXRB-!tc%3=0Jw4VtG*G)jd7FcwJP zss+E~_X9Gh@xB87v~Mr)Am;1h&yj~-+S}6wXHEaKw!n7Nylm1 zho+?bPEukJCEE8tJQjL0GQNcoF>7Xug-wo9_-;AcScd?Cs9vj^$ze5L6qZ<%ms2x+ zB;NNPXNOkg7Y0`(jEy3LLA zB>c}xJ4CI*z41tyk~+%5T@GB4s*$^j21s8<*^uO2#71TI|x+oEI4oz*K#sVhtRMX#W4j%=gMrNn+^IK@KHo(cb@Yd0o#vY5gxXcr6d z-=vhUKk}k`6D=n>60P&Q=R5A+C66jLqs4Bw?ZxF_Hyis3xuXJ?r&HPIP&5{8^Gf^2 z4%GzcQbSGW!{&^wjvhl}A&QF^Z0A-=OuqL|4;u&;De~n6kn%1;Xq&FkFR9uIeTkXv z3B5jM-x^TvJgUYhA5C%cr%8Xf%)DfbJ@_0)nwW#_Q(P*}{sSTBFXmqc63qI-7e6tP zD{oN=u53$L70Fnp@A-z^ZN#4oE&ALi`2zPRgQ%#23jM_3GQZ6%>$}JCcobY>6Z`ub zYP!0SfsV$%(R*Akf7}TmW0wsra+q*OXrFqnZc5d`PRXvFe1G43XQxoU{mcvrH^=ef zIr>jlCS9w-F3W-EQt>ebJd1`@V>3LM-Yw2%CFhxiQ1Gr^JlG1>dY z^x^3EjT_|+#-?)8Q!?A9cZjxK`HjfplQpo^ZIf`N z_#@H*o}OAl3}%QZFUzGHO05Mj2)ynGMpm^hWxvG3REN8OCyr{`S3=$ zb&C;)`E~jv5&aMsGK- zuQ+`Ve?dxCwx@80;;qnowp-f`vT`EC5x;_mHs9_=s?&Y(5%l~$W_wh;I8ZDzI?dJ* zpF%Ae#6wIeV*742$<|6BC9S^93wvSon^%$PruuE2o$4J*zE3SJxaD&l@4vEji;}h$ zXl*|i4rT-ZEGi3g(iNWQ&&FH&9_#pTj{AB^0A`1YeaHt3Y0JCzE9(;5@Ay;rJOn4Y zWFjz6F{ZKQ;h6Jgz>6TOp|3jmHG2cZHLDd9$AV?r9gd>XKayV^ahp8xsL(HZxU$gu zJl{L#zTYF%*CF-!-Wq%6E)`lbJoy6D$?5v2)45stGv`TH|ax!5-KEJ<|;obZB zdF$T$$1<&(CYP~)E*HqK_5^?PnxaUmu?~T2&E-W$<(H=z0z}6@ol|o0__|Ym`zZ5!h8yPd z46L8IpFSyut(GybuGdKhnjN?L#riue_9;1xyFV64IoEU-d2(9!T=x|2+x<^8SrCTY z)k+&2DY(*p7?J9|=Tap@ZIOEBzeX>LHJ1S~mJ7XXuHoeeYr%ES)L@hbi2YOJR1TvHn4TGf10h%oYCt z+UT)so<+%G*pnt|=kgO*fA^DKeHtK2FhCm+S;^wo$!J%w)rjjPZIMYQeIpRNza${) zE2WL5b9PgTgUkkg>K$yd`nkYb zJ12Hnt0D!(2%DjzCW8Z)7}um(Zg0D%a#Dl+GWGb2nw_CrbN0IA?J}0cra|SwmYJMs zJo_<2t6#Q^LL{^O+0jiA2v_!nq?E{P-drdaN{WkeaIVgKlPQ#sR@oy7ak(&>^eHpk5- zJg6(!lCDiF@v9nEosXDr!{t*i${K ztK*j!f8_xI*`y1oSis^hyr~N(C%UE7=4H>fKlJ24vY<%@^=YqO9I~6n- zengr#QD{q}noORS$WVsw7Z?1@c$y(j^7ux7aC*Ca$Wz=37UA)4`6ky75@dR67qJ4Y zq>gw{>8T2?JtOtH77QEBvK;iDUpaSLTKn^@l1dvzHB0VN=4p)?xbAk{g7;6T3Z#69 z*w{E<{-n*x8C`{52|S;Q1H~ohNf}P=?Mo&W@B7Mb<%DqG4KNRW*jt%HoT+)dcp89UscjD^^fsn>eB_U^HJlBI}49OJL@q_T+(Q1%MUt6rYVB%|LY7}lxwKc z%}Q<(A7fwKTO>qSOhTi^`hV{DxjqG4CF^3*X7y zqh0KjOZs44YI-9~8a>LW7aBB5Rpsk@c{|riDAnU&zV{l_0W&z#}O=RZdri@}^U9R#&zJ z+d(A8(Cn(9rOJZ`2c?a?mcuU_8mzsrb_VxSI$?XMO(0U)weNm$UJ0nTmpm7G4{XU> zrai2Q-_`N2sS#It_0?-Sk0^Wh0_bEWM}D#frO^w_G7hvwO5T1N9ZA7QqDok3=;3iN z8VS4Ha{nMnkI@!*ZYay4)5f-a_r;5#xb#e8z3A~%ELl7X>xst6eQO!;k10D|b~Oh%JNcdfSZA#nrR-y(E0% zMCaZ-T}W|_Qt@}U_|IJc^_!)|*scf7CfPORg>?e@gYA4y4S45PLS?cvR6hJP-mGL!V=LCa>LEQ4_Da(O#Cw+;d|s>i`Y7NSz>?lAk00t@>6Dw zAc<;-p-FaQkN5c?o&%j>waKudworA{&>FDK$O*y|x=BcqK5tH;Y#|Vjxx8D?>r~hd zplc2+jur<`SbMov0x^n+z{o|)DV-_(B0=g=4?7#4El&K?Kj|Hf#naFimiDKegBGrr z^z8TiE>Q_f?Z_bIF6qlAce3REeD%6#P3ipiO%POrOB+c^y__wF{mxKm+(Qpw@9I^O zpL!)@FQkCsu zCo^9g>0wRv;DW*P!Q@cpxD0!Q+Y>pL(wwsLMEVU50S43>TUu-%cwMzD-65&k-+$I$ z*hfzM8fH+QFB(j-qov4Y-m~4acVfuW4N%&?T;Er6E4|uimDMLn{fVjRK_9^!%9;*6 z?&kB**Ke9)!ecU7*JCr6ZaRWoU_O#GU%{B`C)Ga}P1>BOw|6SmhR88Zu7OS?l@jJ2 zB)>1bFBNL2X-4RuWzLsw`60Ue?d@%xxU8ar8j~cACkyR?NV^$4gM~Yv55G&nwfds9 zVC%O^C&NuYZvLIxBXrBsj8e>VE^9H5%eDq^ZizCXh9d`qL=F1QN-cC0duxH}P5)2k zKUIT1XIeg0(Wy%>kIu`{Bspsc%WU;Rffam7LsA> z>~jHq03W@?csxwZ%*BG|yPg4idO}@y$CjxxL&d4byEEWG{F>T*Iko$@)!v96o$M&d z5Gc(NuBE4Xd1p@RM(yn4RB4B>Wyf4GLP@=iv#OL&5OnZ$sjRNn?KNt%Mvg2vR3(P^)vGymP}^#&nD-+5H|o8p?QN!`oZFaYmjA&l>Vpb}_%(qn3=?sfxTl?0 z8@jt*;|?W@l?A%#8&*})D=n?P1Xppb%kw%`FN*mA`ipsAIuH_=-<+S+>?mZBsg_dp z#=&HfHj;I(qjhKtAF*cq$FI47Cg~{y6Qfzo1`+F9?WAM=DIWaLwBXjXa~=SyP`QbAPAB62QKd+unOf>%yOL1a5ew)gORY3odn21PUtFE3@`_zt105ZJtJ_OVi zNlZ-47eSQ#&Z=zf2zheSj9INbinNvR63-d=ti)Yh4AH0M54nIs5gP*uDTf@56P^Ri zSERXa${}L7A$>5=8ea zA=kXfglwfKb2ZIjIcjIiQKB2SFJxjGZWN}#!P;KlWaA-5AGkVOx1_>qyxJcBc^Ee9 z>Ddb&f|8)WH9x+R^EgE=iC>aFJ3G!_q4Maa-MnH*o{4oZl!K)s0_K&#b44ToNGKG? zYq%g`jwfefZ(fA7vF#<}mK@{RbNuCr!ksn^Tf~Ji!jcjn#o&dbViKj!qmMxGk{_K0 zn(T4d+xuciD2XM?Pi8{<^V43VT%D3}=u7W8M!~xrJ*SbgPf(o)migJ(oaI15HRFJv zr(y1^(CFl%^$L3wnP$q?Q6PvFd86E5Wy;_oz3 zFstYFQPOam z29}~fGlRKRo9YrLY&^6WE)cn(uos}zW;ebPB3NQh0vL%aZP0M$id1X{0F#@_E=Fnh3zxy&tZac4Bg*_k~4?faZw&%Unm*P@V+6Zmv@$Q_lf#v{V!x$Va9CxXf zX-kw-f4^l^#ij5;u?d{;5UyCjyE~Nx)YTUU;;f$U#Ft&Ux%lT7wOj+zaFjbN#UeYe z^9hQ7L4X;Yc^YVw40v)0EJ>ZD=-p!s?BXZCvgH~^O3X7rg%9t5(F=vMO@1AlU`r||YkKHC=`YLo2)HM@H9gfz)5K<=nlIDMv9{32^2P#p$u(gWp zA)9g6B@56mQ<`_@m8iL$`8%VlltpgTFzXT!%JpSuaZ$(sI`BZ^Xr_)rXabH*0PlLnpid9AMW%Ppc}FIyDj!tlA#w~U zxWxlA{4@jEEp}|P5{_#-g+z0kOGj2j%%27=U&odF8+E326~r*|xr&z7M=;&!DXtEH zLLdjfAp1+eZfTfSr+ZS&PuE2p5)@g?Sr|RvoIDB(Pf8+0?{U8aS^ZeeNiqM za}_5E`)0bhxKwQ2Z4SHbL5e)=mI&mQ27e0B2Tfz0rxX-gxoS!yA^`^nDPx)P2jf=X zSqDeWR^=efM;`^mAH3$tGq>rqJsBej9@K_Yoie9j`jbnqXIF zH^}AE5vCxTt;o=4;JSE(=00c>D1hk>wvT-yU>Cy|&K~dolqlBugr;n4wRDa}=c{&7 z&PbQR;rC5RbGQhw;E#>%{Hs2OL#`LXIu06rK%%&^!yZ3w$1cy(Msst8r7}}ML^cM7 zE+BsCoFrr>M-6gXCGII>?4CTQk?P5#q^OwevR0k~c;WWzL4t_Rpn)r#s%I6Y(jdNw zG&J4!A41jyf+Vu#AE_>@sxMwBjZT{n<_;FjFvt4i5erF0={ZXaqT$vp_g!*_8pmgn+?m*>_TVdqkDndk}nnhE#{?crO$BIC7cy6HiG%51oJ zkO8Kh|J`g>bv*kFndB5)#kBm1g&(F!;0C!I{s~Em6+D@tn+ED&H~8Z*aDQBGx7p`! z>#qIp_?A645xMHQywb+otvyK~82Q)#>|;bT0%7N*ATt4V)Y+r{Au|4~>a>jUuk)y> z76rMuHVeuWyHBUnP3ubp^*B*Wrow_2%S<^9W7EgjQIF5+Um9Rr78LgYmqS&#fb`Dj zF#{nswq$I&u{gl6PeG!Z8CQ)s!MCpN$p+OPoUW8C&C#RS>ZHxoC58rudk>ev@IKkT(8L& z=2Byg3IWhe20>qwt-VkXYm(?JQr=6W$J4&QeqGv_(H@-^Mh``O!tv>G3bFgb?x zS+%37pI)Co<+$-q@11F`cT*-hW;Nf`04BKF}^YN5;sF@7)EG;5O5BY(oeeE34nyoO#_evJ3aCf#lY9`nU`G*|yB6@MESj+&E> zmgeL@C|rViL7{MWBt=Z}-ud*jHL^=)iqsAw=TJ>*d7C~h4i63+tiSB}&FGcL9kT^g zu#w-k;?(nDG1BxsLT@tN>2zo6X;xNZN!R@r%_>L^7nLzpSAH!R(@$ERyX5qV>HZ5` zlo;!#^KUo4W3o?bIw|v%>Ab>`TPkydoO`nu@aIj6e_cJ?IFAZ$^>5jEsZb@n`eJih&bR7oQFE!eiAR|gMHFJ% zpQF46=a#KIK_3bX7l3uVq0jj?z6WAUbaxbdgNQ+*_K?yDfM!_QuW)N6HkKZKvF4KnPH zf?OaG6}TZ=O&joS(qQ1r4G!ZfpyTnFgS#DKuL9K%_$G3_MBJhNHgP9P^R~`+^RKSY zCmG3H4S+^?!bQxtgoZ+sZC|w4;O%$&MlnwLimO#BZMdWIVi9lE3vtA2)`%2yebQE8 z&6iVD-j1RtNYJHrr4PSg`o;NI@QuvNMx8sUy9o5VyNdHGr89yl#vKaeEdg_WEf?O6In>7>jo z=3c^iJ))ZRI2Epsl{91PlZt{O$M<`2Eu*TpY|b6L)%Ff_)X8$-?49MppO@0=GBnAb z_~!}-7)C@lUjr`ey)2x|(JoY{WM-N>3K}z-fy@Ni0#86C*u*%EqSoP$m=GE62K&AYqArsMwxs3Jqe`E>YYh^Vyr@&vc)lUr0K+Q`pC*T6N=NS*zpO; z-%(q)!Z~2?a&aZ@PnW+wwp4`+MF`a21O{}FhK%PEJmpI9-Kj2Xp%ZIXJMq(v3ZL?- zkMliN2a5eH;fU2%(#xyruq9gnuAxAk_CJGDI;^dw>?@r?6GW?={TcE{+etdCQ53NP z4=j1fKiH_rS>)>KZp9+w&$tYmbs3Ia0!Lts8BzoC@Eb09J`L ze9Zk9kf-_y;4#9UZzhbS+0YYve+Zp=Hs&_BVk(bCFX%WQ99db|2g4=c%Md`D^#}+E z7CT0)OxO3I3tSw@C_#?gK_WpQ9eudjOXQKNsO9rng3E}*#c<;|_9&dHbm5P6WN?4Zs_G~YjGuE#s)AFT(L$2c-dEvi99>t~I+R&% zA{(|l?Im9JU5NZjeGbkyf&Ytqg@2DY`*+o(@v7xOPaJ*C$iyU`IxzacY29j4a!=}9 zz1Vbz8GiXq&|&Qhe5CmAqrQpzARoE@{yvx606-B+6TXcBy{=?c*>Ca+YAUbForY&> zYUGf&!To69e={!D*z=r5vM(XmQoUCM7m_^G-Y zX7IHO)m1XZ*ECQHwi|EtL_UeR&cFRgtlEsvA2w_l_4rIq05!iN49^B#C$O zhd!1^|Lda3Kan;FA9|!PcQn@yCmXdsTVIo_D;Op9i<)mz+W!Y-acXDOZS}`4S|CdeppTD@ zwJLv;$E2G&(4;flgJ4PAa)2l@Vo|1@ZnHosx`M*e2;PZQp>Jv( z%IvdtU5t!EI&$n*N5f}$3q4Rz`kQ{H$cNUB2;f#xv}N@#0l2`?xcVrN00)cvAZ-t< z@ch^AN3@E!B(dU&QIm%(eC%g!0ZXoKp?daUj#_@=-2AY4!_vnq4NWWdBjoK$vuv(v z8D@^|lx5B957shRVt>G9sLYp#t0Zeq>Tc{0ICy+Amlohg*7>R|rkJ&8_AuL#Vk{vsw{7#lEqi-G7LU5&tp-Wv%8J-!^}cqU84H7ZdXT z_M%fD$Q&Fx_RaMhdzJQ*=A16*mBAjvHSoIFl`a|p3Kaj-!ByemVwWJJ_Lz)Twu<{2 zK^4j?BgKV+>cdrkretH%r`h(-NqHZ{z1pb>{ymRNa`c*g=5ddFjf|4lOQdMMzw-7T z2;LRCF4MP>i;qrDPK%1&cO`D>8oL)*dd;@!JOQ%K<1SM^tNN%!Rr0spu^UtCBfVi! z7DnoU-FSOa=d!kp`g+}%A@uPjcwk(3Lp|%`Wbo-;`1|AKyE-&1ba{nFSE<#tER^^SYZ7O!+-qI>#$$!{m*t+dQfBd7z-XK8!no3Cmj=8N) z-ztMeGsi&G4xaSJP(teMdYpxXfAeRf_EeXCowI|-{cN1!=*u`29hCGgmtoJ!Vfni_yYt*i#*Q0ds-El7}7b$sQEs6Oi|l_u-}hLKU62 z1tb#$?GX5y!93s6+1a~L?u^{PT;hG+cfhQ^2-p{ zRZ5F0;R1+LKz}k$7_!R7&E$(Me7k4N&?UO|sWWZp)MzNrqSg@j=-pTDbbtS0YyJj@ zo$;!zk=519TeDy&6D`3c+%pHGLPJx)gkI;5p391BY5nf5d|4x3<|KAHkJfZ=$MP-M zOl%m8d3C-jZGIPl4%BVJ&#Bq-ZR5Z&b00K1Api6(sAKt3ikJfa>2^_*Ryfjg{SUa; z4WuG$jTA0mIv3buj>amj_6`UMR3oIONzUzF`l(VRhVyNS%GkGCcN=eW zKR&k2zz-8~3p}|Zl1ZlZGa~S9iJsG(5^G52 zbb0syr_Qhs(W2GXM**B(^&BXjD07efqWL38;@U#Or=aCwaHVqo1UmwhyFY4 zD$$TA)*|Lh5^mSXN!C7hayk8R$g1R*!yVoJd(%aUEVe`z*?Mfs8#z zS?dmfB1-!HT~)iK=Fjk*m6gEItC6JM$H$|KxoaiAf2()CJ4u^9@Q@ zPJhml!h_#wcNEmakO)?NAk~QO`*60GuUms1%k<(*flASE(U!yArTp`%9-Dx5GJ7|n zv^3*?jkMj*;XELxuUq_weI+n#;a~5k!UTRl+(mLM=e`)|v834)+qxbGaw~%t?EnZ1W~WyVO(l!@A`h(o3o*zi08Ceqt;Vy z(U-6&Y+uQ+i;N3g%Y6D!OJ}~@-`<@Z{rL{UJj7bNVuasbUxr9G&EH{ZF8)$9K_k|T7=>EYYwz@6_+K8flbi2e^tXb264>Q9d z4+D7E)_4f7nhb{&a<69VrkZX+@ka=0AB($}?@B1Vy(s z(#REXO7i?%aWFL!tl{ZBwfXMJ$|&HMUBbzFC;Ut@X)GPTDQ20*L#^w>zV*Z}$W&`J zIlUODy979o2RC+plzn25Qz{FOD`K4Yk1BS(gOSJW7ZUj|)17IOYz6_x4+2%eJd86; z4}xb0(oJnx56~W6iOOHZLXTSaR;oG=wzc=2x_%#4b35_IcVMX9CM6nNm?oROCMOf) z#!*Sx5Y)cvn0>WPOUX6pxr>UrL&@AWOFaS)RNL}QKIP#Y6*naIpY~&o$w=5AHf#nu z@@c!)==40BcpU0Kg+zO>rA36|8YPpGk;C`rB?Eb}9UKP+KNeqS6HJK5JPxq^xF#&E z&Ri|p728X6_TY7fLP50>WYosXl-<>iWB+b1d<1ble|&6P?F%l};vB9#VcupcRFKF~ z;PG8s#W4t2wPK$CHKZ952vee_f;cKvX!VzQ-NJ|HsRyu~uhu&_Br;tn&!|dXIeXO4 zMIpuhjaM%cBw~b_%>8-Ze5i6>Z|b0T3vv>EFJO;HIN?H5)ryWx9T^YrAFGc~ylwpn z!MGQ9W5#F;*^7+Q)?kG+i(>g7c2}{^7EZxXSb?99{PPY|q4MWk!*7NSCb_A-u4~c- zz9AH`3B7LhLZ?HM0|T$5`T58=;~Cl$KGQTx^8cZyk3TWSuk32ooZ0pPfn?dZoQUx+ z`5#-c8vA8qgtHz+!CtsEz(@`Zr*PYwqHd(e^QcF=Wmzf0|H}kRM4kCKNBI)%gub>^ z`zzhvkpVk16J}n&DHj6;!t=Qqr%2D&&9C0Q@$I_d&ir*Xn7EJP^N7~Xc;*xe>9w6I z+J&=ct4PL-rTvb88H=%<+kZ_RScFFIj)xjZ`mWVi?)*MKVFN4l{F&0W8W^#{O;_sN ztvG>ET_T&&M>*fqT92;%)c7#tU_8v=%-VwzF=Lq%TIQDWFCnZ*7QYK*?YbAIs!zE5 zjgmh;;B;<-+ySm2|C1#lVYe=Hw6kebYnFq(Mz;~u82&^GX&ctQ?qgk1(~hQC@57}F zFh3ToGP4g>neu@xYy4}TN^XnZ=K)vk>ot$azpc6^Z?8C6n6~UEg7k&zgEt1cXl4Xt z9B1TbJT_}x4(slMt$mHeoYP9-mME|N>+AAo@|}vOT*Ws*^|D=kZRxmB!&8ccA)-$` zW89TXC$4Pk0T@RNK7MQFv{ggsNSYMHuAW6q>i4Q3?rsDq8ztf3ZfPX%uFBU-iJEsT zjz7D5z;UPs;Uo4E(je0jS9%SY02Mux@J(StIlo}4^qXzzdl$ia)F0z>;AuA-}h&nX1QA zu+txyzyE=t_AYo;Epv*1xL_n-jsvdAjTo#EU*q^^&u2-@+Z$<=#QdH(uy#54ItdFf zFS%R>uU^lw$@z$f8)?U6xbumjP=OkE%e3$D^77?6>i`2bB%W~zCN`bZ#iWpwy5XSA z*jMl>G}2$qRYCe(A-kg8gTX)3ac*qV%(zgvfU38+5K$(KeqZ!jq3?hC7>R z^&hS51$x-(V>;AFq8q|AD|}r`Z>A~)i>D4s{4iJ2P9q=%47{jm-hSIpV*j{Z>afS1 z+srDi}iF0Phkc_kzCo9u?L+}nP` zuak>Hr(A4L%}qjRXrIAQ=+eMFP5hs{=epUl-0`Mie!PHtYz_x4yy7BDJuMdWUc4UN zV%A(ah{Ul7XNuhlrY}-O8SVBRKN(_7FACK@r64!l;rk^PL=2AY^Ib#ZZ|(~tc;u;S zlK)7DgG)YUEI{s6|HGE$_3y7J#ML@~PpOVr27|`X0wmm|7S` z6qkQTw#iMMQZceQ%3P>$M zFznQ_hY;p{bkuf9!lNg_Yqz3FaJSw-vB5o^d*7+7O;g6V-sc76N#zINnC%FS1WSPgUF~i)eE;t{j_oZU0`LD#b5^QQV+sni* zfY+4}NU`>Tx}@JQpN*|ny*>JYUeYz_m7q2`6GZLkM|uxU{@T&L9JS+Y_A6 zjZ^8GK3y@L0c;N(Dc}bw6+T3I4%^x5XHULc4r zksAmgPJleS`cZlJPyt*{&0X zH(0fX-JU$ArmPbMC)9upf+ney#k1R01M#?6uKedvo(-zZg?b#?1F}$hl#HyNXyaea zaj+cB`K(>#3$Y7nQP-~d)>RFLVnM-VY+0TZ^C>E;nofQGX$cmKuFy`lQb9~|H5n4P zhMZvmA0G7!b~d^U?6` zF&m@#(?m*^hX~*P6ruUWv2=~T+J~xaSKz(@8{xzXAuZ>IuqBQ}TrK&tK>8i4DvWShCnM;QUrXpn~+*X5* zG-r9VaN41|kt%_&i+$zmR|giHdp6Yd=y_zU9c3ZlniZQ!lcyl-b&s71SlHJCYv2RA4HbGG9*B8pM{2Wu>eH&U9aI`=;aK7Ib%dia6-ed|ct= zkB9xb3hTlGh#6D$<{mxp;8pBt4j)SS*cSNcmzZP@Og8tPm^jy}Gdl^fUnW8wTbAEZ z;@bY`iJa23y7JvR7m`5&ik|0hSZ`l`&UXSoA4-p(=zk_7cK0Q6$eF4~MracjTx3Gu zN;sGDXRqO3AxVd7Ble6-Blp-WHK&G%m9cd#@4>woa_L$b@-GglyR0r={_=mo$%vhU zaWI*6q+-S*ga;PCwn^=@>MY*gqrj-VsXH&_f4h-Qq=Ss?gdVK6(n@sXAR~X$8>{hl z4G7Z@i6?2BXf@k~Nj{*8JEST3N=A~Qf4C&44vhv5%gUf8OP^5ru7y-a;}yL^_V-0B zW-P{+eJ7AAO!EOOr|wnYkKvxmCwJ+x<8u0Erq*84AV&W)=kEo527~FhyDiJzF##Xg zHCTy<*Q3{HYgMiLsMf#YcRD|&!*R*knyW6M8QV$EIW82=pF=itX9XCxe!yPZ^Wr!T z!O*}pOsRm}+vJ4A`qeB8&;QeM^a4PNOC0g^6^9Rn+^nn)VFG5&NNh@tV0%0Qj1X-w14#nr~)HBc9Jf11Fo*MeuSOt6tNe04#N4AiwG(Q%<(Aa)|BbX zGwSCN)T5hDm*bS6PjGZ3CQYwo6qNPMzpBo_X3(Lk@8ImfH-i#jxbIREseHp z4?1Le-K&Q7Q4EDCFRVW$f7t2}*;J^b>ZKmqbhDB^4Wz>_Hy(aqg;;pQJsYL|%a>MM z&|}f%iXxlqgqZlp-Bk&O1;TcI2q^?Sxr%19`VYJxmRnnCo~yZX6Q0d=N4L-95#EB% z&`uGRoR) z#6sZW>i)z*D+JiDzXRtD9RG{cCl^D`$5Y*i%AdAgKavT(xd){i3XAZH(^aIH(x43O zp=rRl@tv7C8ud4Ee~<$+(G9h|Vrc*5nIkzy7?2R8vU-*xZgfiZ#owrVQuy0Iy^J*bvOCACc0m@_w;EW}K8|K|1ng@PVUA}oA5=1wJF{K1>ZEJ4< z^?DQPF3g+_1Z|~x!{Rb(5*K!ov!7!-HWhO00zlXEI*M&FI^y;CKp>uGO#jDSic8=o zPv&Bdg9Go@*t;>p*O`Uc%q@wC_m^Jca(DS++Tz~v;HqriDo** zZ0vMm1)V3cD<-->b=!vtkZ!7pWNbpctFEx{vRlwO)DH?nd*hadpMn;Q9%CPmf~w|S zaDt7<=EV}8TM5IfeZR-ixJkLLJlIgZ)wREK9+p$f4w=y`^3R(x=8B!2)s3nPCKt#q zi6scb*|D}BKvLR@#b>{k%Fv!Z$DQKBSIA&RJ+gUEdg!D|WVDt6 z;}E|VspXD~^5p^aKw|?i^2c|OWl|}3m!f6VEcFJGo(1gtcg^MTie|YGj|y z6EQXrOUhV?;lA#R`OFiz`2nW{-q+t-UXk%FWQ(ZahhRNy?*{IQ?@uYZKe6u%7}`@& zI98o!zjqcQ!SZwdYTMty^+Knu1P1$$SGYfr#^k?*1FG)XARjGgW-&oBh&J2V3?F*6 z`|B6pkDt&YlbkisUwIAf9N06AuOPG1gb$Gy?3Z0Cnp*yFe6lT!S^MQhG6uqpuYyT} z$&fz}KTTVLg|9bWA&|PrjEQh=BmaSi0_{jKCtCP0#6PCd2Knw8jRdi!d3%5xwcAOx z?34qB=Y>hb%QQG=Y(&fzO0QWTk=vL-Auqs?;GzqT=lkggmuc`}09N6v>cL2arBe_| z&jqU6?wtZVg!rY#SGY9VR*wfW)o0iqnTxP8BE`dg4g+AuTt;O8jgK<9xY>A`#hgHQ z!6{OgaBZn*zZSFbX-Eh|d?NS~txF#%egqh#LBTFD28OYn6vI}Yh2-UtmT|R`E`ZYi zOxNY*;gj>IQbp#%8XG;ehK=dv5Je+w<@XrmQXjO|h3_nW=~?)jjPF*ZV%$EZ5|7RR z$HZ3lAEXO@78LKg(WZG2c#z6ouBDs}T?rBcbco)Q5?baqk<-m><*{0Z0k{!OQOWTN zt4pvV+k`X1l5|mpBlZ^%@qXVmL_#2`etW+53m7cxxqnrmR-SH!!Pff;_@%`s&g#_Y!4Yw1=IoC8GGTjUs_tg7o>LqtTBcItsfK7|9}hU9Yf;KJQ!cul_`7gG)(mM#PJQ&*%xjgFTF`yk<%;L-loRO8PS6&g$30aD5)|;?4%?bG)2TtP5q)RYd-zWgKuRQ+xYxu-eVJSzUQyZmq2z#6tD1Ll&&19SDh{y#dw zlTf2K>K^>s>20f6u<>5sC<;&0{_H&0;-b_1}Z6@Lj|4OHq6}u zl+VM_%;rvMKd1qwS8F@<7CV{s>sJ=DE3bPV0(*lH`lAJ92Rfqmv^EO0W}<_3W&X<9 z+bI>g8^Ty(`|AZ5iW=aD5AehYfkq}Rkw*~AP%crrP~rX{iySdFDyptZ&VVv}6)2R9 zk-kYgNC7BU$m7ZWfyh8Ve|B@4s(O&TkRF3^cH6~wO{^~YR0E9Q=7l_-yn!u%TFWs2 zWGEda%8lHj17GHtr6wu6Vk@teDwaD!&kVl%RWcA8hqwqs*9!H_3ns^(cx9UvF~mkn zrojpL>z&gdI~%g@k&uyrw@(4I09(M5NI==OWIr`E2Jm4>v0=WV9_kR)FGw6fB(dk~ zS{VO4{{N)}st_0;4g;0}c;8ixPaVpeb7trC6Ckmh2Sweyb7`IU&;|P+2l|M6I_!7y zc!So>yMdU#Vj9z_t2pjNUq?CK21j4lmyv0F`-&X_JSfOi|eXyq# zJ`fTz#_AG+BHq@Iu@?L}X3uJyq0VAOtVO z4GoC`JL>&_V2Qc-95E)~C!ns~ zIRas>Rlp)XsXCD1{|J4ke+a;Ssz}$FcQ4t_<}v^ia3_Sri0vcGO{=R%bB9LmpHVFD zXLs3Vcbib@z8n>TJ}t}kGao-RQf^gYqO_-rF{z3nr6!mbaL&^74)=d)eS)5S(-D|d z+yAW{fZou)@T6Aq;vcgD_3|fHno+osefZEUbAiGM<;UbgWgdzP2Mh+16dtcJ!G`pC zvTIUW0$Lzbht4VjwWe7hB?!>-==jrH2f!{S{3qvpmo-m`LwxvEJ91!~?on5^EPU5I zX@Fw_Dt3M5>pI7kW3ghKX!v~+3u$hcE@+8nBq!icbbHD(z18AT>?yr-ZB0{urE_Vqun+Lqq>oNx@5(+kY6kiKy;eRBW$=1Nx0i+8)_!A-j zf)_uw;i4LA{Vt&bKOnM+S>{Gi!#s&}A#zgSMx1gmvN6mjD7jAl{{E@vfcit?$aJpO z9LO@r3N%X4Y*Lc3EUEsLO#Vj*#6kT4N26pBluu;1paoB0clbZ@pFJv?0YEAGO>X_$ zxtOlgRtC0ci;gFDh9>S=YSlBl=C0C?iN{KlF0#N*bJUfMuz^LWT|k9xy<8u2SK`?G z+apy!yGu-cO>)}N7nlx_^C(|MNyMYAh-oR{8x?Q+m$^r^w*hUQ+4%t zdFucUK>DF`wd}A5>*wY!jo+!bc$H6!m3AyI#p30b<-q6wiC=2Qcx$6mE|*ZLmk@h| zL3qRQ#^2Ixr{SVov1wb(?u2yz2C1usJ_nQ=!WU3I?=Z+w=|lP!SJ=Mr9A2+So7|%o zmR%8}9&qt#g`S_ZNL`pyGVA1Jx_tnU2$X4K zD;8?eq;=gdh!eZ<)Hw)Qj3|Ow_Yksdb$lEaC(NtCU<7f+{0eNmyZG{aUSDWE1Ok<}k_^VcQ%M zCu5<#Cq=Vrzrxs*!0p^d{?*QkGmksTonQVy6QOD;r(@2e*wJyCn{%@TG3GQ!ULbyK zJQL}H41EvUNK6;e80pU^59a;^8beo(s)T+CCH3xh`<0sp1?A0JI;_WHYJ`AN{R>&<+)YMqUgw`bKsN1(kYH0S_e=ay%QzpXOht4o5#JyCT9+lJ`emg~~(!t;VpBr>(BRHrjhqxyFt{ z@dBDry*-V(u>dE8hCb@K2S^9?*0X5yMp6I@bx{Jj3ozA2KJZKZW>LnXw(1}C> zP|@w&ol19^bvNa|xu_i2`4DA-IwNIkrk&>RrVh;iaxIg8Dp^sFAp zL0G3d{1^ct9{T79_}A0JHSav?xE5NpD4N?FaI|wzx+XEAzkKKQjzRDG3mJs9uHfY6 zX>#?{yn>WUrXy#=LV2pFUv_>hC}Lo!4kxHIrVQ0^oMjeNTpsZMy0-GDCXXP#^`a_5 zL<|wM@E$<~%h@0;Xho|9EaDNHqM%ZtKoq5xN`OR-AZkkxMFR0aP{JifkSic01T;{U zL#P}ST{mpMSAkycPG`=00iqh;wsjCK6i5g6L zB>AukxUvG$iaajhWz6%>rcU->jIA8Q5avwI$<+%H`VuF>5`GMnE-A_V%>VI*dWdHa z%a@$QV0W5uFb|TdoR`@a+X2o3$^%IT6y-CJmocPx*xMrv0N>HJV$;3zj*M@`bzS7r z4epRS>@8SxW}@tuP<};t#zV|Irb|^o7wv`Uje!N2S;Itb%%)jZg{1^+hYD?;+XeAz&fng13@gF_mXLw${S#3#PZE`l41<({Sn>CWd@ z1II5G*$-kBQXA?X@m8klzKU!B29GnLg11)GO{#jDdUzegN)1=@>NGXB2b4@-dwpW^DLab^s z)O!kBjxWOiRLp6aJa~G)9HW`_Kof7f-$NYu zNjP11qm0{tt5DT7^;uFLDL`&7d#c=Rrxf>rDKi`ZiJ~gN_SFzhsQ-jJ0hz7RGwSW| zh!)CiJk~<|u*;u8>c7|YPvy0p**sbB4`Ib|ON4e&hlh`8<(y!%*c*n@y1y;CxXD?{ z@LDe;F)d*m-L_-Z4YGuS;T`#JjBYxarW&eyV#|y418W0;*`dr6lj^Ka8h8;*Gj_e2z{m1l17C{2O6d@BoPl; zx7DB*ZpE_Kw7SmcU9}TOS<)hsB;*QjO zQl$nx-PYjc8gCM)4{_Q(Eft z_@$()ElJd=O4(675k=^HJxv#a4?y9C`bcGEKl_mvjgn;Hz@jV$=Rj3Bc+s9XOcBOS zH9zPfzcB1&8XOYdj%XV@pT@Aga075MBDjNos7en=dX8~s0ToQvr^H6GUuW2B83$Pa zUBE#oA>*9H<8$O|90C$r=1?1tUDdw4i(eWliLRBkg+;p@ug6I0&-=Y|pkioi;Qoi$e57n|#;N(08#Vmv~Lf4_LMv`k_$9$VMeUpH& z6iSEcDjoX*n~oz=Lh0-(%C-4;(@H9hg-4Z8Faq*7&f=@Rv6Kt8NQPc?eA@1IT7i)E zow~=-Gm(@D5N=|s19ClTJ&Wz?()FK?@0&|l=dBE^;NzVQ@p3rFk>VuCp)LDpEK_d7 zt9L;Ox1!#KH!o9E%?4M&MqvlTT^Cwm!uS#=7#lrkl8ai+iCYMg&YMpnIKwfPF2}9Hdja*mee5*;$?ZtP0jcO(H2E zENS%ATun1x+Bq})1=$1l@4l~y<_1 + An R package that helps connect to fantasy football platforms + (such MyFantasyLeague, Sleeper, Fleaflicker, ESPN) while + handling authentication, rate-limiting, and caching and returning tidy + data frames for easy analysis. + navbar: structure: left: [home, reference, news, articles] diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png index 51870c9e7c48454a4a7c61f5a0b0313f44071c69..563cfb455a6b4b77f1a709ab811d08b3f779ac87 100644 GIT binary patch delta 6940 zcmY+Jc_7r^_x~-KEZK!Ym|__FZjiMkTS7!a*6a+j^Rmk>BP0yj$(m*C*|#i}Eyli6 z!-&T2H}B8yukT;4KVJ9Td+vGOdtT=}UPZQTvMHXxO>a$I^_v?Y3KB{h`~G+nA|f_( z&4;Sb{O11Tn0maN@!tZrMA}IbL7E;*sti2p9wlhQI!)JiYbL3G5(bj~is7E=-bWZn zyGxEsiW*8AArlnA169w~;RqguMuEnL6egHH0}RW7W<+8xxDu= zOWupaMCnkYuP9Pc668h3d>B9$awD5$-A_6I1OCk}82V^A@GFW)GOq1Xa+xcv(=cvC zEwBIM_qG1zbX!KPr3sy71qUy7ZL|j2OJX2|xj zizu4$V2MzRYqxup>k*c`-&f8wzE;y=9tdP9h$bBgE2Z{-?kZu>Wu5D0JrFuz`D*-i z3_uaXNygN5|M47Yx3+Mk+ui>imgo~o8`=q4B>E9eoZOH+%B%>b9=o?z>0pCWWnTdJ zNDo4jd!T`PE=hg5KZ-jRGD}Q89?nkf)Nt=vN#uQZTozt-55=<<^ePtLBG^rR#ecWW z=GcyQi@NoX*M(-v#5n-JnCXkYv33mlH$m~Ofuz*Q_a6hwvSU|bpukRammGf3{6=zo#dE>ZP_DNnk zn{c#7LznOnH0_3!7~{gisU+nfT&!k#!F1Ht)uga8riw@UGftDN*&6-x6a7lM;u1;QBI7u;<{aH^$;PJ) zZ#8u>3auQ>|Co8Pw=R2wLjnDVn0szD?w@0!YuvB1IZ9JxAArsoWo|kP$x{uYUr^@u zyiq~`jt;9=((>M@S4?#Hw_w8T@jHBLJ5f`>8uZpy9Qo{Ehx0*4q;0F_)#mT) z^^pgRc%z_IA4SB^MkYZlb@lfiW6KbJkfJTidct!9JBg}vl2x~(*uc@{-UX5i%VncH zbBM_=M2N|->6-{WzAU=A9QdW&8u1XEV6dka#3U`K)jwsRf*FzI)O)k31;JjEUT{99 z)<|k~0-=&cdusvL3EQ@u5Q(JCPEqc)3MDYAR08~5n;228xyP({1F`>z5#Oppb1O?> z%&6$4kvKXup_8`lE4MAjdO}QmLPb%~>f$yd{`YF{0>uSr;ZwyU%y|XF_f* z?zT0P016$!;k&Thduh0ASBMVF7f4+TDQpquUaKw`LVvhx8`RCWCRmX6|6SN&^!*G+ zpt|_nh+P>>PRSoBr*#P*YpcR0{&Q4Tk{rBWMTPK5NI^6Z6qG=rGg$cCGR|XLft$x3 zKVya^PKLihe>mo$5&)w6eXnd^zV^B+BQr$M|7~D{9wsq@5zi@w=pa%;FJ1m#|B3Zc-l)K4&6 z1+nK`ZP_hW(PX3Qo*3Gb6xol~3WgS6$(3!|WLhxs-iRxebP^!Z=vM$pL9a2OMzix77D7%diAJp4Ab@vO-T`679&NwrS95eJDw5X%r ze#A6V^Dw5!aFl0uq2@t=f^c`YMe;zfAzv#cg7b~-dyqG`{ zHPcD^|Ex7d9?qtCe#kf`*HoM-=rX#$uv0@=Uu|-I`Qb@bxq!U~Hz~FGf3tS#v2i>$ z5gPS#`He75$Cdt-s_ZMWHcuWIt{*9ZMD$1pz=jDXp9S1J^75qrv4-E1X6CbD_VP?U zhGjIsGQe`NzgRkWslJ%{Jc-NbZ6BgSr?Oo6Gz|OWE`4>$RG& zcF<0l1WD0%aA_LJ!Yx&20oSG*=etMGeyN)d^>b!y){pS`E*}IJKH9Gpr|%eY)d(QrZ6 zQ~}@V%6Y)xvPWVc4&ArKxDu$6$QD6LwlYue0kQUkSsxnb*y_IEd%9_N{I#j*m6dTF z_eY!8C6e?V@eY&V?CLz}#YSq2YDvFpV|k11$5DwE*1EHQ!)&kXI_UdysHpxA!7MeQc zH@op=nSC)0%+EF8L4w@2W`4O3hlh22*xrByRhTDh4lMbl^XcpR1B;gzBKua@;`=QY zN-V$$h6O$NDv_8`MG=;}&={vT*g$ko6Up5bv1DOOt&tC3)<%|>jl-?_BTF(-$8Q5E z85JuO>?q}RA^;lg6bZ5_qJqeD=K9_2(Bx0htpe!JJ0A&0i&{~{%ag$j)cUJg>b3WY zl0gBZa1V3Gd+Ygh-N+uRBu<4et7q7_d)751X+&nbcPvWeIA2>cr-$z^j@HTi`3EkY zn9LTxf!FCOv5N50M^e!vrzKjHyJ)wIT|Fehs|znaZU9&CV*_Pgr>&@cQCh>3bc4E5 z1Y}(CFB5QmI4)>0L-=r#INk3%Oc>LVwpR?vsDJlW`;RH7UNfx=nTueJqIyn=Ny>Yd zKR(UQ6fdlqV}eMt88XJ#OCHirJ56L|Oxc+t|2cT@fC9Gb=2pyL>UZ@=nmSGy)X3d1 z=vcbVY+W4nssW`KZ!4c zn7>Lr7jHML?pC0mX&tkm+Kas`dZr(ub!6SU?%8YG6GcmQG*hro9xR2_O9OsCiAIY3h*Z!`n4jBL=4Kd`hP8IxsgOJL;51E>C2Y#K?)|%A=-_h!=yt7lh&2-|9V}6ArY-pEy4<2}RcX)}s=m(ocL>P^Bjk48uC$NssZNp1yjl&|! zE9D_B_#ov;K_HDIsmvP%sbeh*H}ZEwFpCcypQa7(=N_h{)gNH<_aUKeA0ZJR^Xc{{ z=Y*)vCfftD<)O!&SK~0id8jkMwVLqswe1Try$GjDn17poiezy4@@ zqZ0umf|;p4hIKRK?t42l-B4(G$xKKGb97e5Pdvq4YT$y1C=0!h9&b+cGBl@)_-hL1 znSxB55qGNw%9?x>T=qT5E3UX+EGdH6^Z2_O(`^527$*$~TT}zIILGakOe-F> zWTt@RQqP`}L&52%VtxAef9`k)+SVv-{FvOs`Q(h+0rW3hc};RW#Y24=e5OG3;Rk;x z(Ht^pW=cXQbf6ZPR4BU)5(r*sD-Cxgd;tS^J2M$p9op*B69)M|@E=~sz}kp)-tbuN z3=+;JuCkFM2?zypIX;a@nPeaPeVT_@s1=q*-tv~Px9r|@FHuLcg3pemW3ke0v$+L} zl`e7`F07MJJp}9#@=i(ykno8+$QCo?0h8s9N9kWCNRi2`plQl`DZBfVVhN-IMJWcf zr#VUFA@F)yE zf;hxY({Pz9kJT8aOI|)1s4RCA%ul<^nfw#&q4aA}=)3r&}cqi!0(A{wN}l82rYG%M1Y57 zzS%%!imLIm0gTFgqf5UO^^37=yR)M*xLiz+29UfGz$ut6yjC%;tbs==phNbUS;owl z`8tE|Y+0~G(|La&(RdaD_w1#PzH+6%uC&0Bt4gIvvna|NIcB-a?jrGQEI$@honzM_m*fJoquOL)yQk51+aH3Qko)T8P0{qoS#_JhP^6N*&Jd)J4M4w(`gVRA-VimVZzzKe;r z9~e~yA5!?5&6nFBmP*2(PUN7S*)cR=j?WFT{&9sRrCz)UigW|C+Jp^dRTOmqK&{FQ zH?TR5x?d2NV_C#xSRzvsvcQJLxZ2I9kMine8d9p(b@y|&!;SjLxCNY46$19ft0 zIyq&qR6kXru+mQ}yBPN9t}#ATUgaOoisv$niI22oOvt;23`?5*_rAnEsS}(mB~-h? z+!7qHG6+wR?bPsXDV+}qYc1aZlx&lbmx8>4zt{Nux@U7a+kFeZqvu9iFehi{UyXK> zzAwy7JAHIbA;#ogH)CkLPKT$;v#5+*x(f2%8R=5aHrg@ncxTz^YL`}Mr%eUyW7X^|Uw5xXRxdygG04nl@mI1ADqzszA>ZeV z3`MC$OpS6h_h&8o)x% z&t>7BN343kXZw>X%`)X1h#}roqW_w6b2%*lXW91lcB6efb2(2$1cmiliW4mJh=0T(8fL99#7El36!^&54zQYz3g!dh;K3KC?&5j#E(rU8PBiZ2cOf{_>2n3xS0%G`2T%7U=wWL*w~2M#I~cW z&IdvGJGMLg!3K`JGFB94jX&?mA#7d3NP4gY(f8c3n>nQWlD=au>B8pSsp|0r_rrW? z+6MSg766YIsSV?me!V5uGxGzIcT|*p@D=Sf_o@m&(#~)_Uui0HjAqoBzs*lnr339b zrDBl-R_^9MefyY44T|(H+#ge(b9>uUc&FYM@5midO?pjsB6zftX6ykW7TP%`)b#K@ zuK5tRRgYn%4P?V!i??!jIJS$XL`Y2b+GBW+Hm&S{R(PoBB>7bzT99zX59R9B`^ z;$GVTC!0rb&13V1PTWJ6NMTX7b^}Fq)u)f&{iK~ILT>Y6?Lpkw1U*b(M<~#HCk0_s ztyCPW8}L}-iasl0o~-6mugCoqfkOuuO_}`rbkHvoy_c_LkQN46Gb04rP z@+0=ksBqs|A=n^^kaEd^I)c00bF(vHX=1O`12@cEJEDcznCSq#_Vz@3>fPSpAAH!6 zf;9BsA-@d0{_m@{7y`Spyz8LxAMU2nmW#PW%%r+dLhpVnM4{QKsNU;g2+hch1_gp8 z6-VICz00;2jLUX<3VCBuNgb|1hKtRUP6nR?TOC{hFJGO>TYXZ(<18*Ba zv7rep8yg8XA!|RkpI!*&{SQh9Bv4BUP}5ANy8J+fMrBc4P+aydJjVvDDseRVwLaNG zYiCMeN|sIK`9xpeCkI=qB5~tSSD|V~Jg;90ClcVp20i{RVg5%eiD}xHurR~FfM>rU zh;I$JaYfU|`zR%0cAwi_sT2f@K%L5ajYob{#`c)+^ z>0ihieG;EH@`UbTwr}W!v>vE+CxZ2a4wPq0R;3euXoMYlVve_YhVU>oO#9WsBan>WvF_(s z8^zW{csGLBzi}lvcXXYU>wX_Pgyy&eEY=2~H1rS&iv!P?(5Et(b81H#-P9efk4*OeRB{gPvc$ z3p>hFfGg+_WkXNk9Rx22f?dJn%b2KMDjEu?TPQe0wCoI89dAG&-dYuTSv|kSl{|kh zs+qKB=@b2bMI*`WgDBx#OMW7&d}LUwX!E~toRmYHaS&LnnLFvDPLXVPhVgKsRcuEY zk(HI@48q8JYr+vWgTc;SDAwy52IsH*n|%K1=$|}3eXa8OKEu`MjP86a7TkKL@9nbI zdL4KYeBD71G*DV%&MO1TM11HpxNw8c$XHvCB)HuZN$B@A1taD$@tHI6BHz?T(27HZ zp$KUhril4q7}9K{L>7>R8ZlOpo{*i9 zi`KyZjoCv9{e18sZ4tB!cchDlDRhOiRTSkaoZI1)r`d%CyX&CJmb-XxE&FbJPQ#E{1@SGlXS8hTAN(*F-9h0-~e za~ovla6`#0O&cLF%y!R61r(RWzhda&q&9Z-&&)XBf9*| zUN$SCZr`xCaejevlzoH?4G^t|N?Cz4;S1=^l7adLS~Ws+2H8%h`Z9QFbjsC@l?YtR zQKHhgm>gwuhFG{_$bv!`tNq@6!tN+%7Y?`(#IgKn%CRR})X{|_Le4S#pk$^B5hGMs z<=WtoxR2d=?#_dAmlXIpd}ypq6zS%+0o)8o8F5?-c^OzCel%9R&_Y<_Lh>6FEcGTO zkO&!OGj$1sVJ``6GPFBI;;DVkUqWJD?p_AHcVyB$U<&vp(p>|hC`uJ>hTTVY3r%?~ zgNcM%c_Z^NF!RFuhOjPfJ z+HCKQ5ky1nJfY->A>8muaao9!OuZoHPvLI-z7cohE~e*Wb?mG3*NID@I|U-$1D9Vy zi(4%Z?ZUsthMWdbK_Z7ADzMs3WB6Y;EI4vLHE5Z6odoqRJtwSH-+U^RGs67g=8TAxwBE8GBY|2X zDz$FGN0luKi@Yb#cXcqsEM!oPrz65;i5i8!c@>6Eqy%gi=P%*;Eq3b38s=YP9J|&b z!V*^H=#mmB8Frntp{~ZkvDb*PV;Tyqv-I#4oJ#M9XLk+dsq}WKv!>bX_IAnR_6tq! zW;mjwqoYBcwTkC}vQw(g<Yj1S zm^F)VGi?U%xOVqf$_*3wD$3T`%iaUdh;(S^l#{j7q7H0 zS{M3Gvjn6PdfWB2S10Ft5YEsejy}5N5(P91)(CD$C1A4=aMft6)M5YWaxPr)wND1t7-HWxat2(RoolQNkC$vS4}6$;AwEub7bS7P3(j<}YD_sxm1Nss&r$3xS_* zsm{VxJa@XK*n&6)R|BCtWa;YJQzdhzapZE8OBEz4q&Z~8&GW+}*iM3Dv?mw!oWYxL0?0hkk70q^!Z;PZh9?M9 zz_Kj3_YKaJV-Xh4!i~@XQG3kLm@(+yTGmwrK;aU=A8y`-&2sFueQx!mUZUKB{Ihcz zY)$!CHI<>B-{1iWdZgHooMZ$Om$mfoolq2o4F7bXr$ZT{%$>CAn3l|&%*M@aZI1~@ zU?}I*BM~S$LypCl?zb&+y=(5$+quZnc36-wv11eyE_iuYCWBngclDgoketWK;IgTs zhS%l=&YzH3+7DosaIY>386MPM^5*t>41$OM(0!1RKTtPU&dMU$gbeO*syJwQ%o7=$ z%Ul2FAe!b31CI|)n&^;j7m3GJaZ7)!`rr~mD2kDla}*Cs2+aYj$DAED1bnF%p};x0 z?FW0mvox=t{5*n#+O`gr>{?K~5Tb#%rbOSkVJCPE0S&XnC zs|@=QNoUqwf)*dwg@7b%jm{p_v#n$D-5gCt*!3ubOFph)f6(4#@yLoIuhc@mcw{;o z?QhFNkX}pvl^K-BKD82k(!yS>@Scq z+mzm*jKVYXGr8%#sOJO0j zepEcJBk+21etIi=y~HZ;UQmOuRIeVUx765(Q<)@(M{??rpIFD4g8omNyYjP-w8X|T zn|Z5`)!)u^A}py-VM*Rxp~5-{4;SXXZthjk=N}}kyVM0t`DY6A*7Fe&qrYLkjDKPO zmW&e=i-Yd=%7ae3Q4bgD%k?WqCL#XH5PyTy(zh433FZZR>AQZlKT?wm9=2E{PrH!x z-oMv1GFo&tivbanl6ua4@SUhM7V$Y+jMVw|!6?Ty5A-UkP;$sR5SI9rsHnWO6(ubn zEfr)uaa#VnmgKsoQqM*U+Ok^XHye+qz+e?ynxe^g<`BQuM^y34>!`BPrf56nNJvP? z9io$0j2Iva(NG@O?|!y*^0|>65KKpQnKPQ2pI7$w7Q)8Hc4*XM>o1fIZ@%0AzBluo zR4s$Mw6>P7BZ_&Y95#!umhtYE$?Xa)xl~Zs=~Wq^J0RQCI2;5Yg1It8jumV-mz6<8 z4g$epK@H9!)wU0oZN);@5mo~Ur6p*U zLOQBaw_AiX!I#>9hK3v*9mSal^IY?Y5Gm1yZu}dz`mPYM#F?6y)to4nDd2#?>&ppP z@t)&zm}GpqYU;i@6`;2!8IEnR zMO~M<#ejmbfzk}qKY&ch1?{z#TU4GBXDL4K1gSx+Qmj+np1m8F1tUGInLUIJ(0bhZ!|&r+#km9XfsRYcV6ZeBw6Sf@uT<_El21hV49R%K@CK<_P&aTS z8F?bxBQtPyd*g@Cg!DUh$_-TY)N$qqUm22c8OgtS^G4v}m>7B4XUQcsJ-yCxh8-}d zi~U*bR}lZlUz2TFJ#7UnF#K9SiF{56%u6i3(cEw=i5Z8hWqh1>#BU#qLfl<&Qq^D2Z| zjQ*=8y2VJK40|KB7qE}kx|E${fr@1RUl@w677zGy6eA-&J6IFT3*E)ZC%ail0P4MD zOFyHViw@5c*Bd;TbotvTVdR;R{J?8j*RRKUEm38ti55N?#mFZXaLGC*b?;n{%9f_s z!X3-}6|4ZWg@Tcavpt2Gtj=hS(zV7|6^CJFv@A-$+_c(Bu44hM=T3GlsYX8gelTW+;?b3{uEdWJfK1t_RSVM5hg zl!s`oQ|b{ViN@bt?iBUwpKk@@vBV<26-zEL_!U`&U+QIXl1Hi-9i%?wI5ekzd;P)q z+rOA09aZkm2albxg13n@ud`_}c^hoYY$i3(O|Oin*T*ZJ-XC{dn?9YO<2>{qVOX0dTOLIQ?uPANgc1iFQecuH<;vF5MtKa7ls_V)I0fB`mA-bz^< z%vPR_D`IxzF}3uZpTWk8)W0>qX$-t}r3u)j?^)+X#i3HpIZ~xOMwgXwU{+$96GXog z-9xy1a=|o6=VH}@Sp3$wPy`=dp$l&*!%&!HvFrD#aBh$bY$%;a`28C3TwmKJm1|1s zQTR$WkXm_Tpq7I>^GufC`I;G1IWGxU|Gaa&keAjffk%BU(1;pg?q!~+bar&yIBHr$ zv7Z&mRq2sMSfOfW=4_GV{5??-`VVSP;7VIHt;Mq*P9!AXB3saD6fRM=FSW$a|pNA*Ujxj&djqcsng8Ute6va1Jzfqeoyc1et)1K(6P zJx~$HGL_A|nvI-3^I(pN{izD^OtF@m=Gu19a5`Y*943s9vuBR9P)xCPk~u9$j2R2m z+9xjV%|=ujppDIk?Vt*g3}8zWBN*h{jY}7iQF~}aGA)y}ETp73w?dfzx^o3kAUXd0kV?>)fA zh&6n>R|eD~%YOzX9I48L*)gc7eG5Om7JMwqKABteau=M5g0BRn?9Ufo*F>OfBI9KR zjFTh%7#ucstqxCP8_yR_m~xf?$9rONd#Ri9F;L0%^XytnZrz-PuBXGR6vNkj0!9gC zl)KhESNKLku-^-{2LI_CBjp^$H=&vw{;n^m%8LH!-RmQF`sg@HVjU+RWJcPZRxcel zGz#k-TQP0^zi>fdOL27SbH-&=unWeNPF6cADk{GG{7J)w{Fu6R?*lDWOm*q`<(=&v zrx~qI_$;2TOl66A?95NT`ze*#a5JD=>d3>1hmyq3sjdqCD8m zh;vCsnU(WoeuVo(|#R zZ=Kj5lQqOpP=g567@I#Ijc=ulS_`%95*a0{!2UQn4ShjGLkZv7-o{5mK4obBgwH{4d_U+p@jRE#r4F?T`2qgtZDf(r~0NyA5749lK)xzEaEeCyOALDpZUhJK(h?v+$*(d)cNa-?OFitD2Zv#e zIYN|0P2lyh4{6(H4=h_H>|sV3$;t^tscVNT%2+c&ifPrk?r$X7=rHqlzehrIjNoo8 zUk6`>PSE%NF&W`2IOq);z&HYnlKk!g zON^OIUa!zSfQSwhC~%dzKV2z{f_mB7Fol#AL@4k%I87(lchz6=1|F`SBV5VUEJG8P zqes%nYD!99#MZUHP|p&4cj-X#s`O5iD6%Y?#Dqo&oe{dJuZ?D2!c{?>Oqxc{^-iV2|(4zaRVixPGCvGn&x@oOh;>>C&g*WqAV2YeLDhXL*TnF&=26P;DJBRlo_{r8Ty~KrP9{|+L^%lc0@jq& z(<_Rv$=MUVO6wQ5^R3<-FqeUDalrMuUiQQd=`47>zZQx6IORWK)K=^8ZnBiUFoVFv zmb{&?W?@TL5dFsRcjZw4Pa&DD+PP2(uOsyV=g;PR6NhEAD3f;nBp8>NRmns%TbInRg|35i&FoJzv?Uxp$hrx9{Iq7 zag^<(lA1|kPyBJoqo!SNGXkB^pcz7+D0Rnrdwa_!!9tWxg)EZPi}vuKKUYsk$%d?< zq2avtGY_!Rv8}DGBm-}$xRcwtXT-vC+UG6j1)1a1FLjbmZk%7)k9r`RQN(V_P3fX@ z*D;2U$_V=$euCPxpr8(43NSH>8CDt{`ml)eBZ%og7=QRMa&@${(BjFGq+GHc5?L56 z+^n#p^J$CigAy1=hft*Vdc~Jk?h}c^er114%z%osZtYrIM6YXw=$gBg9i`uZU2S(m z7U@|^HFyl{qN*{%l&-wAu%>{{9AdKMUtkIgNo-POF5;+x}bR4nwbP zrWIYNP}zuO!N^Q{;$V6xD1`icLcupdW7Ht4%yzcZovU15{L||>A8acEa^5CQ#0Q_LnZ`QV(7~&ly~6~bLWf&;EtZwcU51g zRTAP6G=;pFK7a=jKR#Hk`v0YNZ9n@(GMXN1Q-;CUY_xN#R*VN-6B7zz<%+_h9c`|) z5$+mxpvgDybsEv>fB*UOiiHKWbB(t1i)tIgR2ybErVUBPClG$6 z-$I2|eF6b71-Z{n;`0se)8CIz(IYt`B13G~K)#gE>euOZhS{&b1?t{3mF}(^zEWW( zj2{}!6OPK&qbii96fiNo?Mk?fV*9uzfstzjl}hrW_Vuu&==WG2)&G-Kq(I1S*!W%~cXfUIhjd9bM)=!J!(*Gzk>%gfJhG?>=bE{L z>P}5VLvkA%8}iQ+8py&kVx;!Ih$LVWIGMVSdU_^FY3<&Z5c}J+iI&{JKIroZ@sAO4 zzF1zXy)F~4`q!l!Cd5ukP7iW2F4Wk@O#<8{&Asn`hd;S4TkNFpF!C6BKWGZ`KRrJZ zj&)qI3sg7ruZC~ASK_O^3CLoHlq(w4T7vJdjt>5#G${l>86fxzhaEUeBc(CM@3<87 zi%%UBK{|eJ^V2@G#F^`-8`CAa=J^_9YA+=Zvx`q&(tPHtBXdAT$B?c1&r3F$1uIBy z{44Q&YCl0+DD|HWR-E)%WGZPT9BRw8)ea!@Q!cp*?+zyyh0sxoxB|}QraOFzA}DXq zmy~PcLW!-gAo+ooqid6Y*!|0Go3!drl6cQ}9Hd3cg&ICk^>&x3*#*MdQPOB!cuIaD z74nA&#vjCKe=NWIh=%oA9BCC(%kADoED-QUbip{E?mM4zI-mYkbCoU584+Tkv|O(S zwg7pamiyy2f57L2uBt9*8hwOPDsDyR%$n{`p0@O+OE@8dy6pzS5~F#X zS-mKw&&_iDN`RjSDq6|upJrrU=k+<;(7ib18!5n~?uimZcHNo2)M2XUoHpNuRBRa!ztSu9+ z=7n=Y`O~toG9C6Osv5xFwP>gG5P2KZe8p(u@sEC6-(7vXTwM{j_&?c&|bKQ?i8bCI{RRD-na01Q-&4#UL^^nu2CWc!6N^uPj!lm zMD%;5Os^YD+DN<ag*#@1528=^;jK19d_WJr?EC**wz7fQrC*)22TSpwqY{fmt zrfZUP%@&R$#`P4$W&xp#9D87BS(Azz@rMvg#0h~j3uiTc#QDw4 z`9#sLk9Yry-xf$gDHo|;2c&-c#xD0oEAG#r-o5(2;JQ~4pRP&EzsFr|9oCPP0dG5# z1M+u zXDKG0fT~({D5~1eRZRo-n9_O7Xryf|VZ--pxniC- z+dLm*bTF1+wVZKpr5{sS^8H>(*?bJTqN&`xSCw+L{FG@w*xugaJ1jqxZvQBGR>k8l zJy^Ybpa+da{9GmqwV!0C6h$Jm}8xuOaC_MGbG z=1kX>R&9NK1zA}HIW$KnCvqW2B2bR7OHpfUHt-Uk^>4gU@dHlhC0l^KQq$7Dq!s~r zZ|!15Z9Tod_1|5Ia0xQrweukK#(T- z{BQx(xytM6l3kWy{bqN-H8Or{wBY-z(w{%`fotwtzwt3JG0DX|7{OpLkVTEolkg?@ ztjMR4LjNX8%fuw!#t@iw|3M2XHii7!&*07LN+7&5bkhms`fx8e|5`P!btgHQAV26_ z$- zTU~wq?I!K>Z-zw49$D0WG(gE{4Da~VFLLr5mHk>`Xps!HYPv-YcDLFCE?30{d_xyjuOsVIuD5M z`RU|&6tEmw(jTQlWk98RK_S(^l7;5BaA?;H=IQg8o1C+m)6&v_?d7u{rwi+*)7RG@ z&g2V6KtiF5FkfzVer1>c2b~We0KXS|b0E=ff4ZXmb|U!G|%lR4$WJH93tHZ&- zla2uZbN}h+=<488CZk6NB8BPcX~-#Dc2w*y zm21bpcL0%$rgIt3cYc)K-riQv6HntZhSj)lDpC!s|4w4Sq7eK9;3)%mex2PIjnwml zXKY*?LMERTN^cbQ3$6i*GYvcv`u6>Ml8y&}VH!U;0uHr!pTL;p8&RqqpvrFXZ+|A9 zS|S}_0Y0BY1J0orN)TD~3kMFQQlgfYmKXn$EDFECA5;kB6>yYMBhDGwMAG0X5fur&OjVUN7$QNtlP>IUu z>k~INHUg*aQMcWLe_urBi*48GiwE12P zvJ}*WJO<2GeHbcHNde@bt^IP3n3xzKA*z8G-1v)T5e|+x89KbR_eJ%YX=#zE$w>@K z9#;!?ggDW+KnYV605GMnb756g0#LNM02m_kdsS;}G)=(&AO#ShJD_!*_eV`Hyzr9W zm3q3_O!0y77fed8qpLFC1C0lF*C%7kEuLZk4KCDLp_+xUf2c zHnQN)A#17V{b7BURIs>GBF#3C#Il_%Q5nt_!kiM^v<0ldiQUcV`b*eq;8=b+08B@;+D7=Sq{P?3tlrp$KeYxO?3Y5I6C!a3xKPZ{{-os|^> zpy62L{1JeL*H{hUpkR?fXS2`G&qY}RHNU(kYX0~flB)B=q$N4SG=NPiR2|qepoU}( z)a2UF|8Q^`)Id3^+mnI0YinzF_e5g)|C@Q=@;5&)6A)0b;^&RcL}|^q!3so9kVixx z3o`!EC}&1)S^IhvWhSsP;87*tzQw*II{>0ZtrVgSxuM4-;RKlj5e=0n1lrTnbAyy} zlcb|#Y^-Ku!}RjV&ZmP;R#w)+ii((x4NKdx{1NGgUTMhgI6VMc0Gp|)sWrYQrZ06- z8^hrO=>kmdX6VPqxsThxWOl0BjyLLtxUB%g!9`Qmx5(4Wo87^+yj1n&OX!OYJKG$% zc>8?$b~sPsCAg`v86tUCZTfjO8;E&4_ewL)Gddq4W$3y9&UxXP3=^dg}3T;|`dC1ru}#iwUN!LBY)I z_oFDp_r&PE89Z1x#b5iWKeI&8;h{kQV+d5g0Ix&Bt>YgMB(0nnwE4J5t^=$wwl$c- z#>xthVabPIj7bmhVgY=z1aq+hC|FQPsNZcGP)Rlpj^2}Nh6s4$oarW@RGYgK#XpQ1 zW22%_fM$Tx`^OjA4$uU0(%AYjUv`Bey_BR=Gcu++KYmpFOws=*jl+LC?LEL(GITNk zY10N@;sXKK$d8okyU5EtZ?M@-^%{h2N$cJ<zT8aHg6@X-SpBv0Xl4#?;i#1 z;?MpieIvCDSR?n$U7x3>Z`F~*wP~Rkd(o|FxFtls@%~?(i}*77VlG&n7?J^X@cw%E zkA2ul6RA`@Hf>`iia{x%1TckwKLr?!RN<3coIY4U`DCL*<=#XwD!_R*WBIQSS3BCk zo%zGp6%Qht!5B@ZOQ={4@N<;@`I=YnCrT_zqogOac|K_(d5OR&5H7&+Vqd8}V_Y|= zXMUTyh%8n7%_=*nbl@33a!?x%EaxAhMmJSLIKCAI8j096vIjM?T@zrTT#GaFB2cR= z(2^@O1xg~r2Z@U?re=M55%kP&jFmq3%F{p5I+1T!kS;5rANgg1QlL)0p@?8$qXn`B z{~8!kYE{9(@DmxaLILnq34$i#BC;ZqbQ(khdF9BHdRu6wOOe{)>h9WW4|bLLHwB@o z7$insD6pWEYgY_WD7LlN+nl4)t%5y)=jA9Rm$GwpSe(NaMp4T8Z~Psp*`4xmE}|T_ zI5?e^_deO2-{&CTZD7&*Gn&zd9{swV;CDh64 zL2@6Ia2two#;tJ}r_aYkQ^OE?j8(tFJU6KpQb2~y#E(bSxI9!__# zC?iVaf?VUyJlFW0S4rq+KcUU+68`&bhcW)DVuQ#RB{Z%m>?9JoU%1cDhu-!0#z{QW z&N#&l%ls|DjXxE)^cZ$=TS!7bC4ZltL4?9x&3+D|$P`Sz65CO9jbIoZ`3n9w(As1=*)7eF7<1Snrf8B-LmIX%>ah#f3uCY-{;0XM=3mHW;jH4$R zlOc>dyC$j;khmhtg|pLnCFoE^rQ6&Wj}&MpO+35!jU-2|rVxQ^9l@S!YkQi5^+l(# zUq~3XtkxnaA;ih1Bibx^{~oT79!K3x)c7kY8n6^k z7jE|Q(+lvl38*&@)ZZ@V`Ct91DeUCpHLngMb@%rnU85U=F_(k8@)=JrkWE7J2^C3Q zlZ4%d&~i%eTYZX=M8(|2ri2silorDl@WYeR>AqIH^v>EzuN%V`X15v;$+FKpxgjl( zi=`B&iEi(xeoOK%>f&b$fg7Zgp>XEvx#mWVN9w^e{6Ph6m7hcP2Ue18MD|d(IjZvH zDID{+su(DNR_<|7O5|mPcu~64+UZYq!!@FGmP~Sa$PL&0qpz4UNz&94l>^w;L8Xga zY5tM#{@7@uin$IyY z2;jPZ+t9lek+L)2?H-vwjch!`JPcZZ-pq~#Hpa^F9cDEn!?Caz86Tl)AZwO2FLB|O zctvib7M4u`KG`@wWTp#fMWXC10d8JoK!3B%=F%$`6i$K{q3XH0$0ATX}_nX^geDND=xcU88 zi^b^bUB5rcZW#R4kh!fM|9E<)R)snKDOOFm02IKo0LA}c*)qPsE}HJybIPK2t*lQ= zzP-T?YZ=5lnKYb`84qJJ%r?S4aR5ZRgS7#OR04sw0sfZ*V4e!a-L8OwUV?%*EqmEV zmP#I_HV}6`o!#?8B>=dH)7@DPz^Z&vfI*7Z5hE2wraKwOtunQ1A9a1^_?_J5d0DYlhI*F$mNkZlvSH4;OBb=#TP0 zzjp|ZGcb867q*BXhTUXN~Qe)@Oc ja3574>JU`9P?a0BPm1q#E+>=*3;|M6(3G!|GY|WJ$ttr% diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png index 124e2a0fab56a5640c78e4f09493e3b8d3f4aad6..c5135d52001267958d4e8dfad8d44b74f7cf84a7 100644 GIT binary patch delta 9227 zcmZ{KWmHse^e!L_HFOT$NW&1)Dbn2%f^>I-hwhRX8l**PNNMTrlK#=DFbYbFcl`g? z{cu0rwa!}ek8w3zfPf+AhOZaI+Q}9RUqoOP*`W5uBlZeA$Vomdrd!Q z-|Jf(-)z5GSiUIbxsXvuG77UXU2!s5c{RTN!nDa&WfPT9)?iD5-i-`f2OV1*K*vhI zEgWQ4UNEwpE?bAJV$?qAW`GxvvZYVBO&h$AsL|aqKW5tat4DFj2_L95n(W3tb#uaiCDm zSt0UI;0~k#oY*uEflF; z`A9NF*)#i*y31KH7{}vB&!YY6NO=(!#VD%l+$3n{E#`v8|AJ?2J=e;2pv;i-V8?v} z^^xipKTotL-lhfH3aO19q5OxX5TD~eY6olzU4wF)BRs2*)+(92U25USNJX zv)zmSiHuvT-R0cJIPE8#a={^VsQSP+N}xX8+l=blO9jEwRIp5}X66x#LimMR4?Q%1 z$Ikot+j-YG3Gv?@q}PLI<$Kni**t~#&CsTs0x_0wl4~OSjR1gk#?uyF_MX)khO3>( zHu%LB3yR+ENZoB>-}rf^a(QCb_zxMSYkJM<(sy{rhHV0K@L#@InjI7>bPEu15hhpH zXzKh(a(~kp!b%A8u0V1OAzL_1t&>mSV*S!h*|PF9<)D!_7H^9ePl3dqAatlB*7Ie7 z^|obiqxuQ!;4F}i3F*~yZsH=}Q(f&VL)4yWr$31ady3a;wnq~l`;(o0luZiUqiF^? zSG&LZ5GBtoo3TqV9tqZ3G5$sq22QL96V2D7+rVX>DSjq{Hq*b#IwN3@j0IbH3qRN$ zOe8m+UNn7VSvH+$`+x;Atd>|Lo zbluVx?N9vGyjynl9mz3nAANWfJD#CmA>H>$i2kA1ET%p=L|UF6VtCw1h}vTR zem53iei<{YE8^*P;kBA0<9Q)Va-5$j<_SCOxm1b)o`uA8kIlU`nmY1YJ*jAK{IJt3 zou*juz9hbxOR9w8Zeo82sjCH7juVzxq9X8wAexiDAtI2AxU~WvBBVZRLmhRC zRwnO;?ud};D?^CwO(?(FgbLQ{=EzT>0KI4-$suF#bsPJoqkuX^Copx*7qmUIq9yAB z4Wtc;eOhMO&TV*Vla?or`gne&R*dq$(sz&NY}%6;#}Ga6erKKh&y&bNaKy9C2zzGN zA%#@#3Sa{XI9VAIOmXnQCy zO?oehS{de3z;}1dcX}nJCqXdUR+0+-OARmd{O2OeO2;Qkd(@#05{-hca4;qJ`Ezrp zGMibBM6l7kQcR=SD7CC)BDf(*0Ll$(iuYEl8q9l)zxsUgY2E+1m4WL#US*96(eu1H zo7-b#xOkp&c8%Ew-vTOVhBAA#6RDzq$utV=IZ!>xr!9lfYT^mE!8DcPk0lvf&o-S1_E&Vp zf3PtYFtkdSWpPgO)_gY;9G-b(tp05pDr|;@HK+Ux1Y}zH98u{KX zipU}J?u=DatFh6P;c?pe)T4K_WzJTSc?H5VUr^D<*M z8C&)LrqSB!_c>7^&&u`;(M4UV+V;`@>)@cuJa88F9-|OMS|J)d`3mPx*l{_lX&223 zFm%NuoPFlQqw{PoA0O*^xlcfEWJtAT8R#ybPoqM<;N z+ZQ{SXfq$Ji0$P-&hb1iSMeuW?MlZHU$hwq1V5NGcwNnagKT=0Ok?L%|{ zA0?vWjV+h?udm2PVJ8G}v&MqD2x2^(yZ9;9;XqP|FzoWqNRBJp70U7{JTCxwl4EMw z*Hj>`^$WI{uA(n8c344E2mqy+jQ}c1)3{33+VL7`R&|)D{lid)2(b4^iy-JDYVQ(y zp53p0owIz^G2?<#{mweZt>T%?5$pV);z~NHkq$|jy%6j|m3FQQtHXeBluw|0f@dBW z1=Y|sqGrc&ron`ck=}@zC!lMYjiP3%S70VHws6D2%Ii9Y8z&8|J_^t8-Z};qVwfcS zWP_3tHrPsT|4GB}K}{dSpf$RHoe!JA4d>~um%m}ug*dRBwn-u(T}~pIEUP*KV(R|V z^_|z7oG1<)sIeSR4kim;xb|ILz5z3tX(tVvL;{Q|LvWexho_l>3}C@Jr`MAn)5nEq z#emcj>OHr#{ygbj2T{i$@Ru;d&hI8`6g71A+W0hgWW4A>6&(RKjEiWp&F)Y%IvrDj~`gC=hx_a@y zH5fP+HJAspg@qC&0%=hiTlj)B@vL(3wFY*Q!}o642H2m8rAMn1oZy*^0Ug^%$bqs~ zKHAx?rZ>UN^bo_egtB|(V0b&FKX9C5I1dJeR-W)F?l>3#g2-PXeH-(CNs1LY0dy%G6Ch>REOgq)djV%) ztsaj-^SK4gUZ8|-e~OxITKq`OZ5l4HuF;>blc+$H82IkitjH(#+crcxG9G+|sl07C zU?2Fg7EJ!!VHql)om@~Sl6$sVtJ+?h96U7>5Oq+v>+SRf0hv1vu#j=#{>Y67zVGLb8B?KXd;S_I*ew#cg} zcmORcdp51ZNl7*urF>O(r5bDx(X*~?{qt0=ZOC{8CgVn8;0#o;UvGxj>=HI8xx#)S z5B19}hUo{NT_DzSv%2eQqGsPOwL_67dwjJ!4f^@niRY+_^?Z+aGMzVhO-%S&KS&De z4R$eewWl*&R;~sHMdw*&yEM#KpIrrzdq%BF`_z>3HxwMsUGE{`i~k8OPCGfYogAl8 z!l}7@)Y|;Bn)gK63Vr$nnKZ$QNdYpWB805KusViK-@J%WU-DRIo+FU26L#vjo1td1 z#Ne@kOrQkOpuLI4Jtgi$y`F@gtyleojgop3w1lMHd%;9O7a88Pp8){B^7e{Dv%!G9 zn}$QAEtf;I+bW3fEA_YJ*WBNJ7}NWkEbS9bPgJ9-d$MTxsfr}eBOEtGQuayzgmQw; ztNLg>6%c+ydjZMAwMqEJ{b~CAYEB>i<-jx)uUMC}QX^kJlzU{&`F>t`kdg{skQ*3aH)P9QejqooJPzW(6p7o)V~3NPhB)nsvGF)_t|B$DwFoki-7j z-S%(4!t)AF5Uw3v?xzNR9Tew%{2F39VO^_-3K*p1>#RdFI{i9`J__u%22xSDrt%W~ zEQmD5G@?)^{~1vt2FLh)`(XMz+ief~TgiQP_es_e>E1gcfUe+0Ht=`)GQo}axpkz< zb>v5XGF)A{MJQcxnTRW_KgKP#VRPpCcVdL@_KqJ%$=7*h%7|2#{x!}FWE1|b-5ydRtWc;Q@bm}bFi9G|JtdfD$c-@i-bE!6(6zFsTsQnZ*m$q` z^HhE<^wLt9^8zYUGu1^iP^Fu2e^2=);G%hH^lgDyFg}Nr`XcwmVEGidG7NKpPRmb} zTPx^gh5YjXW~WAWC&B6Wk89t-8C%lc9M|2G;?;2A5tFrfhJuo>*3wFKA#(y=F=_jz zaJW}I(QvZ83ReDkYJ>P&$~sNLs()snmY0%DNM7amqL$S70&Ak9v-9!KtQ*2oq3`x< zl zP<9@#aBFKHg-Y3YNRjSMi{~r8)2!~_9kZ zBIw84*iWo;^n2x69}VV>)xcMDF)MMrVpr#1w4P=B`mpi(gVW#OMVhVm?>eOh zjohoSIfgegM<;)Yd?_GhD<`dk?PTR_b+rxus7(=m60^5w`Fm%WC+67Ta6bM!E0DUI zs`)PV)S#QcE+JGWF{Kv9i3Jp2Ez-Sl(72M3QU5W#;h6XMCt9)uDF3_o;NPd0pop6v zcyy}ub|a`ulMy|;!K|XWriKzU89317*pDurNmJiyoHpUX!_rPCl5?R>^|MNPZ! z(dWMvb}b+Amr}z#la_9(KkwRvkp2Gg(|n&U;tz*G%R0z;p9AUocffy^S4J-umy}&s z(u)0ZGGHOS!h<)JhD3ZG{TuQPFS@3>Y||=8KJbNrtp5#mbqvOe!FLmcKDiNwY91TJ zHo6?!k{)3diR1!TPp3IC{m549Nkg&7ZQi9T0>X8>-;EoF@%9usFAz?tbqqarr2fhJ ziRY>P_}u?EDhe)ydbH zQXjmJ8lC=4-R*tI2CN3h-Eb4KmLl`X7A}jN+318Y{$(AEo7jkbp1%~P{obw+Czft= z=O)Qh;K$3@!3MVI06rHF9vk>v=90>v2s(u{5p>21eo`CNOhKH?9-o0z&J5(@)-ZA% zF{-ln6`L8g*+RkJF-4mYef%)9C>wv22&^oE=18rDBx& z^2Z&{hmpVQFK$j)&V7`K(-Wr6@n5(^(yL=%0d86G+MNr+j#x*PEYzJ_I$N?#0kZUK z$Qis566{14>s+^ePNgd6;CfB^w_0it_%c8Esob<__6>~3I87dlLotiH8-rT8U##>U zR~E5&f5%G0*s7`hk4Y6qURJXOG$?3lLYeN|3%NwkTakT{5m}NF$P!sk)En4zqHs9{ ze15KdJWDw*&R!{FmC0igH56<*%?a1{<1ubCV>}Uf^}8R$$Wm(=oDGUgi>Nc_ebbZm z`@B~^M>REZW?b2jMd>ryq#-5=}oSyLGCiT1CJ z7(#PqmnK=xb1m#Cjq`3Q*(E*66L*$IfcHXIN}lIb3b3p2epeLshbRLmcs9@8EEQraX;d6NH2b7+quL!KpRkK&9YylB}Khy42Fr-N2sq+@DFq))9HV+Co9 z6=CuU5l%FUL)`G{^<$M-Pblqwg$AS4t)RlEP^u{xG^r~obF=`CNoix?d;GdGfI9ox z&H)j#8SQIKd~)6QB#ujRYrM(I;@esFYGAM2BG+E1Jd=q$@kht(yFAuJ@`aUcO;b|| zLHo_wh&zIGbvCh(Z|D!(n}fX>$HpFA`K&6bx%Es;zcjf9{`x7SRynErjeOhY{O_$3 ze`J=z%ai48@qBze#N7&*z~(?Z7*M6)Mx{a2Q04_o!hQ$znD~_V6uY*F-&H#P{3fV% zHJ5NmBegAWWJFQv$W$?uk)C^_bv&PZZqnt1am;6aG}gHP__PE$Xr)#^Q-$(;pFcTk zILv~NZ?uwsXN`bGn8N2f$I*I1uQWDxGQLAZhRi=*v3x8c)pz@rw6==V2Kb6E-8~pk z%ci1M)l4Hh_=B42_?ZD$u2eAjm!~ZN?(>6*T!gRhO44n+b9g+XYPH#41~;Dq?l>3( z<1?9R8csY(8NEZ4E9lLPAT;uIJV?A?L1ip#jW^ z6g)5Q3a>Dar-x1V=aK$rD?1idt^VTW`yLDV%;!->>5FUX-fQ0EKq=?cw3VEAW(@PW zRf3Qs)j?B*>F3ONEHQ0EE}AkzQSger_q?$+j2UlUoTMN7sm-?2;4Q&)o8TSs6>8*-!L!mu z!M}40MnB0d-~svcp*j0J>|(&~-bYH;DJpQ&SJ>Qg9rBL&biiR}!*Zo7t|Gqtekm}4 z6PxWFK6dzdgVGOxJz9k_!m0XSzlJACh$z!0U-s%Iq-b$MsQ46}W&S`p~5oDeac#Z%3a$xtnxh6G*FFzTpIo(u*ESsrt@ z{-jPmHUGUVW949NwwpQFO{QM$v8Sj1uPxd`RFXRq8+E*hZhN!2IB7rArBtbHq_F?q znSmL|YL;iruPP3Tz|H0r3|`?rnko|hwxWg=X+5gt(S3OEF$Z@dqZbz2^H!S?f~nZISBT)tUtu3yqW>RR&`vN367o_ zi$H?451aEmfgEZa+QL>VE^BC*DUE@{I8@ZsF~u-`aKTNz-qm@byF1FFAG)G^e-FZXM&d$EfFb2 zxQwFabyc`2nF((Es4VLJ1XcPv%v|4%+A?+3i?lDL zyk-Z*DfDb&WtBT6B`slw8MDSIIhxdd`vP{Cf;^UpbVu~~)e&Ldrm_&Z;+Des zp(sAE-k2!(L-S=jVsGp%I5~@ZUVPm-1D0Q|zbRu)l`3=34|815rlXqAhlAk?DJxMVO|}BIf;D^3>_cN0IF9~1BrBX{l2*vDGOcp7byvOaBj%Ja#)F+kYaG{G)rb!cdEZu5S%x&?P zlhytvT|s0UZIUCAS4VG63@wB>qCS+BMauMaCaSaP2^cH-t73%{M!aO|KkvHnI9T;u zk!(qrPL-Z|4D`m1l~=Ct`aKIog-JaSc>P#7OwXyAvv?~95}dF3{Jdl`ae{pzH5B93 z`PrG>*YhqhpIcfOugO#;-nmIPJl?^a_IB-0pGyp3NWeau#G7F2)m>qFjLFx_W7`W) z-C3XeNwv>8dV{#8>pxEK#wl(--{RyUQ4F8o`+@#IK(|-OJenir%*JH|a9gjXvrgrS zMJkuK`LD0nfAzoW$D}8pHtSC>awg_Am7ry^uoB$Fb?UzkGEe`~UTCMVX=^`KSuw)I z%GtudKrC;G6Mo)l)*cX#OTqVJROY+oeM|LJs3ktZRIY~P`<>Po+uRcmYS(6SwklG= zH5`Xl1lD<$ypbH1eN0U803D(ELRt2C%lXMBlKTXG}*_=Qq_efd9zr!U-La5W}V+BOFk9P-n))g*f zk#4(n`JeC3huJR`y<)e*Xp+$)>p@;EA^qb>Gz0k;Nc43*rZHYtaoEW6!z(1Ryz6@N@c!fvyA*qruQCNS|MwNFjL&NdArrz;loiUc3z@0B>YU4!Mkz_axF?be< z>)qyzGfldDkP-7XzfUto3L#37FCQ%iCO$R3k+dyo?p{B&`A3zJG3_# zy`ZUS-|q0X#}20+v$=R2&y-Ir+J_mtB7ix8GvEO226tmUmdC8$kgynU3$!$%;c>ZYCr|(=?oeFX_|3IP-LSJjJ{Q>@_a`)H!M^)gCtD&IQ-?hd{N-6U@GM|Z z!02#yW|TnxPqzsc8L zudcnx>KYxY-9cIrj#KEp5o|Mo9Vrcj$B0agm<PimkBr)NhA6YUB%ga4!0vIgZ0LV};|p#}O|apppYp=~j%Kj==p` zs9GZ}rjVy}0x10Zfm{J*$ljwz1hKscM0({A-ndc0C^QQEgL*ZGER_kAN+fZF7?$U+h84%AjD-J%qDGt^eqra4~FZL&mJN< zHeMVOfk^4S5dN<}P(6zpMAjg!Vipp;ae@qkhfg_HMK%EdwnmJMFVqY-+RE|a1j40l zLdmU-jt>1sP7s8$>Dm9Wa-!$&wTs3(1IF9(*=dVK}mzjd}uL%`*ntKZ&0*eY=dPbCK z<^!KFu=U=BHwom!Qx${J`1<^fw|CfFK2#yovH#A@QXXmOs zza5sV?0k&htJl^emf=X6J#Ar#|KJbcu=gk)NO&C0DK!$cge?%;b>y z7BqFFU8iVNL=tleFb!(PuH|-*A<*-{Ky)eIGgwyt+>Elb8IrG1>k-K#+$0FemENO4 zbY8M)X3)Lw3hBxQlSo4A1ofB8>+Nj|L`{)4lknLsyvLTThi9#A&_1x?S<%t>8n?ziXLaYsVvO~;|)H_ zs%G2Ll57}{S^0iz&&;|#u+4*v(bW_~jO literal 17559 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 z�D|U1Su(w!@t9M#fe3b5FQVRTh}|#Tv|PJnF{;-W9wK1p4$fm5F&U7*fab zC@2G~SxN`C3C4`NhGLQRJ4>^0cuke$;B!^N?dBUeU3XL(Y-fLh%Mw0W?%Fc*%<6IQ zF{Ex0T~ucjiPoD<;(jX3nVI_PX}S6@*&mPc`Z8F*hK_(z&Qd?55UtA^&**rCO4%9- zN#m!tOdkFbu~w{g9m7WomM6dBXwrlvhp(1BVmW4;YlD9$Cr=k#Mo&SwbUay+C@CpP zca1Van6SkbN!oC4e^pd)-$^~~L>>m#QtNg3sid?t!$%a{Cf+MJCklSzAy7Xs&}Xtg zK(7V`f>_0=Uqvf>qJp_V{C72xRAB2x*{D;1=4(U|yW#(sG9)B=Dp-P~4;A<5zFnXY z)?J_6%;NNDolEGegtl($@VPPuPr2@Dw>V1+TJy6Omi@{Sb6P_H*x(&w21^gEKl?2G zx^2R=FxAz&*QR+n%g5U%tKF*Ob@g%9d3@m_UosJm&lN&L41AfBwh7S&QD;|aN3)Wd zS$`No4oen3mbxHj)Y4%}I@-N+sa-a86rbpF`ohzbtkf2Kji$)5fT+D>w{5!hhMB92 zW}&L${noDr%g|4Ly@neh!I2*%aE#eBC13tq(L1w{47W(&Cod<-Q#z^_DdS_AB6hoI zOz6j}-%?7LWHf@3n4?HrmG~Vp41KWHEQa3uYSuV*i(8N|IeBoCA4Q^ zUoxGYmjMZp;MTN+n1tn~j``y^Uc{H1qzoo+qb0I))~4oqX=M=q5<}^DhK*cPw`Pta zu?Xtv#R}Bu;~K{$$CMN-LVu9Ih;&y(XO>HM(YK{pV7ynC47`6t3Sr_k>A6xwI&n&F zmD!)RS>*i-h1U7MHQG7oq?yFxN91Yd?EG|hkdv9;+&Z_F$SAOp!1J!F1{xHfljq>U zv4ZlQ4?#ZY#b<*Q+8HJJ+&ov5FZ71yEl?X<&#$d4H;)ZOF9Wqj;7X+O)t0ByFi89V zoFwIJh;~Q_Ew)^|@|TCd@-i66Q|a3A-}09|QRPc*a)_Sa#dEFaHS~80ZMC<_`gD6o zx?^qKuC{)n_FCdAmB4CTSwDa3=l5}iRI~`1G7Ij%V>gO29aGUFC*qjZl4x)#Y?Sie zB`#P(-QO4?F$HN4zv>Hd{`en>JSMAs{=gIm>nqPr2bEZ8QzzmKBfQbb#7#jL^aB+1w){BD(HRmCMQ3A;}2PyU$WCaZB1JX+>QQxn`Wa z<>p-=;c4PGi7nE1hpMV!Ueud}BbL^h$Pt!ZcV#pm4Zi*{hk5wlrHz-Kqv5-A@$$UV z{Ax9EZQ3Ql;t>$YuVg1fO_VAm+FWn7zsC6!6}=_xPNwfvvnouLH{WYZ7vWGlH(J>< z$`t&(X8iBcIE~+d@_NxdyVTuUNzCpfXZ>SToh}or_7H}5b9kSER#@_{wHrH3Vp94L zj3e}*Qo2z(|5{w55l!3EmX)DtN9DGhB20&^Pk!1f$(}jy&rLF65}iWLN572V{yVeD zDpR|tQ~M~7256!GD&0?lnHxb}&i1=XHYA=*KQ&)G@S3g`ItT$(hPK^KaM{R2)a}cb` z!=(#q#__A|J)dFyhBho4EjRDOo}v3Uy?sF z=`7HRAQVYa%D*$(=+u4;Byu6B+-T98{mt@~6(K*UYPxiGo!~!INukX^J4x}0N$ZQ~ zT}g3x>4q&BQV(ZkhG(^iEIm1c8EMQAgSnt#J?}WXsG*8E@!+4TL^#UcIrf ziY9w;oJ;Z|@jr}aYpIES#E|IyU9OcmR$*m^2A-h6NOejYy{@S|yy7|OFE8Gf+2Yu3 zV5mFkG2#6itM|954-3=8%0`KDH^&iruZVbZ|7bf~gJ|WmtHw_stQiebAvYLF83`R+QpXxuYU1jh{3dp3z zBgB1|tLrUVbsH>*kze3NTPeuB?Xb-_gq5aVyCO`$9~lfb){v71Z#nEC#!M<$@HIWy zr4(^~E@GAWEJw-sC>cqupa17(sdz>jlYp*dCxqb|)F1-ULCeR=b4hRXCM4dqS2*{- zJ^4{q1f8UPOMR6tUraA?GQ~xWo2lIik>$!wsu)LdBaRH3O~1knWRrL7RMBaA#pH(Y zmX*JZhkAnzIjM49hRy0WP10Lm9an?=id3$pPaz4L@YIA6-;Qxx^vOqILEdKgEB{je zgtFN1Y^~*O54)d)uC6Y3EEU2Vlq2m~gQx)qX_2t1gkEA77nkO(bQ=NpBl6eES+=(} zulJe8&1h21GVqzk%M7XWr7$m?5hj9=Txuz{%!TUIt48)MYAmQ`4#ruotzq|w^c-XF z*ecm&n_vP(`;~MIpc5u#UM;Mdn5>3w11^5DBnxdwsB{i!_d;H z_Ueoa(}%h&crkCv-u`JQjr%#wjf&p008U-G1tz61FaI`zhQyj|*fpY)H%Xj_u+Q*3#_6dT3PHd5mc;niuC_E99S&oCtqmGTp*&IYOTHF z!TNGFE6_GluB4=-ahEs^V)br2>Zr=NZe#?V;Otl}jHWBSqqb|K_gTUNKSR*- zOJ{#U%>al$n5})i`m-hOz9AJ_P8GgYr$Xz+L%MVPuAPwQwu2>V*+Sn6K|KiR8UeGx zi?-72%>ggLBRS1onu6VY4Fa-H-mLg{xqIVyYny6Z=^AReyWM2rBvaxA$8Jp5!?`4- z3_ho;gISAgg@UyVNk?Q|;dg9A47o;-6syKPk2 zcnyu*^L2Wkj-4I5 za$3R7&8^Ph!xH>0ibc2qEZmlG4{53ExWY?mJ!b`Yvk6dyhPJls^ntu)lEag4LN<|j zvkIUj+mdXZ7uZb#rhP3Z@CP^O=S}RBdn7A|>!S;@Y1kN-BP*|sDor$_e-W0q<}2VI zj2ygY{YqJwc(B--^73H?`C?}rxaZBQIXgPEfB2?n-}^tJ7;WteYVAN8!iN@ZSd6u` z`;uAp^GFDbq0E`*!Hw`%d?b8$6bZr_*OT&;2P#=jeJIv4n=Cp&fs3JURXQnmtF)P9-W=IxUc!d=jiPX6&m70z z7FGS{l+Q}C@vcTqG27lI%46#KjJDO+S_YL1GAm7>N7Xz-+L7Hq;eU@)!?Qr=e1kk2 zoul<2<`8=*>bRB+c~_TN_C77~tH_ipI_!;+m$mk{GTd}*CG?K5gA^=wZ&v5Jm3=Dg zwvTHGQ1?FrnkMK^O^F%<9iRuA;2PY1i%I<40D8p7T+$(XJrm1S~Y%Nt(?g_Hq80;0pg}Jq~fX z-Z%7N<|t${)D+32d}K-)q`96xA9({s6Wt2%CWbelsAcp zPt_=d+%}4fvhv)Imwuf5L|3&>#L$tq5kw2pH{)|BYyO*mTdqEgR1_fFJ8UvFlqL|} z-S_g#5HMoWppjMAUGJl2bZEJ@oY}kH@o}wBJrf7tEYL|%BC=>y@SaqB$`Kacw%CrQC^Kp!9juvY_w}yzT5#&4c(~~k z11uUqMhoaZ%7o=}d1W|)l|McOfy=6D8 zSwuaNH5@L|IU-vOhA`f4Bq)2F4ZI%LQ`gmmabaZgVe+=IU#3E>C61##YjCJy3sHZd5k}Efb6HznU6ofQvRD)CYH2* zfU3zylfU_?t}G($_MY$c;P0w#hfjkq;+Ot(D{*CT%J5|dn}y+-8ObKpO1CkJxFNLC z|COpyk#_>kWQ!oEW7}#Z0duN|H(&I66;QK<%~ap?8$7nH@v(^BCeyfNpUEpnDM1a? zVb0>zV^q%98~OQ!DTPt^P3W+);XwW~Is(qLlInq|;xGTAnCtdnLP~Oe397p5UG$~( z8X6ia(qnSzt|_w^@kXJfx~@d@m{tuXkkUi15}}55W50{HM@@%(&lvm5)Akpc)`@;1 zWtdF>v#0IS50V^RD~1GP>%38q05_*4>)?-$8SAU86Lb&2evkCHCeC7gBP8e@jfMaD zVX=(7_)A>QuH#dMIjX0w%M z>f}Oc4VAAvvV?(^dX&*9Jr)!6!7CIKc`E4bww`(DH%5w4e|HK{9X5Zquv~ARv7#0i zH>krRVu%Vh`n)SpWw5Y4=2yFh`xAd=%92Q_77`TI4Zn`g4r2O+YN!4+as)F`(gbaw zxQ6SQ&gO7C&>>{i!}o2~c@R;WFq^Bh_PH!IHt&ff7|Iswm{ky5Cu2+q{VE0v$?#2A zQm@2MLq3V!-26|2JRw~$_cp4JTDz5`a^O$#{7(e?3zODS#A!clt8t$pX;0w8Rdzzw6+W$Q zhaMN>vT0oAXl>rt7PB?xs`knDG_d(9qeHiZ;d!JAZ6xe4pNA!)jsM0pLJQI1Q%y1$ z*#%Ncq(2#2cb>5f*VuN=Mvc=Mm8huJ-uHS`KfaIkea~?;&yT2Xwn1=zD}_BBO=8`f zffIOl=QUMfr~q)&?MXLwadENr;Fj$b#mD^*sP0hNpDl2BQ#W$A^hBb2RxQ1=CyDBx38BoQ0pIVwxTi)%le7NZh1kvq$`dsIuox?i*$vc5geTkgcWIFgC$U*Gv>u zY&3ySR-$LtQ{KFmL$1b-z7pk$SFh*HEZl2Mtm&JzcXfPvrD|FVojY9j3Iaa=$qS=u zo<3E@S^xUs-GhZj}eKa zFiLT0W{+$VK6_g-1tVt}FZkL(+E!m!+7TyxxF1)&|>3YQi!5JwIDANhj7d5t+Z&n`#UH_`fEo^jXQuesT5GWyGpsM_&_!8yV ztPrP%=aBMxhN9hAxJoYr*^@Vj-S46-05W&D<>-<@{iz9GsZE78rGN=$hcPOmQjnA5 zUu!w)48X5eWo~`z#cemXnBx7_VSeBK-kyNZ4F>?bd3ALckyjQeYFxijOyc6+`=kii z&TwoEr3G21gF?M-ia1mPQ*0pW1e{TRvjPhd>bzq*#_+@WXo?p80%R7CBj+bUd z$#rq&HeOAhyw4P{HxKt6|AZ(6U00qz^qgoXrXPEh6eIpVw_b%W#@+$~40EuiiiJ77 zvBCG=&F|?vyB2W%7EvX?DqzITS_+r%FCN#t!)GRg*5>J-D9h^?drp4rx>O+`h_$?b zd*kp5XJxwMi5G0=n{0`TIi+U)US_1D6b*q~J%wKd#mGaU_RrMjta zZ(KqH1EDpwwZ-4RzhY*NqIw%@l1>jI84x3e|F>`CE$+wfN3%o*Mn{X<+q2-2u^iWa zMOgVdJ3BXB&DrdZ=Oah2J6`Olf|MUQy>C92BY{E2hY{2F7BuDP=;*-cgkgJ5US42J zi(oL0>+YYBtHb&A>-&r!Sr)fvn=A%RvHKOR(Ym!3&%KQ-pEEfu3c=vM^$5SPg9F=& z)+52+zkfd~26Uk>j+e993|nwe5CmLzaEjh%eo{P{Af4c0WMs?*`5A>u!0$l-5ZmL$ zU;d}@@6l%T{+mEo9E~hW2&wu|RAeLrBO?_%drV0Q(=#*x{JX0B>ZRB2d?P!kf@N)# zK-KPAe@K}1)PqbMZb8ZNG;Oa-$gEvqcDmN{@0}~`edh0UUK@|Kh}Xmd zj<3$QN4L`~v#9XVq_w*lSy?y1FQ&lA{v&@A55^S!lxnlf#86^(f=cI?*yDuQb4_#9 zyiNJ^bo?)CBva^PI(@Ra)6N)GmiN({CGTUA$jHbWz+es5Sx;CkxBI%P_5biZ|Ni~^ z3bNP@+?zLVP^fOE8ryrGS++lg3eD#uLIVQ>tIgY4>%;uZv_e7|Uv9#_nEXy;EYqzG zoi_d=a<_<0DclcgOmJPUcBRp?yI>G=_`|^?aky+LhGJ3tez-j+;jzMb9(>d8xFZNP zJvnsvl5x7;mynVYW;ahR;+2?U`OFQ(?2?DIaQ`Rl*$0_4aPqp?2}q0wBV$i@(;a6;VviB&>7>ttED6e@a{rzlPd$W#C8>Zp^i}#@ zGC!*Ww26AP+s_C<#}y*}`7`fv+co8vo9>tCW-uN-i{_U^v^b6UR?$uC6Gh6;yaIV& z?)UHEKYvPovaxwqAy|4L0KjJE=A8Bm0(Y1DvLGA)+shL1{sRh5i{bQ;zID?Hm=b7W zIf1mz<@ex0-nR;<5OPtU)DU!{vpJheRZYzvCH}=<&#)2rb~7-~XAJm^_uHC1m{zzOt41O46t21_)t@mdA{}Duj{K}FJU&*6=jC4$zYOE z#mFeyI(2`Z}v6WvPrnuT4N3-C2y$IU=Anqdh0mE~?yRZgo zR0Ou@vNiM^WDXXZ6O8}eO@q6qgTP7Yx$%NtIco^4i;;x|AqV6hpv~3+Y#ZPi8yg!d z*Y~q6pP2`fS>M_yaS+=!1iDWke?k58SxS)zmDR>L4k_BBwqL~$^ga@kl2kP`q&oZ_ zcgAwzK{VP1EKr$oM?31Ru-gGKAPZ^P+1c+*Xr>Q=U_rTO{`b48>&{q!sP7$5^YYek z#+%Q3_&q&64;!z=R-f*VEhkGfS@i0{fd@YLefbNI2!#XE#gVMCo}fQ!Jr?!4K2ies z@!97=aJ5}-&jhNKdP&*&994cr;DM0ew}0sj8kkRDbcvTF?r5nkL30|Av?OHw_649rJK(DgEEU`D1pawsCKQvb7l?pF z%uo1Z?|-ZJ%m4iTcsT$O)zomcxE=oP41jNby4&YeN{A7AN(Ej5tc09ZUsrbkEC4W> zV8WhTX_f+B7gqAzwQOjedBItKYji4`w@B^VE~j?%$F7bR6@WQ|U7LaQ z@EImNcJvayo zoZPA^j=ACK>1o-b9qD9ZR*+=@dC2)3T32o#{YJjM3Bn0ne%RuF0D*56mSO(^ymfIf zn=p{@x)v-M%uMuwpXYE4dV4Rig-;;ep_m_m;K|=O7btZmz39{!nhPBWRt2FAgn_>2 zBmm5knBSiK^78V>-Cik3f%t{^WPG;a@y>ltfWkLOT>f>|XafD0>)+Mcfm z@{mQ5_@Bu-5MX^anT<^^_a@23{Jyztk4U37o9hB$tzO?-PghVRyjG5OTh8{oV+2~+ zXqdNOpVD_I1RnmJl?+?mcuQqDhznX;S|WN0D!=qREdq}NnFj;JLlD%}LB0ZPqktCNcDhZ)>f`lt%#*7D}ni%0gwaBkz{LW7gp3nfu3Kmx=_REn1xr7-I#J~(=VMz&EA%65a&pn*FWl#V@&U(E+LrPTS?M3S_KYA6TL2_&AR{? zW&UL!ZU_*g2?#$*H+mcCs*Zgqu>0#{OEALq%t#3XT4*SpH|p%n`Pq!X)}Fl$L|8MB z1BGu^g2wAl-sa)}2>t=2Xuz$3y{3V953mWp`;zDDj(?BGx3i;uz0Xk*@5Pm>|4zPTpvnc{D-{Uy|Xvliv^?|#`5pxS4&R#wKsGWek@5Rt{W{TuKMBfnd7 z5GaSkU(nplcRbEpwdyAKFjxNgS!LRtD)^ac`EIJwVYKzOk&loRJYFSmZ|lAPv4eUMgk^CIJsF1y_TiJyrSYPm@dlI!qaC_W7D>VJoc4 znJ-pgKnTZhe!u1Fvl@l0ZrT+^cdv%XNj0552SBih4(XSH=DJ`rwcgkEU_cTlbNhQe z?8lF9M8-aG;8=hf$c8{70Mds?pBed_N++}E{sc2YfZ75H?HOa9ot^1`d=5IH4?D7A zA3#-baX6m>f*T-Jf)nHA66j9>Hh2!G;C95E9}qy{0>&sqhcozV0f^tJdH>uv0t3K# zV7yjCQ?uHBQ4r#Gv@l@&bVk&EJL~|h0`CA5Qj>q5EjkR?S7iwaIQ>R@J3@;Wk}81T zeoo5mK5tsxkE72D`fJq8&CNk}j$2#%u(!VtQULlhngJKRW1Ox2h%EN7iv29rX(Mk| zHF>b*PC(7&*;NBG2NwF?&rcL|SbQE%`)n7Q;>2HdD*K(`^+r=XTTYys^TUl3AWH^8 zV0m`8*YCfX+?=es?){AbEDC554VP$^3II^Q9>X9!Tvb%qTsUIk8Wj11mKp&;?MiXL z7Mz%f8)oZV@0_N?a1^JUByEzA<**&?YAf?H?I|S&n86eS4DtfSd|& z%Jmqrk-f=MP7E4T9FZkFsfxo>k37@#ch{fNEfP2)ruTc+Po-M@Z*XF*(?Ov^-q%&b z0vh;z&v6xi&mMsNXPTU70PuKDxWoMpKJJv>!hVDrKE!?Nrz@u(D)Q2;uo)FiTDi{s zOPSYnvMp=jo^3`L-QiOr&e`u$+0JwaYx0aZ{zO+_J8(&2PuGqGRAWX)TpkUs7v67u zd+an=!4^mCj4gRggJZ$6qBLPRA$E)jwuj?s)d&wMiH=FkCN0ORVRV0-|?o;)9(Az;>` zeK4?@FGf07hx?>JbA|q9c?0?ND`nJBWc-AE^1HAFZ2~3+_$BBQ$^oP-*`J^~v8A6% z^L}>L&mYki?h1O$a0A2UG%vW=#Ezw$Dz;rxyF5_oI*DH!V8uak1kq~A=UfTc?k`Xc zWdtzm($LK*^S-4?vSBPlL4bY}_KXLiAq8OEDliGARg1|r?4a;j-q2>5CgEHOy4<8d zje+vXzTBOdQe~rM(X>3!yz@9{1u{ww4EO3@|XN|s?PpaiU&6WrsAB+P^Yibg7nN&p}O;0T`Pu38v-^F=C zk;b}1BQPU5G1Dbw;SqRkk&FwKn9jVf8&iC0XXb zm8Cs)2X7b;PY1ugE?=QT(k}3edvraYX5-({6MFd=y?PjpwQ!)l@F!Fs#Km*l7n;vWtRz$vbb8T)@7>=si$yzcMt@q$kwBj3X^~|&E~iG!+TACw7Ph7hh^T+oGC5wB z5e3)9y zVbvbm_quZa+`&a3=}Io7Nx`hZkvxK-2eN;(yrT;a{e5l62VeTP{9|k&BXaa*V%_qY*#q{+ypC#Yqk6CD z3~kWu&(ZDCq&>CTLX*HL<2QESEzLir5SYA(LKXVlwP_iH+9VOwNFKI{;AxBi%59@m z)*}T23sJ(>FI0W{o4QR=^PgQz)WkVN8FtqEfi9FCMW(1%c!+S8tQA_RA%xY$ep*mr zjG_3kQ8*`*40maNZ0XqFC-Q-3OozZUXuOh<1g*Pfa!lmK$6gQB;*)nx)^5RtHDL&s z(zWJ6kd#`K*zNIGP*=cF%?B$tl&D5&|KXo`Y-|Uv^#SPMST%=&qqjImzjMk4#(9~$ zqimSIW33{)jeBZ;g@C^_%X_g5aB!5q zr6eICM6sz`>KIU;s89d|pv?jl&^LMnM@htC5L9HqkR0{uWjL73!!v@fKcxLH`L_{^ zqx4$nB1Kn0&WeJB91$Y)fH33F>=Hz{P@(xjgdDbOlx(JbZJ;e zLYFhCnyT2i{W@5?2wGn%th}hm;^m`l=4IHijC!{Kj!QFDWPOG>R=Ao-cWiG~h_?`O zi>=Tv)aA4y;vMDDJ!fY`CM*_n+=aqOY4qA7sUEvyp}1T z(P=$2;~gjVlYGr6d1ohLn&a}Kj{o4O1$ruELo-*G{p}CS;2HLB77rL~qD^Y7MIoK& zi8F!oLGh}|1%^7K(5aO@-9g9oaBUV~kfI5YD4ikk=VQv?BoSI_QSgUmjOt$~PHNv1 zZ)SUlKhsatB8(}?(TC7BA|M(rT2C~%SspyR@PKCs8>O$xTfTMH&S7N%$8n&-47rtv zYq5?xw!t_3RRUxac1E8ZL$D!Z66n1;@!H!@d=SZR(%XJi@gWuK?$iv&&o zSDRZUqNB8jRs>D62rUU&eBCs3!Mt(`q^s*@c~32ct7a(J>WwbH3DSvGYIa&t!H4GE zsy`oHqc@7Ys5PpnkjsWe9(gA15&&K=(v_qepg1F|N ztFu-;yP~SjP(D-Tit030)LQk z=j+h!50%|m>Mu|lwHgR9oM_!cFhcqFbTvC$L39$)PRmLv2H)>c)pJsN1rk?-e@4K! zbIIDJe4VY&>VdFe4EqLJ3WKao@Wl;8IxivHtLHsnh3pVQOHT29EMfoBY{SYf0oKKl z>hE!uhtHu#K_K@As&jgU*cq=gRD(Rdx@UQf4!%;tFzXVjBC8&`ssp0+;T~#Iu0w34 z3l3i&JIx=wS=fwzFou+x-~S889{YwimstV6L4(d!TF2GQ)YV+@qq8}9fpBqfaj`PUa&R0-UmX9h57;@FSzCDi-yg^%R#XQc(Du^MaaA*Qf92@x zU}0@*{>s(U(fpOQqw7Zq#N*rg83u}z76Zd?<-sAjO*IHS4LaLLbUYe7g#`TnH)df4 zmj;u=Da^{7LljQmxN_pinIkes*iScjEb!7}cqJ}a^2y0`D$oiBPgg&ebxsLQ07y>( A761SM diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png index 0cafa67220a6b8ff26cde44cf2ae1735201ab32b..8d474be2d6f59a488a0b7166697690b4324b01d5 100644 GIT binary patch delta 11100 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 H7`XpGa|e3Q literal 22205 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 G#Qy+n+akOG diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png index f55c5e02df71d8988e09aaee7fb280b8c29c073f..bb591f25f140f61e692fbf4549906a549ec51665 100644 GIT binary patch delta 2809 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 RD=;uRFfexB&&!id8*l%W(>(wH delta 6940 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 G@%kUG%z4cK diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png index d7ddf26669a25edcd0ae27e04853dd15cbf7a1f8..08d9eb572c5569aacedee03b711319041315447a 100644 GIT binary patch delta 11100 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 literal 22205 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 D3SuIk diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png index 706caf1a2ecaf9d5af2f9769ee58f2d4aa5bbaa1..81ad39e7150039fd064b24c470c9a9e70168737b 100644 GIT binary patch delta 730 zcmZ3)y_$VOd_ALMfKP}k0|UbcPSx-1Dt}m&{;(+hXH~u;puSpC3rPNFP`u5jwozQG zT3PQugXBYAwVh&`t%|xp63D*6ufAVIqfcHZM8_~p+u*#Qdbx^Tg^J#3A&o>$gCtG; zWFXSePtwp!)X=X~(F@fv2-P-dQPg$UH}capG_E%`HZnFgF*Y_dHa0aj4%RUY*EX;* zG%_6FoTUP08XzZqMr!ZLJOlMplMKRz^lP z#wKNj`3vXG@^*JOFfy_*GyDJl|B-IaJ-}d8D+%%o2GR@+Y@SEFm<(sXWmM^W)}<<1 zdi&qMq@O=C{(!;HfB&BGnMShL0~InRdAqx0sU}V319I3)Jbhi+pR#c>afvgnRh|J9 zy5#BN7$R{wIe~%6EzGQ}j4#ZMjU(aFlSj`2gC9S9_9%s^XlCWlAFNkQO-xO%u(GsP z%#>_#bve3ai)n*Hw0lg5%M3@Spm6{A=wN1@6b03T3cAS|DLF~27{gNP)wItl=%%No zM+M2<}!p17y($d!I z-f(7uVL*3JS6^pncelR>%Pd93)Vz69rp%c#Wzwu^?^dZW7R@lakvL0orj|ncMuj=+ zv`(;>ShYRBu$P}9L0e_hWxGYMCtqX{_cqiuFw-@#3;~6&ft8W5wt<0_fk7uv!4#nH jRZCnWN>UO_Qmu0HQ!>*k8H@~!uxt1cctT^cF>5{mD3A25 delta 1256 zcmZ{id2AGQ6vqeH-rak4cXoDW_L`aB%pNm4vq$Z=Hgc4s1q!vMl|#-2OBYJJyDi(Q zn+OPE4O9-3W(6dXgdze$4Q-*Ofhe}10ZO%W760%EAkk3JN+aVU;UA6PY<~%{E;HKp=_x74$va&F$GPkzU>H#peSSaB z^Rt{BVK!SV7MiAck4IqG=??d5z?BGIBrT)SWHRA6?sT~lA_b;8xuSxC60fh2<25j> z)9LhjJx5Z(v?l-}V44W#Ai``V96QV|g-WSXsWe(GX*L&=fVA2e!rZ1OkHK^Y0{XPf zKFpDmm#5ZfEEq1DaE=BhGf{0I4#U)bJw2cX-zY&6b!e0-+Gz46aI>4F5WRk>o;aeV zuBgD*D$uV5HI!4Ak%h~Z7=oZC6QYHiG{jD=tyfLGucIohfOR_T6lFwF48s5bd}tTz}?6N(W8Yq1ij$%+$_Bqj5Y+)IDdm!p;QpHJuiN;a*(f0~SJ zyLGFLgzHB}>S0;M`H6}16*7Ey7`LQSmVZYok+MAQJ)L_(J#l#AcJpLsPkPg&mF2T$ z+}vM#Rh}+#HqL%A0zn4N6G8M4dHQ+^>(u{V_jHy+~wN=ZZ z$uk!U4LNgIIx~Cun)ZF|moM(wUA;Usr7f=b`*u593u0PX_4EcRsxw&uc zC@&iv=!!)jAot}C$I;HZb$4z@P;^lKHqth)qhoRB;?WyL!QP(MxtEbk?v{y%U~bYE z9~i2=wzg)GP&0Zd>2Liq6(2LWmYm-7<}rNpx${>;gVj|ZE$M2xd?R)Te-BA64TKY^ z)7|xh!|O+ze@Xp#`@;7>_4S6n`tH!H6H2T&I=+1y*!=DvS5|#qkt~iqyfhN|nI9h) z$N$WdZRp!{>)r>>>f;$1+qQ@s$F^*pwdB)=vEjQ#?F+A*edW2EzvW%H@Y%QL3lXE7ZJUJ(riS2c#x2@*Y`$L$HY1z(lu o33`Q~&*$`rL62wW-u~i^{Z>w#Qz_7bTMALyLd|d-zRO79{>OV diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png index 0c5ea829573aa83f95ebf26437031e4f4ffc74bd..0e621d459809b22cd9b23f6e449f98118d0090e5 100644 GIT binary patch delta 1367 zcmZ8fc~DbF98Q8l!Gj}F0|b&NkmJ3Vx9`0i5|pc;awH;`SV0m97(_%QO7V)ZnN&~_ zuvO#`wHTa=M<_BX)2fsLBOn?C1J;gHsco&)saiVKDR!a%wB6a+{eIu>_wD|EyCY2V z+)D5FoM<#!R8x6(6+hI-&?dwuM?>PihhWG<@MwO}h`YcJ@yrPEKmDHPGVT2kZF0sXH5wMh`A^};(!z5BF0+2O+NR>aDAvS_wXe6a@DOJwH zqHwY(P}0CbwglnjJXA?iN4V%|U&Oc=+p`2a<%@&?a+3f*;fKg5DhUPo0z5`Soa7)R zNrr?dSF2SOT=bY9a?V@aHj|=-kA(sfUb&8g9Oj~cf@ev$Z!gZ$WD*3S72(ED{g57} z(6&f)d66iTAajKHF+bGA$9AEzhLX}%(a{HZD9j$#1JlT-=<&T`PZ z?m@jw;f_E_yo7)?hff1*Ip8Tc?uSUF(wtmf&B3y^t=rGy%kqOHwH)LETO21L2$D=# zt-f}}<}ltL9DQK_$YcZrAtR|}1Sx~51P33jJUn`T@Y@G=hkc-Eb3R27u@ZP+pb-JB z5U%=NI^j`B{l6T?eFOv8oZsY$&>*glgSd-Bz$b%Z#Eef3dOs3 z@AQmvEBt73L!vqf&eP4=7}FKYAnGO<^nkLb<$-kX9S^6bN_;$Zcm8rqyz%DE&Djx` zevd>OUYx|}jSMSSwf|Qrqi4mfjJo}*P5u-HE`}IYw9609t_(MJwO6PsTz(r96_LEO zFIyANIP{!TU!VT`&|C+dsc^>|Pk3{2_b{eBj~>C-7SA!p#myy~F@jHJ%4b4@L0o;}t-(ao8ymRH=_ z^z3%*p%zVZzJ60)$JND6{Mhu2wkw8k|1A6PP)Tt~WR){g^m6Nv0_d^;Ir;kKq^-^N z4NZP*gYjhdin&47ul7#SO%b>FY>UJ4rnZ*0z&z@(tc8A1-dlx9-3Qt!-9d}$M*A$f%Sc>!3CB&CT=cLG5_t%bH-}!3HV$@e=99EeIunPqf>sGmK#zK@G*LUrF zYu~rU;P!JPD6)@>)V*%?R&`zIXT?uj=3o9Lcko0=;S@uspruI1u=M2QFWBRKfpN#N zOxv~v)r`L3^J|;OKDcCSpJf}lxc-LriFIIo;%T=t1@-MCo1IJ(n%3N&I~l$uFGf4E z8;w|iWcT|8NncjonsRa};VO4`b=;WML}NYrscO$_$8StQ!>N1o)WBcwYP~)-;{1u` z^*&eU%<3WYIGYwHs_Fex$h(E9P`H!NYP?wim`ai|L1j{EUtw%Sy G7XA&nhW^O_ delta 2353 zcmV-13C{L}4Av8n83+ad0047(di0SYK7RlPVoOIv0RI600RN!9r;`8x010qNS#tmY z7ZLyf7ZL$ypVCqQ000McNlirudi|?v-ekpk|GfcR z;c=w;5Cf%4D^3L2u7f%E`th7!FsjV)7+}qsHT?MFkBA8Eix+dguMbgWQ3k0|Cap5h z!G>x!vZb89zpj$*T|RlP-+!BBXf`+(z(?yjT9{&W611JL=__9b+3qg`*Llf!@dC=N zP|Ix*5D`R`z(cEt-<3U!Gx%p~z(8m)sw_#o-&{`5Z7L`4c9qlp=bLh)Pmhcv{DAbd zcGB+Ee5=_@$4vUx0h?|+W1LL{%nfg63j^eGIaaM&MPFYZ-Z>UHVSm0?XlWvBq>Q_i z$>suanoPT?N=}4THJ5HFCr7%<={ud(^pmSO&2F~g{DUU>`}?;3*pztG3*y1u1^`ef z6etu5T)cP@m!>TDhNfZ@y|prn7d*g~a+%4=NgnN3%HYrtNzy<)Bq(PhV=sqhMR)>>+{8sp>RtndbHF3_LW z@x8rRYq@m!GLmIHo(Nm(j+F^q$SXae@|%jIp~8prL%hFL_#Qde%5;tA#;waz2{i$gmWgtojr@Hf(Q?%usb$%CBmq}kq|Bi!kPsBFp+Y& zX!yL@P!?#pJ%0iq(*XDI-h0oQj%7Sza=2wnD78I+%N&_=lpOr2YIrgc`mN_*q34>y z_Smzr<_SD(u4W7e%K5w^vvOc(QsAZmW=8;^SS(U1l^7fOiMZzsSJjiNHZe6hg~ub_ zvokStrOJ2KaXjbga7uRrN)9~Jx0t~r4acEoKWF;s%zqU0b3GOjN~IDaLKpNyrT)~3Ray3B~*Jc+;$7Q6?KpBch;O~K6>zhKcqT)D!$ zt7A+m3?((PG^Mw)LSCc)2lL6&7aw)Rn4 zb9owPFMqH$S0Gy6L8Y~sd9AI~YPFdZIq%t;TF$B?@USISEO&~Z$qD;P%9L`)nbQU0 z9FJ&@eE$$_jRxVO1za!WIWsiCqJ;|?7#P4ghpOVe2N6~~rNddiHYux}Qu2boAzTNJ zhwzVP7_nfy2k&pBU=DzQhs-%Hx;jJUI++MEe18d5r4U7okB?KSR4~Te0`{J>lCdod z7*=IpF5&k{K$C|73kO2aSD{cdg1wdYIU$;}l6fF@(*O~x>eO@xgdu5~ zl7G+VNs@#pifC_dXKZYYsi`TtySphiH*@OLDbhxR*jldF>ogaOgf|3px!eqNHIDC6 z10K9Ub4v>wH*O?~BA$Q#dEz)`;lhPnzI>UMmKIbMYb~WxiII^J(ln*BvlD=4pLvF< zsVPK+BuN+@9c9Ie6--S{Q79CsR4SCqWq&^W=p#JY+%9nVY=H)ig7ehVgrT7!thHEc z85|rWiXz(D+DMWFV+_N?!&IwPIyyS&>FHtr{{5UjeVW0+!I}C{Rh)B-jEu|-xaLxc zl3M0vzTsq=LV8*|St{0i?A8900}`l7A$j zv$K;h4C(3VAnQ-uY5u6&!78v^#G}G+xDxfcRXj`+3!RZqsr1u{IO6t+0#|wt2iJlRL|a__47X_tuHXbCFT=EhpD}IP#bT4p~;prCV#W3$Q>Z4 zk{4x-({x8ek8N$}p6;4_I%a*mXi^Y*@2d05zh=!_IS>rq zz%3LJwxsszvx)B8l<3|S6Ms#8K8(@Y_xEM@z5#BYxcO1S%-H|r8auuYvbRCxsYL&} zzGe@`)}@8=nO|k^e^V`8#+JU0n*aa+C3HntbYx+4WjbSWWnpw>05UK#FfA}PEip7y zGB7$bF*-CgD=;!TFfb|N%3%Ni03~!qSaf7zbY(hiZ)9m^c>ppnG8!-~Fg7hQG*mJ$ XIx{gkG&L(QGCD9YSif@Jla&Q;OjCrc diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico index b86d30b9969ab4b7d194747ef89f8d8ee79ba9d2..ec6ec640fe9a2360caa61f2342741a3e435d62f2 100644 GIT binary patch literal 15086 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 VU&ekB_q`vpsv}|@)@2*E{XYxary>9V literal 15086 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 From 5fb08f3334b4bea6b2aec2db5d6fa5b7bda69c78 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 9 Jun 2021 00:45:03 -0400 Subject: [PATCH 18/31] more pkgdown --- pkgdown/_pkgdown.yml | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index c63f7fd1..38fdfd11 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -53,14 +53,24 @@ navbar: more: text: "More" menu: - - text: ffsimulator - href: https://ffsimulator.dynastyprocess.com - - text: DynastyProcess.com - href: https://www.dynastyprocess.com/ - - text: ffverse - href: https://github.com/ffverse/ - - text: nflverse - href: https://www.nflfastr.com + - text: ffverse + menu: + - text: ffsimulator + href: https://ffsimulator.dynastyprocess.com + - text: GitHub + href: https://www.github.com/ffverse + - text: R-Universe + href: https://ffverse.r-universe.dev + - text: "nflverse" + menu: + - text: nflfastR + href: https://www.nflfastr.com + - text: GitHub + href: https://github.com/nflverse + - text: R-Universe + href: https://nflverse.r-universe.dev + - text: "DynastyProcess.com" + href: https://dynastyprocess.com articles: - title: Getting Started From 461e811848e55e9efb296cc5996843be37e75379 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 9 Jun 2021 00:50:07 -0400 Subject: [PATCH 19/31] namespacing the data - for better usage in imports --- DESCRIPTION | 2 +- NEWS.md | 1 + R/1_import_dp.R | 2 +- R/espn_scoringhistory.R | 2 +- R/flea_scoringhistory.R | 2 +- R/mfl_scoringhistory.R | 2 +- R/sleeper_scoringhistory.R | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index da4e654e..ef673707 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.05 +Version: 1.4.2.06 Authors@R: c(person(given = "Tan", family = "Ho", diff --git a/NEWS.md b/NEWS.md index 0ef13f1f..23248881 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,7 @@ - `ff_schedule()` for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03) - `ff_draft()` for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04) - `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. (v1.4.2.05) +- `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. (v1.4.2.06) --- diff --git a/R/1_import_dp.R b/R/1_import_dp.R index bda01652..78a19227 100644 --- a/R/1_import_dp.R +++ b/R/1_import_dp.R @@ -111,7 +111,7 @@ dp_cleannames <- function(player_name, lowercase = FALSE, convert_lastfirst = FA n <- stringr::str_squish(n) - if(use_name_database) n <- unname(dplyr::coalesce(dp_name_mapping[n],n)) + if(use_name_database) n <- unname(dplyr::coalesce(ffscrapr::dp_name_mapping[n],n)) if(lowercase) n <- tolower(n) diff --git a/R/espn_scoringhistory.R b/R/espn_scoringhistory.R index 377d4f33..76a54e80 100644 --- a/R/espn_scoringhistory.R +++ b/R/espn_scoringhistory.R @@ -22,7 +22,7 @@ ff_scoringhistory.espn_conn <- function(conn, season = 1999:2020, ...) { league_rules <- ff_scoring(conn) %>% dplyr::left_join( - nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "espn"), + ffscrapr::nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "espn"), by = c("stat_name" = "ff_event")) # Use custom ffscrapr function to get positions fron nflfastR rosters diff --git a/R/flea_scoringhistory.R b/R/flea_scoringhistory.R index db350ea6..3229c886 100644 --- a/R/flea_scoringhistory.R +++ b/R/flea_scoringhistory.R @@ -22,7 +22,7 @@ ff_scoringhistory.flea_conn <- function(conn, season = 1999:2020, ...) { league_rules <- ff_scoring(conn) %>% dplyr::left_join( - nflfastr_stat_mapping %>% + ffscrapr::nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "fleaflicker") %>% dplyr::mutate(ff_event = as.integer(.data$ff_event)), by = c("event_id" = "ff_event")) diff --git a/R/mfl_scoringhistory.R b/R/mfl_scoringhistory.R index 44481ae3..6e1aafd7 100644 --- a/R/mfl_scoringhistory.R +++ b/R/mfl_scoringhistory.R @@ -31,7 +31,7 @@ ff_scoringhistory.mfl_conn <- function(conn, season = 1999:2020, ...) { .fns = as.numeric )) %>% dplyr::left_join( - nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "mfl"), + ffscrapr::nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "mfl"), by = c("event" = "ff_event")) %>% dplyr::select( "pos","points","lower_range","upper_range","event", "nflfastr_event", "short_desc" diff --git a/R/sleeper_scoringhistory.R b/R/sleeper_scoringhistory.R index 8da0dc75..e856e465 100644 --- a/R/sleeper_scoringhistory.R +++ b/R/sleeper_scoringhistory.R @@ -23,7 +23,7 @@ ff_scoringhistory.sleeper_conn <- function(conn, season = 1999:2020, ...) { league_rules <- ff_scoring(conn) %>% dplyr::left_join( - nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "sleeper"), + ffscrapr::nflfastr_stat_mapping %>% dplyr::filter(.data$platform == "sleeper"), by = c("event" = "ff_event")) # Use custom ffscrapr function to get positions fron nflfastR rosters From 014aac1b0f625349d0e3f52d178dad2aa39fef26 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 9 Jun 2021 01:11:15 -0400 Subject: [PATCH 20/31] patch warning for .sleeper_matchup --- R/sleeper_schedule.R | 1 + man/dot-sleeper_matchup.Rd | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 man/dot-sleeper_matchup.Rd diff --git a/R/sleeper_schedule.R b/R/sleeper_schedule.R index 35ab8d1c..a064fca7 100644 --- a/R/sleeper_schedule.R +++ b/R/sleeper_schedule.R @@ -31,6 +31,7 @@ ff_schedule.sleeper_conn <- function(conn, ...) { return(matchups) } +#' individual sleeper matchup #' @keywords internal .sleeper_matchup <- function(week, conn, last_scored_week) { endpoint <- glue::glue("league/{conn$league_id}/matchups/{week}") diff --git a/man/dot-sleeper_matchup.Rd b/man/dot-sleeper_matchup.Rd new file mode 100644 index 00000000..80383329 --- /dev/null +++ b/man/dot-sleeper_matchup.Rd @@ -0,0 +1,12 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/sleeper_schedule.R +\name{.sleeper_matchup} +\alias{.sleeper_matchup} +\title{individual sleeper matchup} +\usage{ +.sleeper_matchup(week, conn, last_scored_week) +} +\description{ +individual sleeper matchup +} +\keyword{internal} From fbf0632d7396022e805bd08466fd6fc35aad5d01 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Wed, 9 Jun 2021 01:14:48 -0400 Subject: [PATCH 21/31] update data to pass warnings --- data-raw/mismatches.csv | 1 - data/dp_name_mapping.rda | Bin 1483 -> 1459 bytes man/ffscrapr-package.Rd | 2 -- 3 files changed, 3 deletions(-) diff --git a/data-raw/mismatches.csv b/data-raw/mismatches.csv index 14953c02..de16f995 100644 --- a/data-raw/mismatches.csv +++ b/data-raw/mismatches.csv @@ -1,6 +1,5 @@ correct_name,alt_name Alex Armah,Alexander Armah -Alize Mack,Alizé Mack Andrew Van Ginkel,AndrewVanGinkel Arthur Maulet,Art Maulet Blessuan Austin,Bless Austin diff --git a/data/dp_name_mapping.rda b/data/dp_name_mapping.rda index 027a95be2c6e4290310470066abb8d277046acc6..b9a3cb39565eb6c440910f89a6b8a835b0a7d018 100644 GIT binary patch literal 1459 zcmV;k1x)%vT4*^jL0KkKSsu^3B>)5Se}Mi!{y;zj5CA{_|M0*6|L_0-UahCd>H9{-oQ ze5i6layH{4DJtxuFWZ-xuF)kDRC^(GS-sF$fdvjB;A}zN`PvMaOS-Um+nIig82=_TEWJ+VKzwo-j~E2*Wy( z5<~8jAixutcTdo5a#WIuce}3R<~2j8YO2iL+z`8IPz%WAm()$17{S%|-V8pti!~ zJ|A7qJ^=a#neJsUNu`q$nm8*-pvMw>ig6^?X6BnhP}z)&!rS?9K}@9S<6)OOl`CS< z&W_mOtca9YRZBIkVj{@03{n|LbuPL!0pU&5p}2u!q%b56f1kVk;MnNxsaeT6l;tav zH&ReBM{_wR2{;otE1E59uC9*m^(6y&l$K@*95oC&&FUCSV-7b$85&_-IIbd(JJ&Qo z9SkrySez7nN=j1Bk9~YlIB8qiz-))X+`>UaQV$nua5RX7<_yx$%4=A$8@sp!yN&ac z3F2Q*IL3-`$--?@Xyknj^C5`%)Pu-}ggDF&V>6%k=cdC2qH2MC4}q}LUa>Oaw~INU z0&uZ1a7xF+pe7t#p46jU*hg6R(*%-A>6o@nsgj~5LF}lwRwgZM!&KNoE<3v5Cp12C0gmsWfSl3TbdWy(UE5s1$XDB0xbb@9`O6#AP;GhvBpvc^C zFZUH5$Jp^REx#e&h`BSj&V5b+rGtGYVm6fZ8%g81-Z?~2gUFPl2s;C~@-|qV<491-9|0`}@Gg${AW$@7pya|hn2 z@}V=2OpewSZD4q4 zFD)b&#-c6_L`pJkyt2fjn#zZ?ib&%yb6Ldp9mjc)yu0GNI@_vV&fZ}$DYF`&cu~WBbjv3;6fo4NZJ2)XS8*%G3kU&UpZXqUlyUJvwY8Ozuf;kH0FuLoma5qaFdJ87QuzU~r NyOJrwgn;&a*(g_9jXwYY literal 1483 zcmV;+1vL6XT4*^jL0KkKSuujRRR9D2f0X_|{y;zj5CA{_|M0*6|L_1H2mk;9U12{e!%pa5tA>Ib0!8UO(mG-;DT zh-eu!!~v#(gwcq}h`^W{pQ$2vsCtbJ4F-VILqHlBfb}v1Moe*&CX7Q9Oau%GrU=0? zG}Ax^5K3r-$U{IwO#miI={-|4&}||cN$DOFQ#o|5^GpK=!2tAJZw#}N0n85R2dK2!S;|`8O}zB z&pER*Hi?Z2la=I2Aqz8^VQ5B*mJ7W99MNwf@C8lJElv;xsLn#iWms?~H3UZSgP+Ul)0zlUOeZTVd z!#lQxS0v^$l&nnGNkGLN%+gL3KLwtIv!|4@l+@=r$f^yn|ZpSJiLk*kV zv+gj$y}do+U*zjOUMKE)6P@uy)-o`hYH@>+?>xq15$vG{bq(Q{BiD4en1;RlMX!w4C=*B$DkthZ$`?zH+Cmn{%9` ziyJr7S)_tn_4Gl&d~~cs;3DR+ZYIr7&iS@8Y6GIW8gyZGrYGJg7|H%OkCYb!rb6SCG(nQ7&Dj$Alx&Hj}j8X*h={dOC#W zgP9l{48dZ>HAvn_>N6TbX}gZf2*7hWm>s%<0;jWK(2)l7nxnJoE41EqTK9LER=m9V z%yQfb$V@9Iuc8nd*{WPrXLulR z&XPp83kIR+EDsG!l5o&itP+99yd+c*K_HpH*?FT;xI+9E;o4<8kF@*2%RyD!QtRbW zO=)n|6?Skk0Xduk&(33}*JS#_czSDmkFPcqO^9O0hlV)dQOt{j$cjkcFmoe$>N}3} z5p(T}wDdPLyf#E_RU1+I^ir{rM%oa(69X)e{yh1b+yd0T;=RhLn7~d{4 z8Vcl;GZLB_4Kxc3SWJZ&Vnne7#?+4ER+yAM{Ss-S2Du8&M|4P)dHPNcwu?axhLD&H z7%pPMF{v*oBZ`7lK}rrmX%criB4T!!R75q!XdxE}&SxG0N`hF~Cv?jfG?XvUsBM=Y zT3=s`M*}$n$gx~Qyjlz`$WxH*-O@FT+R9+k+&efSG8 Date: Wed, 9 Jun 2021 12:13:36 -0400 Subject: [PATCH 22/31] vignettes and pkgdown updates --- R/0_utils.R | 2 +- docs/dev/404.html | 110 ++++- docs/dev/CODE_OF_CONDUCT.html | 110 ++++- docs/dev/CONTRIBUTING.html | 129 +++++- docs/dev/LICENSE-text.html | 110 ++++- docs/dev/LICENSE.html | 110 ++++- docs/dev/apple-touch-icon-120x120.png | Bin 12837 -> 7100 bytes docs/dev/apple-touch-icon-152x152.png | Bin 17559 -> 9362 bytes docs/dev/apple-touch-icon-180x180.png | Bin 22205 -> 11245 bytes docs/dev/apple-touch-icon-60x60.png | Bin 5424 -> 3038 bytes docs/dev/apple-touch-icon-76x76.png | Bin 7100 -> 3833 bytes docs/dev/apple-touch-icon.png | Bin 22205 -> 11245 bytes docs/dev/articles/espn_authentication.html | 258 +++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/espn_basics.html | 429 +++++++++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/espn_getendpoint.html | 351 ++++++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/ffscrapr_caching.html | 138 ++++-- .../header-attrs-2.7/header-attrs.js | 12 + .../dev/articles/ffscrapr_scoringhistory.html | 247 ++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/fleaflicker_basics.html | 430 ++++++++++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + .../dev/articles/fleaflicker_getendpoint.html | 339 ++++++++++++++ .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/index.html | 119 ++++- docs/dev/articles/mfl_basics.html | 382 +++++++++------- .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/mfl_getendpoint.html | 206 ++++++--- .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/sleeper_basics.html | 382 +++++++++------- .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/articles/sleeper_getendpoint.html | 220 +++++---- .../header-attrs-2.7/header-attrs.js | 12 + docs/dev/authors.html | 118 ++++- docs/dev/docsearch.json | 95 ++++ docs/dev/extra.css | 22 +- docs/dev/favicon-16x16.png | Bin 1442 -> 939 bytes docs/dev/favicon-32x32.png | Bin 2518 -> 1540 bytes docs/dev/favicon.ico | Bin 15086 -> 15086 bytes docs/dev/index.html | 231 +++++++--- docs/dev/logo.svg | 141 ++++++ docs/dev/news/index.html | 352 +++++++++++++- docs/dev/pkgdown.yml | 10 +- docs/dev/reference/dot-add_allplay.html | 295 ++++++++++++ docs/dev/reference/dot-espn_activity_map.html | 288 ++++++++++++ .../reference/dot-espn_lineupslot_map.html | 288 ++++++++++++ docs/dev/reference/dot-espn_pos_map.html | 287 ++++++++++++ docs/dev/reference/dot-espn_stat_map.html | 288 ++++++++++++ docs/dev/reference/dot-espn_team_map.html | 290 ++++++++++++ docs/dev/reference/dot-ff_clear_cache.html | 114 ++++- docs/dev/reference/dot-fn_choose_season.html | 114 ++++- docs/dev/reference/dot-fn_drop_nulls.html | 114 ++++- docs/dev/reference/dot-fn_set_ratelimit.html | 114 ++++- docs/dev/reference/dot-fn_set_useragent.html | 114 ++++- docs/dev/reference/dot-mfl_logincookie.html | 112 ++++- docs/dev/reference/dot-retry_get.html | 293 ++++++++++++ docs/dev/reference/dot-retry_post.html | 293 ++++++++++++ docs/dev/reference/dot-sleeper_matchup.html | 285 ++++++++++++ docs/dev/reference/dot-sleeper_userid.html | 112 ++++- docs/dev/reference/dp_cleannames.html | 339 ++++++++++++++ docs/dev/reference/dp_name_mapping.html | 300 ++++++++++++ docs/dev/reference/dp_playerids.html | 153 +++++-- docs/dev/reference/dp_values.html | 136 ++++-- docs/dev/reference/espn_connect.html | 349 ++++++++++++++ docs/dev/reference/espn_getendpoint.html | 318 +++++++++++++ docs/dev/reference/espn_getendpoint_raw.html | 316 +++++++++++++ docs/dev/reference/espn_players.html | 310 +++++++++++++ docs/dev/reference/espn_potentialpoints.html | 321 +++++++++++++ docs/dev/reference/ff_connect.html | 121 ++++- docs/dev/reference/ff_draft.html | 236 ++++++++-- docs/dev/reference/ff_draftpicks.html | 206 +++++++-- docs/dev/reference/ff_franchises.html | 246 ++++++++-- docs/dev/reference/ff_league.html | 187 ++++++-- docs/dev/reference/ff_playerscores.html | 215 +++++++-- docs/dev/reference/ff_rosters.html | 223 +++++++-- docs/dev/reference/ff_schedule.html | 217 +++++++-- docs/dev/reference/ff_scoring.html | 219 +++++++-- docs/dev/reference/ff_scoringhistory.html | 391 ++++++++++++++++ docs/dev/reference/ff_standings.html | 247 +++++++--- docs/dev/reference/ff_starter_positions.html | 377 +++++++++++++++ docs/dev/reference/ff_starters.html | 192 ++++++-- docs/dev/reference/ff_transactions.html | 224 +++++++-- docs/dev/reference/ff_userleagues.html | 133 +++++- docs/dev/reference/ffscrapr-package.html | 313 +++++++++++++ docs/dev/reference/figures/logo.svg | 141 ++++++ docs/dev/reference/fleaflicker_connect.html | 333 ++++++++++++++ .../reference/fleaflicker_getendpoint.html | 307 +++++++++++++ docs/dev/reference/fleaflicker_players.html | 309 +++++++++++++ .../reference/fleaflicker_userleagues.html | 305 +++++++++++++ docs/dev/reference/index.html | 280 ++++++++++-- docs/dev/reference/mfl_allrules.html | 285 ++++++++++++ docs/dev/reference/mfl_connect.html | 145 ++++-- docs/dev/reference/mfl_getendpoint.html | 112 ++++- docs/dev/reference/mfl_players.html | 142 +++++- docs/dev/reference/nflfastr_rosters.html | 329 ++++++++++++++ docs/dev/reference/nflfastr_stat_mapping.html | 294 ++++++++++++ docs/dev/reference/nflfastr_weekly.html | 339 ++++++++++++++ docs/dev/reference/parse_raw_rds.html | 296 ++++++++++++ docs/dev/reference/pipe.html | 115 ++++- docs/dev/reference/release_bullets.html | 285 ++++++++++++ docs/dev/reference/set_unescaped_cookies.html | 296 ++++++++++++ docs/dev/reference/sleeper_connect.html | 130 +++++- docs/dev/reference/sleeper_getendpoint.html | 120 ++++- docs/dev/reference/sleeper_players.html | 114 ++++- docs/dev/reference/sleeper_userleagues.html | 114 ++++- docs/dev/sitemap.xml | 108 +++++ man/pipe.Rd | 2 +- pkgdown/_pkgdown.yml | 30 +- pkgdown/extra.css | 4 + vignettes/espn_authentication.Rmd | 4 +- vignettes/espn_basics.Rmd | 4 +- vignettes/espn_getendpoint.Rmd | 4 +- vignettes/ffscrapr_caching.Rmd | 7 +- vignettes/ffscrapr_scoringhistory.Rmd | 36 +- vignettes/fleaflicker_basics.Rmd | 4 +- vignettes/fleaflicker_getendpoint.Rmd | 4 +- vignettes/mfl_basics.Rmd | 4 +- vignettes/mfl_getendpoint.Rmd | 4 +- vignettes/sleeper_basics.Rmd | 4 +- vignettes/sleeper_getendpoint.Rmd | 4 +- 122 files changed, 18394 insertions(+), 1483 deletions(-) create mode 100644 docs/dev/articles/espn_authentication.html create mode 100644 docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/espn_basics.html create mode 100644 docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/espn_getendpoint.html create mode 100644 docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/ffscrapr_scoringhistory.html create mode 100644 docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/fleaflicker_basics.html create mode 100644 docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/fleaflicker_getendpoint.html create mode 100644 docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/mfl_basics_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/sleeper_basics_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js create mode 100644 docs/dev/docsearch.json create mode 100644 docs/dev/logo.svg create mode 100644 docs/dev/reference/dot-add_allplay.html create mode 100644 docs/dev/reference/dot-espn_activity_map.html create mode 100644 docs/dev/reference/dot-espn_lineupslot_map.html create mode 100644 docs/dev/reference/dot-espn_pos_map.html create mode 100644 docs/dev/reference/dot-espn_stat_map.html create mode 100644 docs/dev/reference/dot-espn_team_map.html create mode 100644 docs/dev/reference/dot-retry_get.html create mode 100644 docs/dev/reference/dot-retry_post.html create mode 100644 docs/dev/reference/dot-sleeper_matchup.html create mode 100644 docs/dev/reference/dp_cleannames.html create mode 100644 docs/dev/reference/dp_name_mapping.html create mode 100644 docs/dev/reference/espn_connect.html create mode 100644 docs/dev/reference/espn_getendpoint.html create mode 100644 docs/dev/reference/espn_getendpoint_raw.html create mode 100644 docs/dev/reference/espn_players.html create mode 100644 docs/dev/reference/espn_potentialpoints.html create mode 100644 docs/dev/reference/ff_scoringhistory.html create mode 100644 docs/dev/reference/ff_starter_positions.html create mode 100644 docs/dev/reference/ffscrapr-package.html create mode 100644 docs/dev/reference/figures/logo.svg create mode 100644 docs/dev/reference/fleaflicker_connect.html create mode 100644 docs/dev/reference/fleaflicker_getendpoint.html create mode 100644 docs/dev/reference/fleaflicker_players.html create mode 100644 docs/dev/reference/fleaflicker_userleagues.html create mode 100644 docs/dev/reference/mfl_allrules.html create mode 100644 docs/dev/reference/nflfastr_rosters.html create mode 100644 docs/dev/reference/nflfastr_stat_mapping.html create mode 100644 docs/dev/reference/nflfastr_weekly.html create mode 100644 docs/dev/reference/parse_raw_rds.html create mode 100644 docs/dev/reference/release_bullets.html create mode 100644 docs/dev/reference/set_unescaped_cookies.html diff --git a/R/0_utils.R b/R/0_utils.R index 6df24f64..a11ea3c6 100644 --- a/R/0_utils.R +++ b/R/0_utils.R @@ -10,7 +10,7 @@ NULL #' Pipe operator #' -#' See `magrittr::[\%>\%][magrittr::pipe]` for details. +#' See [`magrittr::%>%`](https://magrittr.tidyverse.org/reference/pipe.html) for details. #' #' @name %>% #' @rdname pipe diff --git a/docs/dev/404.html b/docs/dev/404.html index ebb87b89..a8d0fd50 100644 --- a/docs/dev/404.html +++ b/docs/dev/404.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@

+ + @@ -179,6 +254,23 @@

Contents

+ + + diff --git a/docs/dev/CODE_OF_CONDUCT.html b/docs/dev/CODE_OF_CONDUCT.html index 100fe329..a92c7ee0 100644 --- a/docs/dev/CODE_OF_CONDUCT.html +++ b/docs/dev/CODE_OF_CONDUCT.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -229,6 +304,23 @@

Contents

+ + + diff --git a/docs/dev/CONTRIBUTING.html b/docs/dev/CONTRIBUTING.html index 156e2baa..04d62051 100644 --- a/docs/dev/CONTRIBUTING.html +++ b/docs/dev/CONTRIBUTING.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -183,14 +258,27 @@

  • If you want to make a bigger change, it’s a good idea to first file an issue and make sure someone from the team agrees that it’s needed. If you’ve found a bug, please file an issue that illustrates the bug with a minimal reprex (this will also help you write a unit test, if needed).
  • +
    +

    +Project and branch strategy

    +
      +
    • Feature development for this package is organized with GitHub Projects, each of which track towards a minor version release.
    • +
    • Each function/method is tracked as a GitHub Issue, and linked to/closed by Pull Requests.
    • +
    • The main branch contains the code for the current CRAN version of the package.
    • +
    • The dev branch reflects a fully-tested, linted, and documented version of the proposed release.
    • +
    • Staging branches (e.g. fleaflicker, espn) contain reviewed/tested code for each GitHub Project.
    • +
    • Feature branches are built off of the staging branch, add one function/method + documentation + testing, and then is squash-merged back onto the staging branch once developed.
    • +
    • The staging branch is periodically merged onto the dev branch, and the dev branch is merged onto the main branch only when released to CRAN.
    • +
    +

    Pull request process

    @@ -236,6 +324,23 @@

    Contents

    + + + diff --git a/docs/dev/LICENSE-text.html b/docs/dev/LICENSE-text.html index 3cc6c810..ee89dce7 100644 --- a/docs/dev/LICENSE-text.html +++ b/docs/dev/LICENSE-text.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -181,6 +256,23 @@

    Contents

    + + + diff --git a/docs/dev/LICENSE.html b/docs/dev/LICENSE.html index 74ff648a..04a6a2c2 100644 --- a/docs/dev/LICENSE.html +++ b/docs/dev/LICENSE.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -185,6 +260,23 @@

    Contents

    + + + diff --git a/docs/dev/apple-touch-icon-120x120.png b/docs/dev/apple-touch-icon-120x120.png index 51870c9e7c48454a4a7c61f5a0b0313f44071c69..563cfb455a6b4b77f1a709ab811d08b3f779ac87 100644 GIT binary patch delta 6940 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 diff --git a/docs/dev/apple-touch-icon-152x152.png b/docs/dev/apple-touch-icon-152x152.png index 124e2a0fab56a5640c78e4f09493e3b8d3f4aad6..c5135d52001267958d4e8dfad8d44b74f7cf84a7 100644 GIT binary patch delta 9227 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 literal 17559 zcmZ^LWmuG5wDvG`Bi%|$cS(bUlytX}(jg7f`ARp^Fi3YxiIlWRcXxOCZNBULIX{kG zI2YqH&$IW+d);g8iBNeji-|^x27y2@<=#oDf!EaM9~30;FY(V;RNw`{QbI`r0;!Hc ze=tP^zrXtUPE82{@uG)7{DUEoJMfnO4g~U<0|MDIfj|Vo4Tv1SwWtb%|3LbnAS(s= z_xv}fttbJ!gX;KB*9BaG`}_lEnf>SanaHkkO47(1NLctUnP^nn-a;U6Y2>6NG(6@G zGd)u^Ce!|jZ7=9+w$<|T3}dlU_rqRAiR1iYl?aTKky`&wn~w8(z;-lYD8A?Q`B17; ze5!GLngBi0e=-`uO*v&X{q#`>ue{-vCV0lYS+AE|{Jt!d?CtH99F^qhN*PmTwGS41 zD`(!9U;B(+`;ImTvX@EE&-y{c`8ZH-yu~5^5X&IYwWaS)XiGY=NpIx zld)ky+?wbg{Wi)yCYl04hgX0s`ja#X+k_*n*D>m3*i^BNuGBG#htq%ki(s}Ig+H5K z{TXY0&o;7*L2N!^aC8as8}jIhFt?3n!YNz|X~IioH4%ktl3X^#EwGg|12waK z8v#=yXsvV%%kY&<*Z;&S^H&JJ>47E3l-0iRR#XK(o89lK8BT}TK-7eXgY2fp|2-UB zYb`DF8OGHOE!^x3!)cDZD@*(QkQN6=PE%p;2bE4Lg@Dl7riX)n{z^X47qz97CZ;BG zCXf?`lbqlsKF43oI%&+e0)07x7%XYf@3<6E2R5X)v;9b65xj)Hl4uhYDCF=@frF!0 zaC@JS=QPo)1hPJ}e-$2dnZqv|jw>5}k@$K=H@5vcQjBob($H>r_%jy&^sKAXZ5l!M zD4}E0d2J~c*fR6WCJOD*JKR`9n$>ldfk=a{7nPladD2-)d)0)kN(O#Y`~_(`A35{7 zs5(@|^x+>Ub)bKLPWFvfF!}eKl&N;&b!w2T>WX&NkatzEM2LlUTB4Om^{K5|20cUq zNg?s>Sy~3T`x80c&T1BB8xlaG#%u4^_jHZ%#-`z%{?h2g(aa>Wes6(5v#rxS971vG z+<9pB?C7WFF0dFew8ey=KahstMK_toM@1(f^OJrMT*n+{$CoEf{<)+>Xz){J=vwCJ zzm>+E7ESBm*l@@6_W43^TizaO3Vi^C2?6FqK~1}5EvZ0r)t=6jvcSK-0ISu z@O^z4x+@Df;D!fU;zds-+0s4xj+|`SE%Wl5a)M={*Fj*LCi5ohaU3M8A#&#ecZMP_s_u+&n7-b7%fn8T!Axt59SJtV>qOnsfecyIU!8Jc``ctw+w?qQprfx*EA;Sq5 zBiZ=q9U|DVt-Vzh&7E#rsAiLCQK2}6LG!~wB)kqr)sIdT1Cf1uR6{8A%7aIthG)J_ zWm!g;dGaICyf@w4w0N}J?JO%VA^gt=#a2p|ylgupNykmN!$_!(;zAXI2XQK0ZZ`bd z_hQ|xiL!I+5rxJrF1bsw{Uv5UF)gvy;t`7v<dS;bhAO(WOO(Q}*XIa4huLPckb`Ch5U>{{AAc zE%@y2*OW?zsg`u`SO&!3*J5scM3Jy5|C>r*Y<0&&3yF6()KfPw7=p(Z_QwglJ>PcO z`&&#XLD=zyY8yYc)Wk70+i<@T2p#c6+rY1Z0L73kHZA2Y6ojLf6+ck*MXgLCTY5)sh}d0J&R?oO}aRaWidRtyxfC-i7SawLAj41$7mk!beq=>G=q zyiha57{()|hgL$qEY13LQnA5{wVFYqcCm!k&&pmSEI>S%3oPojs~1WItgTWkLpbpw z=6m#*OcaQ$^la*;@bU4-sz1uw&eQYrH_q0tSE}mi{ciWYAJcQ$=#MMdObDQp4WQwX z*v-N_8c38NoE5eFS>s0OW=Zy6Wj(Q>O_ZemC9>c5RW<{M21m<#I0DDrmf@%+>E2!4 z#+CQzt4ksBkSuE}zF`K-mL~vUW0z_bIzLnjCF?mM80ZC=?L;+*31qtDF z%iI-0>X-{5>6mD0s)yb>=^Y|A6T?%98G-Pk16eEs64@JNR8`$sO7Td>=*B{_)}c2P z^qTq?*Yh4^x3iL@w`rI}*j7Y{&uNJL1c!rpsCI+%ZS~N8)s%*Y{9+j{tLJyKZFZzF zu0>_`F;)&9VV!l3`d*1OHE2h0B*%=KB?iS9&M@YuVga3YWd)FzGd;g;I|i;-PBEw!3?`@!@9?i=8#z6n0+gE`Cv&$j=$SN z8=H@qNuh+Tz)hV)vgvL~DIFF1Z@yDky^3Fx_@Yk5kW0_X# zplX|cX?}g0pPK|E3N9I$IC8KSroey&^~UV^P}yVgR+ZV6J1dDXCqA<^_4i{46n%l0 zwPl`zp`e+sV0WV_E}B1alHcIZ4DIva)+2|Nq^j|t>dR3F1oPpx7N7EU`YZ}O3Mi_`(icPeVa z%gH&BVt%F(!C&Vo2r#g^zQQSClYOEiKSR6nMkIilc$I(n5JXK2Fv-k%g6$w7`I-DD z%mB1LL+QZ#0`!`j8w*)|?h?LVH>6SaO1HDZ27YeA=qN&km{kHIHcV`zq;O`LFVcBo z!?-a@#To*v3pu>v^%`4}-4X-8QK(LCeRPruC`cOIz9u`j2r?3r1gpaJYo@<7>f+1J z_-*(R&2~jk;oKuB&*Qt`%|Zt(25&xDx^w{Q}e z`i^b0^8o7DsJ% zc{zHqJ2Bf}M}|(w(s_Jcv@!glEf5K<&O`&JePi0pdS(mH_BZag6Mwpeg8p~&u8q7D z6asrM{*rtpXPrE%U~QmT7%N>(_wW8y^6KrLowH_QHf#4+hYBRpSC{tOg+(v(Ein-( z;g6EWhBtMwqLiXyFkkODR6&?IrtbThjp`6BTi4}%L5s6fz zfByqX7zIhsvFK%s09)0RSr?=FO8Ay3I~9WD@9%vHM_pRSpE(^ zws0r13u(%Xr`-942}1MOEAzS`E3k1NvYTT6Rv!FB`5vfpxR|%(K|Gd(s~$o-@2djm zc2+vna^6fKcbNC}k?mYvL=v+$E(VhN-4DXR_h>M_&c8?!g>aSIKhs$xG@C+bUZ7DS zh#Z|4I4>gr)J&Ho)f(xeoc9C{4%v;P$dq|;_m49By{6^`Q zCOQ`6a`}qztaW8}W3-|WnQVe}DQurwD2pI{GPDO7*27s`CC4UIaCS1m=u#b!oRlQJ zJ(5{mQ2}dc;4`oIoJrTz$8J@$5@b6plT8*Joh?#P50j0de7GnQ+icmdSnnY+Hal8q zE)Pxd5q;UX=tdTVg!y40p6+0#I$t-fVJX^24Am8zu~!?BMAveBY14As>8+nbp2<5U zXZGYzRYD5>jab7kh2cbbYy)}D%7|}a(*D1YiW8Dz*b^AUGY>pUbnynR-~%9qg@vlh zcrSIL+p_+Uz6?B-=rZ){l2bqbBudULk-uo-YoMZMqhxQ-w%GDHALKiH0s^YSUryf& zK5NR4m+SLejAkjx$)Vof-X6?1#;7nP@|#1==((pt2C z>hG@s)Zsri1sgl#`NIDm&Vhx86)L3QqJ`w0j!20?{O9KMu*e0(-Q4()vB*0c4h!tk znEcgl4b1c*5>x`ayeM)K(SOGNR?^njLALgE(|bp#coh&@k|{0n&h1v)sJG5<85kIH zU@-c0l~j!I)34?J)X0=43U@OcVzRYerKn7s@@Q&&RC}k`Ecj^E9;a*clr?lFC{*9e z$~I;#vkQS#z6m%%`<&vFl@ZDsPF+cJ)qiT>DI|&Z{3WcjAIg@${PI(wUX3ktoi!(n~fchtk@zKIFvC(x@k8yQbXhElvu)A?7K&u3eAzcM$&$LSc+LZ5drYX z)P;&3%QuI~M+rLy($a{)whPzZhJ0?~@0~96apBJli~Ds*Wrl2M~I{TzD0~^B+ zHS4UOogkW;nm-<|=6QH{PDX@|c}Q6459$5e`GmLlQP74LYzMJT&sE7kY^7Qmf zh0PvF$RJ_*-d`2I4a4%e+bsg_*N7_NfbN{VEB=Z=LCjoGcIOZZg6%;h+7%`c4Occ4^_9Zo!{C_F@^!;l`k9P z3_QjnONLPz80o0+ImYAN)pt%2fj=6AdP(5EM7w8KuuisU8{fuT1j1|K7LvVW1gK3dfM;o+3RUgXlTa2m#F(usT~nVnKz~l{{{Tl(y#H& z95$z|KTQ1FRctL&$ZDW0N3K2e-(bU=7gq+=wcq}n3IvGzH!k}L6${7J*;m*`!EG=q z#bLJD?$|N5gurh$qrK0lq8&BSZ;()FF=Bd!AVJksI|2(UtO|KW`|4G$5n2hRTp^>t zVN#+ut+~;_?a8Ouz>Q9ayBvK{-*H&Eq5UCq!eh8|X8Gz;j)a5kiDdGyL~**S7|}vG zopq%Lr}hdP`NI5^!OP$PDkW_F38R45TU?|&8{*i57E14GX_tL5qv=dsq6_9Y(p1g4 z1#(;#_>Y#8~D=C2qMgx1$gs+~Ik~NI|T&u>hazrHb-VydGzr)wn7_QTfn9EOJ z-PD*n=hLL^*Uo-qa_0(FV+*rhA5*NU_#Tu`LLN8{$8TBIwk}%sPChoW11q+2WkfGb zG}*#5pzDYwf-q3oH$FwstEuC+g;`M0i(8*2K`6hmop@(%#wN_ZlI`{yTY(FRqTssfOw9Q1k7=p1FIgP@!nLW{}84Qr&&`pF*!9< zRfQUPZNJTTlJy z<8}Si#^&Z}=CM!Mm;1&q>&H(=$2$NKB)ION6dxDTVuuQo^WcBEoC$`M^R$<-SPZ3h zff}vzV~mJQqy1vKkEruk#fHV$YFG@WaV4HlDUv+~u5M>R4>GgW?dysFazvVkNFyqO z�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 A761SM diff --git a/docs/dev/apple-touch-icon-180x180.png b/docs/dev/apple-touch-icon-180x180.png index 0cafa67220a6b8ff26cde44cf2ae1735201ab32b..8d474be2d6f59a488a0b7166697690b4324b01d5 100644 GIT binary patch delta 11100 zcmZvCbyQUE_ch%$h=i0dAl(fT(h?$FL$`EDibFdxG)Q+T9U?GvNDMhB4bmObNb}y$ z_xJC+)~q$N*4%jRdG^`&oU?a(75brJf)^Cm=e4F1?j{aC1_5Y)EUF3(jWh1G;wwG> z`NNz!KiZj`ZP_MDG!`_sdB3?NRpdO6agys?J&$``@~mg-n_oG$k~wd*{Mdr+m$uFs zQCesGU%#Jg{8CSS)AEGv??GKvUuqk&o@JrXR=wEPb=v-Qu_^{jXnBht18+3D4h25+ z?Q`^m3yA@~QUcRp&y$Mr`#+{(37!Q%3b3DJxZpl8kafwTNrfKl?GFs!le4iFF7jE{ zClc19S7JXryAnpF+s2n490^lP11sr)w%6(Px8vY4`$FVDj45S4o_T>nhV z-}T7FCl+ZApA^f>fmRYwn?11?sUNfsl{rD$YD;2A3^A^}4$|;zXI3u`fvQ_=qld zB0?F^U3tj}QVaPmABfV0<~?y%2pr)V2j7~UMzI6m*9`ZXk?`Cz7_4@8;N4+e$%Oe* z6o6<#`BA+Iw27~roA?Su7QaEa_a?O%fp`?o{)b*Zr&v^&%N z*@(B53Tc$%Xv9VI+gWhvvK1IqC}~n!0mgG8Soql?+J^r=cGy)+9k1rU^9}@dj?-1+=@%E22CZf zpdH4a`PrDXSj+jbmpEB)kO0a`@`=c-zJs?V3_;EJ0bI`nJ*;mZw(?XaX-ma8jvb6I z<{G0-%@n-2C?@rBUKdPwfj6bN1gR{D*s^Xr<|Ct(?vs}0U1*`-qHs_&nNZ#^#-MiL~;tIu;N`(Gdk$N_7*U|sN{;~Zx?2c^!cyS zChALo>)ZUnr;J^X3Lb4qL5iHbs48L}RSp3n8<_xa&s)a+WtD>^rXG-k%p-+d9NToNk=$))>LXb=W2F))y<^cU&7v8vyu)Dch=#L1802V=y`; z+QdA}nS8H6#i5U5n8UeiT~8dn>mo5m`$Pa7{jzuWI?aTi^pGBnWP|2RvO%6m+Qel{ z4kk4=X--38k zC`LDecq7 z4Vp!XocF50ETmY$Tfpi{d1I_$;F9;#f}pv8@`ms{40>mIak0B?LRCfJ?VKsy5Aj~LsEML|-CJLBB&&S5d#use&DZG!5!f8`mT$bnYPQEDAD7Sz@n zZA>@h;I+vIicENP7pZTpify2$@`k2Q@V(S?5%UUrwcO-v1T0C6ic~iOF`HNGU$(U6 z!Xius{i2G3y`0^w+Xq4eonKF$^E?MgW5IENSd^sswR_@4{WZGd4)j>j+VDwkAjb;}*W^|Y>v z<`{xeOvZB)GHb8E_FT2&k?y>?ID5)Ltn(1OrPzJKjwis{egT>BdJI;{wFJ9MZ3B6# z2r`Qi`|ysaqe}XyLNkh>(%%1vr)Qb)1T=EkM$8}>AP6o;@M(P4=d8&2XPd7c$gdcS zq?6rw-zZiJDAUh`dw_u72e& zP_(^uKl5GO=wMQ|<&Kd+-I7ywy2cz^jX@$_k}Y9DwLSgH?g7Vv&D z*F82^TvM%rBH!yq6n((sZ-ijec;~~F3Y$u9lAUQvrCO9tl6@r@1^l_JJo()`nXFep zI8wF;8byY{{6S5dw<7p1mXRUx5L-+}$Bc?bMBs6F0;0{J@)Lu)6&yk5wD7+&r@==sW%{ex8*Y7-FGKk>S$6|w>{7;*zgGT8nIl|{$D{p%W ze@t7O8`KLNdO6J7xfxiObr)TFYz}@-pO&opVPF&&vDg)XGe7Wl-YzfhS@vh;Su=<4 z<>NNq&><_QP8Jzk+Hy;Y`qG*8IP>^3&?iiMIHo5Y4#G?`HI!kR(lW+4T#v8JNwsv( z>3fLiJG^Je(&2RuG%Ia=hZ=Rivn1tFA(=61%V-b>iR=jVdf9U7PRrfmHDDtN{A>C* z{9}(vdzg)u6MBo=YPTSJMXyWPIfVj*soQkJKno#!}`4QVdnvclADIt~-R zw(BH3K=@+jiv2iWz&N-VzAV6TBu}Xv8D&Gt7Kx!tRX>c#nqk?=Q&QsLr4p8zIst5Rs@-eeubpkvWVoiI7!r3nI8T1W;Tp#h}s-1E?t9S z(*Gn~0Z3jaXEX~R&Ps#aN*UfWPkZ6#|CK&Dda9j)D^QwuV<-{RN(Ny{fa^6L?)kULqWL)i_OUbsD&N%%G_s-y{oKc*HTDc%f=40*CW2>Jly{Zvu z`z{7syv(LIFUb|MFKahdCoL^>w5FjEo2u`1r$R~AaBBhV=T1i1cq&UBzHes`q6;Yc zeL0*c6aO@rfr^;~ca0L4+)6^HN+T0k1Xbb#5BI#y3n@Bei#h#YB^vj)Hj~7gs-lK* zlQ=^l@M3+XNxBbk+4%W1*YNFqVsrI(Uk}BUr-(i0F*jji8WK7-6HbwvP}LHlGR#Av z?BC|;Ux3olIL|lZkf=GE6=!FR{6gnOz3vqU7m1_yPjREBtMs8)aZ zAx)VI{?ea9;6v8w()AZ6CS#69MrBiq*})tS{{h zraC0UH>^Lxvx=N4A?3k&LZB|!RK`1yJ)R# z86CWpz;W5V2^%)!h))iU?4SpBN$0=TX@w%lbY$Zv@NZwQW*s4{yi7apO4H_vCiM>a zN_;ir91b6pNT|Qll?XC!lje{!D&95mu?X46V$$G3x`+BYVyCpZxo+J9u~aZGo6QUNt+=X2FGV%vkd#5K|AhRTJPFg(8Ga|sDl}6L zYjS3_BNbvvMPr2o&@>t{mL7;TdP{{-W)a`$89^-aUa|Cb@oCXtF4|D{6T_O^ARM! zSF9C1c&)u;tUX34Z6o3|%HAk>%*_IARWLrh86$`|-@a-QNxZF{f=koV(LH#^-M6tIEaa5c&;-=FfG3nyUyUKkl6t}C*$ei+=fOpvlLN&A;RNd4-L$*12% zJ|;M?4NoGSX$&rhvzDeUpRXV~v*eP$rl(#SE$n;#p=jtMx@6;Cs;JxHSd~VG>mE3O zakjmN`wcGks!*xKa|BhthCv*xgjC!s-^X7naZ_#@nM%d2TT*Xcm+NchKTSBN$kKt5 z`2B0<9#bnsEN?H*EC3W*NAYql!_H>Dbv4(o$caT(JYS`6lq3G4o#88(q=vveC!UU3wCOc^VV1L?aE^B_xSfOAL*X(ZF(KRguGMomQNLOa`U10PpmEkwTuxq3 zUu#V;2nBF7^_F3LT(;boJ_&@>_lPm~$~KKiL)ANNwO{l;G!Gm-14Cfc>*UnX==(5N zj{>G1uGf91ALDtXd53S?Ux`8gb^0gDNq7nH8=tL;r-F6VrmM~S2J-xgehY&z-hA|k z&dtr`M}Z4MBn|5X{X(~GplASkmf}p)2^!DES)}`r-;f2(`Lbd?qKN1>>TkhM8+Ec{ zsoN53uNQw1p>-l7gM#AWxMK8kEG=>EvYTF}%BOHA5O4wZ{%y7;D6w>@B~Y2^1Vn@;+SB?CtL->a4XStwUW8{c}G#Wv(B8rcmy~ zebyysMN}4Yi+xb`eOClq{q|*t2akGqg$I@`(I02eDM4{+F{juC4L^$IjHe0(j|{pk zkN_d8vukG>B5ZdSjp|t(EptD9%eVIg*V>+;;Olu6nvYZLb7qVaMJwX%ew}ol*x9hm z4`d>9#x($p>!D8Rb~e3Vz-%^Ka$L?FL!gDmfSY7Shq+&@svIDB)YP9*+^=ua-upyx z;x(WJYJ`6Wg(Hkfy_zb-pNfbZ*jRJS&ab0ZIEqpI%)CrYPtU$H914Ul+)8&`YDbY; zM{eN9M(@Y;MgcMzrZUnm7u4x9V>8^lmZU-s(v^KCJ1cm#3F52|~cJvWYNy)RWx zUg<$mJ8B)Ch`fr_?tk|Es)0$+JP;G-YPsvN&)4Z-0Qcv#Kx;DLELX#nzE%Ee9Hf1W z+$Yh&dq9!BdV^ZoNF!;FTFGffCYmH89w>r_>~g_%Q8DvkTq^Szn}e$3xGj@Ljpx2H z_hnyU%0;RfkN5A~WnWuBq2lsXVQ+8tppPGZT6!vb{h?^HC>j`*x>?LxI)I?X`|X}~ zKjj}y{!k7cZmV3=z}k~WE<^r)9iX^7(=dy>`(P5$M}tg!mdpnkCeuD%kj&z0?9Q`5 zTK42?qYREek8zuou6&UUvX-TC^O@(H+O@OE(&Zh!UwZ!aaG+*M*M(lt__vAkDirVj zBT>oMO?sw5g24?FEPf)BR52UlExD@76y~haU(+8kIG&c$0332O%4R$OVQqz1&THK1rk9-88BJR?^SP9RC1a0O4o zg8x!ul^55vI}(;ZK*l{f7&-v0(mpmy>uvRf^XjJ9g@Jb(EUJE|_AV2+9wt!Pd(c$JC96p2Y5t=K-1w)fUcrG5|S#W85$E^7VyNoafQi))LN zsy^2I_GrW?rZn$1bD(U@ZndqIGUc5vBVC{S@L(vC(v*W?f2h7=yvPuW_prmkpy7a| z4r3gHC5d3Y)=CsunTZ9xE4FreA+_V_TEai+FA?7Z)Gamw$&KkqI6~&IHEQ?2(#$xn z&FYk6nOV;5XVkuZR5DeNxc?pZW6Sn?`zjZ!%aII7=aT*274O%ixmkT=mqi=~16+pJGRrLNAjdb zwNKek&6l>XWe1lfzsu*<+>ZH-KdX~i7LsR?XPM`F%#cX?i`P_#*PAXtp`uGQ?+aD4 zz+PCTt+Pq}cXL1T%V#AyN<67*j?G0TKbs%vhQlWjvm;B{x; zngr8x+4Yow>NuYq&fUZ{=LeNZ@f4^(F|2Fnf>#aIp*fw8^ZCaQT8JuLO&?IJIFAU# zRz9RzS{a;{RM0%^6%jSr*&3&sU+d}TGd(812r2%$-+Cg4{<_R4X~H5?y|LTJ@Z{Rr zxWlt7Pl*OeYOfejEg;{7l$$XvVhhM$*lc|0QEB&rT5dc@(N5f)P8Ey1)uMtcrh$Ry zg9ah;z66`k$(!l3s*r`6dr0PD?GKgQGZ5A%6;CEp<#ndoDdi2+(1NpJeLKkAatUK3 zx1pzdyh2c{@$^JF8Bu;O`JH263Mu#nV{7hIvYw4UcSg`--rk^>{hOE+fs_8Pd&-WC zkxNii+jx39VIs`hQr2nNZgFn^BzE{7coEHg%l!eFKC)s5SXzK@UH_c@5FGMR;dlTi z>u4<6ljWZhow|52>agnj_e~Dza#0k9KiKK)LwoGN&xpVs{G=`b3c}k>`!DJaqutFo-kHUhs&D7Z4yPOfW$BMJXiuRo5& zpSgthNtiZ8J*`ieee1zw?ZNTSF5R)bF)AwiQ3R{gC3*!T-gkel?K45b+m^@+Xn6W7 zjh?L(b;Z3rGibqIpgnYU>#x&!t0v&QrICB{^9i?UOGNcwH(p3H%ypsCxIM{O$f16- zI=1coj;s07EvGxZEb`Zwu-|3CVy^aN(6#;wLbl(Fmz~Mq(c1t z4UzO8X_hDW&z|j}588j9oMH{Q>UMRR_h37scV8dH#J%3U9T4C(vvVuYTlgLwP+f@B zpHx*czymnScV>=`u?UA7Tc6Ppwd#d+;0W^&us$w}JIFVOp9GEpg|Q7(gi;%y)JKX1 z(}G1hvA|)M)5!GdF)MqT;{f)od znRKeR|JV~$NtIAy`wMGcB}hNq;tkx3-R;D(srRNqC5KzH_C67)*fL#s6^TlvlH&dB z%ZOhd>#H9J_N+xl4Mqq*P=)D48*%sR=J|)&3@iXI(3h8k3hAYvsdk*-ydbYMTIxAX zwTH~mH)N}EL~ifGksTc}#X9Lvr#l6AF^I2u2;cnF7*o_VuRd#T9hh)UsqUe!=WL^X zdET=aj!$da^JE4}Z*s$WA7#Gj1+)09{*Gp)OF59p23<&WTwRY_ z8&BuI2!33?=5#Oq5elc`W1);q8nx#t93FGf0VXSQ|9Bb(G~R5@vm0KtRH_FprhZ|O z7I7R7pTOV^F-)c$7gJ2=Dos&P&l~tFNxzmXknASZ`NarYl5Jl`@!es3?ehSm)e%=s zUEmZwce?DqD1NFtf1P^!DYeF>?~!SjZ90FO#9*)K9rG+{H%o5tYNk2t?O4@sfsgc- z1FL3khe?y(3W))NY5IuvBbVFhK?D1JRF_WR?IJXrzNmNFEI|HCXA~XDu<-TIC-L6x z74V7~$t&ojF5|XAD^B4Ad*1!|?`+B7DAG4MytgJjq5n+&Qt>BVy_$+fZfJ~b*x5b# zM?qX&JfSPx9Nj!g`;wsRX_yRVi^eO{*d?GiIX}@Gq4U=$>d}abPf5DipRV;C<@|W_ z-QpO9`7c@H#lTC+TlSJ~>MzP_YFan>R5&tpLP@NlXd5rA0ySPWIeCe`HN@4=I!gUC zmZIOE?&F=JBP=|5cFvZ&(be6QArSnm!tjshuoVtJQMfl_?)FH=kWrw>am&y>1}D0O z7>!!ft4z*ibEkwy=ojyKf)5smsut!%Je6hH{-Om&PGhH)7G5d8PRMkQ@+UCSIg64S zvYxdG>b*Q2g@@gb~>kjXkjBhW{M3NV#tSz;Q2{~N4EGU>9bQ$tWGqc%sY*UAn|Si3%%ROX9H78VxNI|(OB z1vzKQj6pFKGu0CT_mcmX{f>BKtK-SS?r}*x&+lzu1Sew(92Jdcqw=aw2>?(oI1Ory z#=eis3>3x7sxdS0&Fw7C%_0BNx4t#T4I&D?Y?7naQYJia{;7%n8`9?>DJb0hWeUm% z`N59;9-s2%DSKUx`|-xP1h?@Lq@M5<+WNJj|INj}L>qCdz$AiPcbG@9{hcJ)u%J9w zz5%D(uHc=3O&3%LeQdfL-;#czK6=htsnQqnL&Mgd@K#V z&Ee@>*YMlwQSzi~31*ucM4%ht};51Iou;|O^S8bYQYOG^a8%fr7*`L*rca>k>L)1jJ zqjU5gq$5ex+jaJGDd>^f^^mRkzOnDWZpp9OVqk>kH*T0Lq&X5w25GqiN%^)%YzI7H z*fAZQO2=^JY?j*eni9RL?MdDLv>`x*$-xSoFYbAYnG5w~+n=ejTaUU}Y;ceZTa7r#o&zEjGr@jP`iGkVZMY1KUzU+3vwM7t6InBuM29xm27O_-mvrtkDZHY}q# zqC2--^?VRfyu7~3`w18oi$or+{vp1@xoQjvCs>@CiC;cvjKBHu;eXPT9K|fo9epi5 zEY>I6Ld7pDtZ9w1b>DR?QrT8*H4nOfZH!bfBgy*pw+rVOdlGry#k*qKH7wW9&%z}& zuk!NSic7m}6}BO+6#56cE1cR4?IB9pSwo&~=hs>7ui^17Ma^uaWt?|iV_vNPHb?q= znpU2-c4c)ng)XCW{6249pZ^?|+q$Dc@9NT>{2c3d=r{(HxY9Nyx(8ZF*jNCKRTUIw zPL3_uTI+WEgow-{#BamBdvfeu@>9Pz;XfbBo=A*@y2`V(-^pr;umLJG3-k_xMNz=* z5g5PuTRYtB0z?v}Y^$@91(*8Gu+U29HcVm1`v&uo;LdW&kT*~2rYJ)RcWyfscL0bg z86E{smj$|oEf#pqCjSWT1?4W~ql=GFF6KNL?HiIw`}8Rtj&X%|MY{5cUl7N^I;l$a zA@Xg##cc>^PHqV{8Sk5oevU6r*EDPF{+r=hVtJPsmAdzqwd={&+Dw;U2xf?1#j8t> zfa^>`UyA0uHc%POp%Na@?H*_WH%U4fM}}2ybk_mK3oJks*1?9(IY3T-nRF6GpwGiz zqJMZYD<7)7VKN3gz>ih!Tlw_96pZK`*j%d1fV-o2;_8rh&+iYYJxC6SuvHO{?yS86 zlv+gt?R*e|nx8qR0K`G~%G=W~{x2eZ9|%JnAiuF!b6`&Ur26WS2r^wey1JBheh)QL znE3#xp@h+*P-aowbpuDm7YU}qR9^uh_tUs9gVevd{>_w@HtINh`ePH?ED%OPu_O9_ z?wjw*Qe$Gw1Ay)z4;K7Olnyul<6YO*$?ol$f$q%|$5rAs2cb|f{@86w>kU{8*nnr! z3{@_+=mHx2ocE%KBESk+#nRyo>YA&s{xZAsLP>Pwy|sz#cwT#xNQFJ)X9o0PPym-z zUF+DEi?A?rlROIYauSe-HQ`U^*i3M3MIe+af_0s0;1LxF^L3g3vA15*Pv$((k24>q2lG_TpPnPXrlHB z=E4p~W6UUo?o}4t;VDEY;@O$r`?9iT@1=QE*r(9X*`yz6Tov6I55+O>U*pEAatbqx z0dOOBia#_nrgX5a+gh^-VU%oNQ;@1Ql8z&AHvCkw*d1)pw*ya`mH@+mo=bi(hBWg&;AznXR!1_k$B@{_@lNrB zcOADSuXSGr+yZ?W^i6?4n-YlEQ%1);NG*7WA<-Qpogu0gBMt~5uv~3WF6Xjo}Hc8Zp`H15n-mRD^ z2zzw~PGw~+VTb&;y)*yf0&EpdZiNv5l&LX*RRMNT{aqsAn;Teg60(?@hS3^^0^)z3P6Wt_kUH^!Q;@j>VU#08#nYDs&qG^& zBLCxy^$%56eh!SoB0jn=_}27*X3jtF*#UB@`Z25R{+m+BlS_OS6YvTgy%aX^MyD&( zkOrJ7#RLsnU9d&K4mBAEWN$GLWe3g?7y#awjRNRjfebkP#;B67Aoko>oiTl+#9}j1 z0TH0$d-~KK6}$yo6PRng1ACQ?C>LXGtr4GYG5_ZrGQ5~Zf(4u~4}Z@$6BXmji=gKL zh7FPb;mWwp90yD;O!e=)*@bHf(vWn7*da^l3~+4AI1jyaa&=L*<5v8c1s7$uD1xGa znNh0}fGbKQR9O)Nzic+acW!C3*53t4#a~aiiPbf4p5JO@$lW%Gih_wEPJasee0%&q zyW7pyzAHjsXx&cHZ2|(3&w?KjzRJ?kAOP^8%Zri;)fd`F*$oO&I4SyW#lUpKEN{08 z5nBHsmAgDc5D1$)?~;8IGy`t^KUuCab1u5W<3kE_%wT9XNP=D@fr9ZMA2GXhSS#Sb zOF-nsc+5Nx0SslbEJFj;jJ*E_OhijRMSUZ75SEwbt~dr*Ie@La+OoEp-z-=giDX83Td5wk36Jm( z_5!6f7Dk1AYN5hCE8vKc+IJ*IU~a@F9jkYKi-v zgMUHA{{xUjCgFMc+GroNV6;z4!wLu>pz%FNfxY-{dQJp@bb0HM5QNNv8)g&(h*F~7 zVaBh_EK|b0$?7st7GTC+L8~bWzk8Wb-8jYkMUHw$z^lPiB3B2`EbwJGuhO)3TlD2< zpI@j2r_v`Ub^`;?aj0wmWo%Cp#*JF_8B*I4Yik{Q8RKO0& zY(kp}lE*KJVFhBan00ps-!Onvhdog%=y{$7M2WTZM*%hye~L9vpwxGV5GRDJAK?A+ z!)~hpSk(*AAfF&MEkR@pp`9u-(~lubM}_Y$5#K}~Wc@|LCH0uZ*agtg&{%zxjC^dZ zeC#A`yzGE4G(mnr0Umx)9)1ZuenCkAen|l_E`EMVe*Uu&UE5@O1FC2L|G&c$_h*ye H7`XpGa|e3Q literal 22205 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 G#Qy+n+akOG diff --git a/docs/dev/apple-touch-icon-60x60.png b/docs/dev/apple-touch-icon-60x60.png index f55c5e02df71d8988e09aaee7fb280b8c29c073f..bb591f25f140f61e692fbf4549906a549ec51665 100644 GIT binary patch delta 2809 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 RD=;uRFfexB&&!id8*l%W(>(wH delta 6940 zcmY*eWmpt#7p5BoB&AC_mXz*BQ0eZHT0ml{C6^BARzgx>>6F+drCUN_r9`@<7Wnr4 z`TdxgYp$8|ob%kL?lW`C&?AxN1I7nxnEIljQIr37pgVt>dxwUGhWkPDwJPp54haPl zcbDnmEgISj4NVnAgTU3D!r)AU#iA4WzR;=an)>640xD80BGwsV6)bFn5EWLJkaW_r z-`g)~{c_Lp{9Z2%1~(g7@Ls4d`Ef`9yk9!?fT}bzDU(WjO7TSFn17dn=`dSL@rZwX z7PVZo^s@@ykk>VQyO{ddGvu{XnA_D~U)`dSUmF+qq1ORVQ@_k_^z2@@UeN&E;nd+z zS<=Xc2&itqd|l|Cv!x2!cC&zjzK3iCGXSpQXj0g;eYc#k#1%f@4Z~b4xs9S?JddVY zvypS#loRRyRaM97*-xzoHh~;i4#}S+)!rE@ySr+c;lW(<(h{XH^gj^?42$&<#K^yb zh#T9iI%BOnW0?3-gk`lMv`c^^R_arr`c)sRnwCFM3IbB}C?OU2N)fvCAs(`^_*Xg6 zvuGGW#MCqx=W}RH_)g&WHd}Gvy{&frk2C{Aw;DbYsYo=fQdUjyG1x!}G1xC8K`F$^ zP#$}`Yr44?0aazb5rtpsqkpY#W3*1|u#FVv)8+2%ty5B~|JoEN{nCZZpjY81+W3kt^1cin;DGWFcEaF}7VS7o;Tccv7hv!LB z)vNHAu%jcwRT3OlkVzacDE7oi0B#|Q#fZ=&@6aQH((7?}bg)ND|648Wmg1foCO}kS zCvahnN6d4kvC@22gG=s*cUJc^ZS7NMA)HH~TAvRxez&JGKzCPzJ`C!MM65mIt+%jN zyt3xq{LCP$n}zNQ?Pq~$SgRwm3EpvHInkafFuNO)hJe@mL*2v07MC(8HD2f%p6YQU z=o$tms&+Jg?9A}$5#wd9`*&U>g~tGEYV*Jg&Oye3pLs-6T@cH(h`Ns38`vcq=07zL zSpajmEtSOqY*LzDWM_qdZOtx?QY)~Ao@<2A1klHEj`UxUc;1XCXpGxo2{rn8D|dfKU&Iyq$?K8CZP0r|KjKYF7RgLwQnf2n|1ui2 zZ9?e~a7(2G7kt_mnSIM;8)Ol_bD8M~&+9*m&FXw_sq@T~QliBShn@B6QGrL!f6>s` zHVKjET+A)G2ch#+P`R1(3Y(Xn@kyfAw$cTY+rf_i$z!o$2U3aAuI}GlHCC(0+L3* zlZR(E-#2OfIN_3^lr<%LzybD?G0L+HFY$B-g>_$Fp;AH62(o)^c5^lEN8J5#!_fAAjY_klrYz`q#|4#PkG5^|5a{^`{qgY)y$?k%&(14;r5HfrFIwS~s!C23VDrNRF^$r*OS=2IcmVjd*~l>3_o}dt06(nxSMeazBinz;fgL~710d0|w{^KeE;V(yRXVI21e=v! zHK(}>c+YWI5qPn=nwV)z@+?shj4`d13}_H61Y^xX6k3PcDQ z61=`{3Rc`ykAYnB+(RWDdb@Aa+;FbPUefb|LmfizDS91Co0~Xotsk%4h|kW zJFfG*_DE6;XUm3uks7`|DlQ^QF6&+_5gY+TMiiP~|H}c}fW7WRJ@%epLJp6}TjXi1 ze0ft-)3!`5B~yEpJIz8trlG5B@WJ&&8gmCPrI!NWi>#aZV>y z(!kh|vR(o_EEI5Tp_W85kfA3Rztn}5Oa6|tCMvgzlk{7fJ(6RXLYNa9jZ7y`D+hhz z65k|X$VzvhK(4sgcTd;jjX!hOT)KpX;Gm5aLw}L?-=5wdVj~e z6L?Lkpm_N99fQpvW7;+|7P}Nmc_KJ@Q`p^pCEHc;b^Us1CLUZ_`I~d@?}5D#_zda4 zq3BA8Ne`uQA*l;h8?J$?hAAwz4a(_xX4eWIFp;wa(le?tg=bylM_|-s^5An2<{qrI zBszh$>B$?h>JR>%79;%`7049nqA-RbFl{+89!W^0eqw~M`0h?1f;a9Nv$C>W z>Sp`hH%ejsFV1o$gT>|VW>c$bYY*Dr;wOVk)ZoTah+uUh!g)xeVtJP62!=K$8wT9( z2)$WaY%M(@RuA~QrJukR~Fl9NP%wJ|8MnAG)L;otev(vS?FqYor zdcmQjtxd?!&(HPcjn>u7YqAnJwFTl%U?^S+LvxRZ0b>$CL#+@Sss5g#^@R+XQwL<) zS=kN;;sXE9B5og2(9m)pjZwsdQ3Iw&T%wy)J6~ce1$feOtc_ZvUSk>jA~AbYXWP!!L!KIV$Y4&xL_^gcYj9v6=DRbSc5Roi zxJZ@J%u*Q$Da+2h65v|f;{Jksgf;d-Daii*{R^}su_K~}ki^cq!{IKn%-{%DI(SYq zRiZG}7%McgaI23h$~pawEm1NhS$F{BY$1)x1{J|N(Si#+vJ4%qHueX7TTDt%EOGW_ z8HUe#$YRlD>k<*2c+w~2HfN#VKgq&l!d5jCH;|}K@x&nh^Ps>FUY{p@`Fpcl;|i+g zlvGX&>>$M6a4e=J4x(i58}LXi2(w23dV`?xES&Z~#4j*a#YO~=BZqzy*f zCW}gsxc6@rPgIFSm7>`@lPiL2Y&93#UN8H-?|vpk$~u{b4`BJRaIzOu=h2yw7nX=^ z=5(s41R|WrZ;b)ZM83ovk9VI}w5o9%{%PyE`JGrk?@DAt2j^fv9h~_S&Gpvam?pzW z0>5NPAKHCIQVA~fA;2Y}XD-q$Yjqk*pnMy<+SHLrKyQ=9030a_nCtRlN|pUbqs86k z`SbfhL!Z^Tp>)t?qk%SO#T#0}Tr#dlv3&q9^v1JNxz;g`w#o)*m4$n_7;Wb)b9Y!+ z8Sb+bz^nOGSF)7EYUUnAVwMlpA?@Q;^~<76v(%%-x?d4$ESsY(fOjuLiM%OyM2} z?7|v*z5sB@JDT1i@4#u{5m_M>G`-FJ_d{#CnHmn^KYP!cO3j}Deb#T^MjUjx)Qvec zyNB*js&Lc4)#034N$;0)!{P6^F>hnW;gb$BDDDgD_PTyZREjNfSz49TjHc4|jiM_X z#;e4hd$xAz@glJI-I-F8M4HZ6-|>>V#%@OUh>{@qQ?cZJc}C#r0B#<@9!HU;6kVHp z*w#0hJ&%WET!&ihLU6M*QGh4p(6T2GAh8ZqZV>#^9!i*7!!PiR{$HX~-ce(}FU{=h zMB-ugfXS|MXt`PGn?s}G$Gh|$-#b-MXc6Ib**=9E9UZ8zF8Tf2q#T;c>Q`lu1t_oU z#rgpFTj20%^QTAApn^`S%b5~oEJff~o0-ZSTGr4Hk#7shd6rDYz06puAMf}d!YT1& zj9Fv=DjJ&A?G#dX59^g1X$uPUwpAwVnQs<c&nw`;2uM%h)~H#76|NqG3oisf|`E{R@u0LG+F8Jd9GHah1CG=*_+ z?4|&2wgIfxd*&g+kg*|*Jg!sEpsr+u4M8SKN;T|@$8+t>au{~+;otWl-WGb8ee&&^ zkxty5>%+&cjXpuW=lw%zEbsBffNwW}21KcYA&*|`TTT+g)uG|pxZBXkR(yC3!7B&C zpYq<9#T5KZnGb;`muMcP&%SD8K5~VCmwAI+i)wU43R!~}eW z%JkB*SFyhkJvWqxM4h@!?2S+|KK+rJAmBS>^*WDlqA|CJTzLmd$TNdT=MWv}***fq`8&4 zzo7MF56t+w^Z@4^HV(|Cuj7pR7puEIKy&Y^7rwL#C* zf!M+!h*u=fIdvUYnj8;Tnq$2}56l-97tdgXf-^sUj4t>76MLywJkjQ{hGJb?#lgq6 zbLE=u8@)v-DJ0-x@FR#yz#{IT3uPaw!-As8*wlc_mH}j`Bh}T_C0$+l#@3-(s9gfW zkbzb~`y57fW<$~V&rLdjEW+^D+!kL+&GcMAQMOegY0Vy`#ApD1~a zfXAJCb2BsjDGbsky&<46ljdHXEX>-Q=?fWguU`}36Yx{8TJnn_l;NE_+2*;zjsy}L zAtGBNsm^D=hyGg#0>Sa@Ia5mlw6wLQ>%8pTD-P~BY#P5g4(Llfx$mggmMR*)4kclb z8bndS&i#r47Z;b!iUQBlrlxcuqW!;rdEyWv(=r(-P4}XrqQI*~>Gy87tiZf+9{6n@i?iJE&U3XVwx|+t8c8=G9k(fXB|y&MGP^W45pRXtQL= zy-7J1VWLVNIU3V%^I&6jUulYQ7a!-yv4{jfP*W%-^!*|a3UW2!yzK>jJ;&XNJOg86 zeM`&9$A|ls4sSN+B0nnqO0cfua=m3sdwa9fBi{5> z{APm-)%u{#2wWF8x3bpOET*TM5h7aQ=%cmvi?xl%Y?NBiUeU;EMivvJV=Umjv7klzgwDv?rMMdTB zxc{AOfTugWw_ZIVFHlwa@JD0RzkmKHq~OTgi&--ihj(#xwH-_6aQ^{~@K|d*+s@GQ z`M2UM5_o;Gs)#$yYrYn8a0_&JZ<;L!0 z!N{N4GSf~Uj%k?-qSn^diDKD;Wvk$1A)-zc9Ri`6=1RL4Q<-|I)5G0W436z!99fJP z&PmS&2{AG8M7~(!-Y0PJ2otyv6PM(_L=blTPO(&PIga8Yxw66HhK7dV!`0SALcyLi zRD#VeEDZ8C^t|KJMveGx%XM%<3i1Y{y}uoS zXRgL278D$v+{@Y02>TzJ{MUAdlW5@{?LXDr+;~&AGLuqKwW_9uCuBo#d*S!lE7Uwc zHKp6KgmN9~&K||Tcj~*3mE0zO25h|M$%1(orbm}Knwn%AYQ&6ed6UOuSz21gWDDl$ zlxDJKjD61Jk=eMAp&#L9mk-_G{HQ^iI-=>^6&DN1Glg@w)^T=ptwdVW++fa_${6)6 z#}hN{ulHKlgQNIu9ecb>i~ayVLTMa59o6hDuMCOVg7dxKlT7Y!>V7uLKtCxkf_V)M;G)?ao5%mQzewSQF~ zIoiP$Dy9lqMm;>RtgY%ql(YYe2J4XS7Z!%?TW$IpP|0UdTK4clXJjn9ud1Ny4MVbM69~=FDcu{7TBxv$?ZwM16Ig2gj5U(0Z{*_@U4l>)_-s$#6o#C<+Fm zcWo4;i!Vy?O_V~>a{LBp1@3EEi|3P`q9{@u$jWG|>BQvZjs7DaEl3mO zP;%%4VB$~-#;n0W=va5il<7oG7kI<_VqjZs2q@>LGhw2kB?EIk9Ayr2{>zBl;g@G> z{D!8FFVRc3b5cLT^yTYG#aMr^>JUVOd7BdQis`GwWl9mtmN4_EooYR7Xpf(@Rt0hB zj_>!{uwkDS&aP#ShLjPw4;?f4S!V4`WbHe+*z7xDBq!=MiOmFR-XLR`Z;okwv)XM- z;(p`QppEQ=hA8v~L(jXq7MY<8nvMK~jV$6fGH~Y@w;k{kKx#J=yp(qZor9YwH?=m9 zOT201j&I5FoN*F(Eys1v9M$O`WuxWIfLxm=A0)pX_k)=6b3fa7H*_$U>s${-4iT4Nbm~u%_o3~Vtj@^_?@(j-$3mB4fU$M1xd~cmt zP&m@*Z&12Xo|wsgpt)SwV6XwX)zppP#=}*x6Qu_&o|@{^(I*JLMuC-yQe6W_W2j=E zh6y+P+Y7^d-8;~3HaeRgxWfGikkhQlpysD%SBZBid8>`RsDD!&A5={~IM{x0l(P46 zL|xE?g@lFpg~a&*q6Wf3QX&8;Q2?)yu#}L{&$?ru{}b@=a&UD5{ht8Y|4E>ro61Na G@%kUG%z4cK diff --git a/docs/dev/apple-touch-icon.png b/docs/dev/apple-touch-icon.png index d7ddf26669a25edcd0ae27e04853dd15cbf7a1f8..08d9eb572c5569aacedee03b711319041315447a 100644 GIT binary patch delta 11100 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 literal 22205 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 D3SuIk diff --git a/docs/dev/articles/espn_authentication.html b/docs/dev/articles/espn_authentication.html new file mode 100644 index 00000000..2ce5e365 --- /dev/null +++ b/docs/dev/articles/espn_authentication.html @@ -0,0 +1,258 @@ + + + + + + + +ESPN: Private Leagues • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +

    This vignette details how to connect to ESPN private leagues by retreiving the ESPN_S2 and SWID parameters from a live login. This cannot be done programmatically at this time.

    +
    +

    +Instructions

    +
      +
    1. Visit your main league page (i.e. https://fantasy.espn.com/football/team?leagueId=899513&seasonId=2020)
    2. +
    3. Make sure you are logged in.
    4. +
    5. Open Developer Tools (on Chrome/Firefox, right-click anywhere on the page and select Inspect Element)
    6. +
    7. Go to Storage (for Firefox) or Application (for Chrome) and browse the Cookies available for fantasy.espn.com +
    8. +
    9. The values for SWID and ESPN_S2 are the parameters that are used by ffscrapr to connect to your private league. You can right-click and copy the values from here.
    10. +
    +

    The most convenient way to handle these in any project is to store them as environment variables. You can run usethis::edit_r_environ() to add these to your user environment, by adding lines that look like:

    +
    TAN_ESPN_S2="AECt%2F12312Dwd5ktQSzfuG"
    +TAN_SWID="{1E6CC139-}"
    +
    +

    The above values are both truncated (for security purposes) but ESPN_S2 is often over 250 characters long and SWID is about 38 characters long including the curly brackets.

    +

    After adding the above lines to your .Renviron and restarting R, you can access them in an espn_connect call by using Sys.getenv as per below:

    +
    conn <- espn_connect(
    +  season = 2019,
    +  league_id = 899513,
    +  espn_s2 = Sys.getenv("TAN_ESPN_S2"),
    +  swid = Sys.getenv("TAN_SWID")
    +)
    +
    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/espn_basics.html b/docs/dev/articles/espn_basics.html new file mode 100644 index 00000000..14f03c0d --- /dev/null +++ b/docs/dev/articles/espn_basics.html @@ -0,0 +1,429 @@ + + + + + + + +ESPN: Basics • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on ESPN, pulling in roster data.

    +

    We’ll start by loading the packages:

    + +

    In ESPN, you can find the league ID by looking in the URL - it’s the number immediately after ?leagueId in this example URL: https://fantasy.espn.com/football/team?leagueId=899513&seasonId=2020

    +

    Let’s set up a connection to this league:

    +
    +sucioboys <- espn_connect(season = 2020, league_id = 899513)
    +
    +sucioboys
    +#> <ESPN connection 2020_899513>
    +#> List of 4
    +#>  $ platform : chr "ESPN"
    +#>  $ season   : chr "2020"
    +#>  $ league_id: chr "899513"
    +#>  $ cookies  : NULL
    +#>  - attr(*, "class")= chr "espn_conn"
    +

    I’ve done this with the espn_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    +

    Cool! Let’s have a quick look at what this league is like.

    +
    +sucioboys_summary <- ff_league(sucioboys)
    +#> Using request.R from "ffscrapr"
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +str(sucioboys_summary)
    +#> tibble [1 x 16] (S3: tbl_df/tbl/data.frame)
    +#>  $ league_id      : chr "899513"
    +#>  $ league_name    : chr "Sucio Boys"
    +#>  $ season         : int 2020
    +#>  $ league_type    : chr "keeper"
    +#>  $ franchise_count: int 10
    +#>  $ qb_type        : chr "2QB/SF"
    +#>  $ idp            : logi FALSE
    +#>  $ scoring_flags  : chr "0.5_ppr"
    +#>  $ best_ball      : logi FALSE
    +#>  $ salary_cap     : logi FALSE
    +#>  $ player_copies  : num 1
    +#>  $ years_active   : chr "2018-2020"
    +#>  $ qb_count       : chr "1-2"
    +#>  $ roster_size    : int 24
    +#>  $ league_depth   : num 240
    +#>  $ keeper_count   : int 22
    +

    Okay, so it’s the Sucio Boys league, it’s a 2QB league with 12 teams, half ppr scoring, and rosters about 240 players.

    +

    Let’s grab the rosters now.

    +
    +sucioboys_rosters <- ff_rosters(sucioboys)
    +#> No encoding supplied: defaulting to UTF-8.
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +head(sucioboys_rosters) # quick snapshot of rosters
    +#> # A tibble: 6 x 10
    +#>   franchise_id franchise_name player_id player_name     team  pos   eligible_pos
    +#>          <int> <chr>              <int> <chr>           <chr> <chr> <list>      
    +#> 1            1 The Early GGod   4036348 Michael Gallup  DAL   WR    <chr [7]>   
    +#> 2            1 The Early GGod   4036131 Noah Fant       DEN   TE    <chr [6]>   
    +#> 3            1 The Early GGod    -16003 Bears D/ST      CHI   DST   <chr [3]>   
    +#> 4            1 The Early GGod     15920 Latavius Murray NOS   RB    <chr [6]>   
    +#> 5            1 The Early GGod   3055899 Harrison Butker KCC   K     <chr [3]>   
    +#> 6            1 The Early GGod   4241372 Marquise Brown  BAL   WR    <chr [7]>   
    +#> # ... with 3 more variables: status <chr>, acquisition_type <chr>,
    +#> #   acquisition_date <dttm>
    +
    +

    +Values

    +

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    +
    +player_values <- dp_values("values-players.csv")
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +# The values are stored by fantasypros ID since that's where the data comes from. 
    +# To join it to our rosters, we'll need playerID mappings.
    +
    +player_ids <- dp_playerids() %>% 
    +  select(espn_id,fantasypros_id) %>% 
    +  filter(!is.na(espn_id),!is.na(fantasypros_id))
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +# We'll be joining it onto rosters, so we can trim down the values dataframe
    +# to just IDs, age, and values
    +
    +player_values <- player_values %>% 
    +  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    +  select(espn_id,age,ecr_2qb,ecr_pos,value_2qb)
    +
    +# we can join the roster's player_ids on the values' espn_id, with a bit of a type conversion first
    +sucioboys_values <- sucioboys_rosters %>% 
    +  mutate(player_id = as.character(player_id)) %>% 
    +  left_join(player_values, by = c("player_id"="espn_id")) %>% 
    +  arrange(franchise_id,desc(value_2qb))
    +
    +head(sucioboys_values)
    +#> # A tibble: 6 x 14
    +#>   franchise_id franchise_name player_id player_name     team  pos   eligible_pos
    +#>          <int> <chr>          <chr>     <chr>           <chr> <chr> <list>      
    +#> 1            1 The Early GGod 4242335   Jonathan Taylor IND   RB    <chr [7]>   
    +#> 2            1 The Early GGod 4241985   J.K. Dobbins    BAL   RB    <chr [7]>   
    +#> 3            1 The Early GGod 2976316   Michael Thomas  NOS   WR    <chr [7]>   
    +#> 4            1 The Early GGod 4241479   Tua Tagovailoa  MIA   QB    <chr [5]>   
    +#> 5            1 The Early GGod 4040715   Jalen Hurts     PHI   QB    <chr [5]>   
    +#> 6            1 The Early GGod 4239993   Tee Higgins     CIN   WR    <chr [8]>   
    +#> # ... with 7 more variables: status <chr>, acquisition_type <chr>,
    +#> #   acquisition_date <dttm>, age <dbl>, ecr_2qb <dbl>, ecr_pos <dbl>,
    +#> #   value_2qb <int>
    +

    Let’s do some team summaries now!

    +
    +value_summary <- sucioboys_values %>% 
    +  group_by(franchise_id,franchise_name,pos) %>% 
    +  summarise(total_value = sum(value_2qb,na.rm = TRUE)) %>%
    +  ungroup() %>% 
    +  group_by(franchise_id,franchise_name) %>% 
    +  mutate(team_value = sum(total_value)) %>% 
    +  ungroup() %>% 
    +  pivot_wider(names_from = pos, values_from = total_value) %>% 
    +  arrange(desc(team_value)) %>% 
    +  select(franchise_id,franchise_name,team_value,QB,RB,WR,TE)
    +
    +value_summary
    +#> # A tibble: 10 x 7
    +#>    franchise_id franchise_name                team_value    QB    RB    WR    TE
    +#>           <int> <chr>                              <int> <int> <int> <int> <int>
    +#>  1            5 "The Juggernaut"                   51211  7661 20007 17334  6209
    +#>  2            6 "OBJ's Personal Porta Potty"       47172 19545 23252  1394  2981
    +#>  3            2 "Coom  Dumpster"                   46885 16317  4032 24880  1656
    +#>  4            7 "Tony El Tigre"                    43408 14142 17399  4988  6879
    +#>  5            4 "I'm Also Sad "                    42807  2951 17737 17570  4549
    +#>  6            1 "The Early GGod"                   39982 11452 14925 10705  2900
    +#>  7            3 "PAKI STANS"                       39137 12951 11897 12607  1682
    +#>  8            9 "RAFI CUNADO"                      36116 10172 11676 13015  1253
    +#>  9           10 "Austin <U+0001F410>Drew Loc~      25240 10278   414 14444   104
    +#> 10            8 "Big Coomers"                      20671  7894  1336 11281   160
    +

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    +
    +value_summary_pct <- value_summary %>% 
    +  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    +  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    +
    +value_summary_pct
    +#> # A tibble: 10 x 7
    +#>    franchise_id franchise_name                team_value    QB    RB    WR    TE
    +#>           <int> <chr>                              <dbl> <dbl> <dbl> <dbl> <dbl>
    +#>  1            5 "The Juggernaut"                   0.13  0.068 0.163 0.135 0.219
    +#>  2            6 "OBJ's Personal Porta Potty"       0.12  0.172 0.19  0.011 0.105
    +#>  3            2 "Coom  Dumpster"                   0.119 0.144 0.033 0.194 0.058
    +#>  4            7 "Tony El Tigre"                    0.111 0.125 0.142 0.039 0.242
    +#>  5            4 "I'm Also Sad "                    0.109 0.026 0.145 0.137 0.16 
    +#>  6            1 "The Early GGod"                   0.102 0.101 0.122 0.083 0.102
    +#>  7            3 "PAKI STANS"                       0.1   0.114 0.097 0.098 0.059
    +#>  8            9 "RAFI CUNADO"                      0.092 0.09  0.095 0.102 0.044
    +#>  9           10 "Austin <U+0001F410>Drew Loc~      0.064 0.091 0.003 0.113 0.004
    +#> 10            8 "Big Coomers"                      0.053 0.07  0.011 0.088 0.006
    +

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    +
    +
    +

    +Age

    +

    Another question you might ask: what is the average age of any given team?

    +

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    +
    +age_summary <- sucioboys_values %>% 
    +  filter(pos %in% c("QB","RB","WR","TE")) %>% 
    +  group_by(franchise_id,pos) %>% 
    +  mutate(position_value = sum(value_2qb,na.rm=TRUE)) %>% 
    +  ungroup() %>% 
    +  mutate(weighted_age = age*value_2qb/position_value,
    +         weighted_age = round(weighted_age, 1)) %>% 
    +  group_by(franchise_id,franchise_name,pos) %>% 
    +  summarise(count = n(),
    +            age = sum(weighted_age,na.rm = TRUE)) %>% 
    +  pivot_wider(names_from = pos,
    +              values_from = c(age,count))
    +
    +age_summary
    +#> # A tibble: 10 x 10
    +#> # Groups:   franchise_id, franchise_name [10]
    +#>    franchise_id franchise_name     age_QB age_RB age_TE age_WR count_QB count_RB
    +#>           <int> <chr>               <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    +#>  1            1 "The Early GGod"     23.7   22.3   24.7   25.8        4        6
    +#>  2            2 "Coom  Dumpster"     28.4   26.5   26.8   25.7        4        7
    +#>  3            3 "PAKI STANS"         28.3   24.9   23.6   25.7        3        6
    +#>  4            4 "I'm Also Sad "      35.8   24.6   28.4   27.1        2        5
    +#>  5            5 "The Juggernaut"     24.5   24.2   31.3   25.2        3        8
    +#>  6            6 "OBJ's Personal P~   24.5   24.4   25     24.3        3        6
    +#>  7            7 "Tony El Tigre"      24.5   24.7   27.5   26.2        3        5
    +#>  8            8 "Big Coomers"        23.8   27     28.7   27.2        3        7
    +#>  9            9 "RAFI CUNADO"        34.6   25.5   26     24.1        3        5
    +#> 10           10 "Austin <U+0001F4~   31.4   27.8   31.8   24.9        3        5
    +#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    +
    +
    +

    +Next steps

    +

    In this vignette, I’ve used only a few functions: ff_connect, ff_league, ff_rosters, and dp_values. Now that you’ve gotten this far, why not check out some of the other possibilities?

    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/espn_getendpoint.html b/docs/dev/articles/espn_getendpoint.html new file mode 100644 index 00000000..f39fd01c --- /dev/null +++ b/docs/dev/articles/espn_getendpoint.html @@ -0,0 +1,351 @@ + + + + + + + +ESPN: Get Endpoint • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +

    +ESPN API - An Adventure Into Uncharted Territory

    + +

    Accessing the ESPN Fantasy API is a bit of an adventure into an undocumented abyss. This vignette will give you a bit of a rundown on how to use espn_getendpoint and the lower-level espn_getendpoint_raw, talk about the x-fantasy-filter, and detail some of the known view parameters that could be helpful.

    +
    +
    +

    +Known Endpoints

    +

    The ESPN Fantasy API is typically accessed from two endpoints:

    +
    https://fantasy.espn.com/apis/v3/games/ffl/seasons/{season}/segments/0/leagues/{league_id} # for 2018 onward
    +https://fantasy.espn.com/apis/v3/games/ffl/leagueHistory/{league_id}?seasonId={season} # for 2017 or earlier
    +

    Here’s a non-exhaustive list of view endpoints that I know of:

    +
      +
    • mTeam
    • +
    • mMatchup
    • +
    • mRoster
    • +
    • mSettings
    • +
    • mBoxscore
    • +
    • mMatchupScore
    • +
    • kona_player_info
    • +
    • player_wl
    • +
    • mSchedule
    • +
    • mScoreboard
    • +
    +

    Please note that calling various combinations of these views at once can often return different results than calling them separately.

    +

    A good way to stumble on these endpoints is to load Developer Tools in your browser, go to the Network tab, and then interact with the fantasy.espn.com site to see what API requests the main page is making.

    +

    Alternatively, you can consult the source code of other API packages (including those in other languages) which might give you a bit of a better idea of what’s possible!

    +
    +
    +

    +Using espn_getendpoint

    +

    ESPN’s API is mostly structured as making requests of different views against the main league endpoint.

    +

    For example, https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail

    +

    will pull up draft details for the 2020 league ID 899513. espn_getendpoint helps facilitate this request by allowing you to instead write:

    +
    +conn <- espn_connect(season = 2020, league_id = 899513)
    +
    +draft_details <- espn_getendpoint(conn, view = "mDraftDetail")
    +
    +draft_details
    +#> <ESPN - GET https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail>
    +#> List of 8
    +#>  $ draftDetail    :List of 4
    +#>  $ gameId         : int 1
    +#>  $ id             : int 899513
    +#>  $ scoringPeriodId: int 18
    +#>  $ seasonId       : int 2020
    +#>  $ segmentId      : int 0
    +#>  $ settings       :List of 1
    +#>  $ status         :List of 21
    +

    This will automatically pass in the league ID, season, and authentication cookies (if used) from the conn object and place it into the request.

    +

    You can also use the lower-level equivalent, espn_getendpoint_raw, which does not build the URL from the conn object but still uses the conn object to pass along any authentication cookies:

    +
    +draft_details_raw <- espn_getendpoint_raw(
    +  conn,
    +  "https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail")
    +
    +draft_details_raw
    +#> <ESPN - GET https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail>
    +#> List of 8
    +#>  $ draftDetail    :List of 4
    +#>  $ gameId         : int 1
    +#>  $ id             : int 899513
    +#>  $ scoringPeriodId: int 18
    +#>  $ seasonId       : int 2020
    +#>  $ segmentId      : int 0
    +#>  $ settings       :List of 1
    +#>  $ status         :List of 21
    +

    These are equivalent requests. One reason to use the “raw” version is to be able to pass multiple view parameters such as view=mDraftDetail&view=mSettings as the query, which is not possible with the main endpoint function because it only accepts one option for the view http query.

    +
    +
    +

    +X-Fantasy-Filter

    +

    Many of the endpoints are also affected by a JSON header, X-Fantasy-Filter, which can filter/sort/limit (or remove limits) from the API response. Here is an example of how to build up a valid JSON x-fantasy-filter, sourced from the code for ff_playerscores:

    +
    +
    +xff <- list(players = list(
    +  limit = 5,
    +  sortPercOwned = 
    +    list(sortAsc = FALSE,
    +         sortPriority = 1),
    +  filterStatsForTopScoringPeriodIDs = 
    +    list(value = 2,
    +         additionalValue = c(paste0("00", conn$season)))
    +  )) %>%
    +  jsonlite::toJSON(auto_unbox = TRUE)
    +
    +xff
    +#> {"players":{"limit":5,"sortPercOwned":{"sortAsc":false,"sortPriority":1},"filterStatsForTopScoringPeriodIDs":{"value":2,"additionalValue":"002020"}}}
    +

    This JSON limits the total responses to 5, filters the “statIDs” returned to just the ones prefixed by “00”, and sorts the whole thing by percent owned, descending.

    +

    I’m not exactly clear on what all of the options for x-fantasy-filter are, but you can use it to emulate what’s happening in the request on fantasy.espn.com.

    +

    Both the espn_getendpoint and espn_getendpoint_raw functions can accept x-fantasy-filters. espn_getendpoint has an x_fantasy_filterargument that takes the JSON object created above, while espn_getendpoint_raw requires that the object is converted into an HTTP header first.

    +

    Examples here:

    +
    +player_scores <- espn_getendpoint(conn, view = "kona_player_info", x_fantasy_filter = xff)
    +
    +player_scores_2 <- espn_getendpoint_raw(
    +  conn,
    +  "https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=kona_player_info",
    +  httr::add_headers(`X-Fantasy-Filter` = xff))
    +
    +
    +

    +Other ESPN API resources

    +

    Kiernan Nichols’s fflr R package is an R package available on CRAN that is built specifically for ESPN API access. As of this writing (2021-03-03) it only supports public leagues, and has a few style differences as a light-weight/lower-dependency package.

    +

    Many of the API endpoints are being researched in other languages and you might be able to draw inspiration on what’s possible by checking them out:

    +
      +
    • Christian Wendt’s espn-api Python package was incredibly helpful in discovering the known and documented API endpoints.

    • +
    • Mike Kreiser’s ESPN-Fantasy-Football-API is a well-documented JS client.

    • +
    • Steven Morse also has several great blog posts on using the API, mostly accessed via Python.

    • +
    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/ffscrapr_caching.html b/docs/dev/articles/ffscrapr_caching.html index 595a6dd0..65d8f494 100644 --- a/docs/dev/articles/ffscrapr_caching.html +++ b/docs/dev/articles/ffscrapr_caching.html @@ -5,7 +5,7 @@ -Managing ffscrapr's Cache • ffscrapr +ffscrapr: Managing Cache • ffscrapr @@ -17,10 +17,13 @@ - - + + + + - + + @@ -43,7 +46,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -51,7 +54,7 @@ + + + @@ -105,12 +176,13 @@ -
    +

    How can I clear the cache?

    You can use the following function to clear the cache (whether it is in memory or on your filesystem):

    -
    -.ffscrapr_clear_cache()
    -
    +
    +.ffscrapr_clear_cache()
    @@ -192,7 +261,20 @@

    - - - + + diff --git a/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/ffscrapr_scoringhistory.html b/docs/dev/articles/ffscrapr_scoringhistory.html new file mode 100644 index 00000000..0e8d05f3 --- /dev/null +++ b/docs/dev/articles/ffscrapr_scoringhistory.html @@ -0,0 +1,247 @@ + + + + + + + +ffscrapr: ff_scoringhistory Limitations • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +

    +Limitations of ff_scoringhistory

    +

    For all sites:

    +
      +
    • Official NFL lateral scoring may be different than MFL scoring
    • +
    • Special team TDs are not broken down into punt returns, kick returns, and FG returns in nflfastR load_player_stats so the kick return scoring was applied to all special team TDs
    • +
    • No support for IDPs, team defenses, kickers, coaches, fumbles, return yards, offensive fumble recoveries
    • +
    • Support for eccentric rules (bonuses for long plays, conditional rules) will be added on a request basis
    • +
    +

    For Fleaflicker: - Does Fleaflicker allow for ranged scoring rules like MFL? (assume no)

    +

    For Sleeper: - Does Sleeper allow for ranged scoring rules like MFL? (assume no) - Does Sleeper allow for positional scoring rules? (assume no)

    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/fleaflicker_basics.html b/docs/dev/articles/fleaflicker_basics.html new file mode 100644 index 00000000..d8596446 --- /dev/null +++ b/docs/dev/articles/fleaflicker_basics.html @@ -0,0 +1,430 @@ + + + + + + + +Fleaflicker: Basics • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on Fleaflicker.

    +

    We’ll start by loading the packages:

    + +

    In Fleaflicker, you can find the league ID by looking in the URL - it’s the number immediately after /league/ in this example URL: https://www.fleaflicker.com/nfl/leagues/312861.

    +

    Let’s set up a connection to this league:

    +
    +aaa <- fleaflicker_connect(season = 2020, league_id = 312861)
    +
    +aaa
    +#> <Fleaflicker connection 2020_312861>
    +#> List of 4
    +#>  $ platform  : chr "Fleaflicker"
    +#>  $ season    : chr "2020"
    +#>  $ user_email: NULL
    +#>  $ league_id : chr "312861"
    +#>  - attr(*, "class")= chr "flea_conn"
    +

    I’ve done this with the fleaflicker_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    +

    Cool! Let’s have a quick look at what this league is like.

    +
    +
    +aaa_summary <- ff_league(aaa)
    +#> Using request.R from "ffscrapr"
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +str(aaa_summary)
    +#> tibble [1 x 15] (S3: tbl_df/tbl/data.frame)
    +#>  $ league_id      : chr "312861"
    +#>  $ league_name    : chr "Avid Auctioneers Alliance"
    +#>  $ season         : int 2020
    +#>  $ league_type    : chr "dynasty"
    +#>  $ franchise_count: num 12
    +#>  $ qb_type        : chr "2QB/SF"
    +#>  $ idp            : logi FALSE
    +#>  $ scoring_flags  : chr "0.5_ppr, PP1D"
    +#>  $ best_ball      : logi FALSE
    +#>  $ salary_cap     : logi FALSE
    +#>  $ player_copies  : num 1
    +#>  $ qb_count       : chr "1-2"
    +#>  $ roster_size    : int 28
    +#>  $ league_depth   : num 336
    +#>  $ keeper_count   : int 28
    +

    Okay, so it’s the Avid Auctioneers Alliance, it’s a 2QB league with 12 teams, half ppr scoring, and rosters about 340 players.

    +

    Let’s grab the rosters now.

    +
    +aaa_rosters <- ff_rosters(aaa)
    +
    +head(aaa_rosters)
    +#> # A tibble: 6 x 7
    +#>   franchise_id franchise_name player_id player_name  pos   team  sportradar_id  
    +#>          <int> <chr>              <int> <chr>        <chr> <chr> <chr>          
    +#> 1      1578553 Running Bear       12032 Carson Wentz QB    PHI   e9a5c16b-4472-~
    +#> 2      1578553 Running Bear        7378 Cam Newton   QB    NE    214e55e4-a089-~
    +#> 3      1578553 Running Bear       15622 Joshua Kell~ RB    LAC   62542e04-3c44-~
    +#> 4      1578553 Running Bear       13358 Matt Breida  RB    MIA   6249d2c0-75dc-~
    +#> 5      1578553 Running Bear        7369 A.J. Green   WR    CIN   c9701373-23f6-~
    +#> 6      1578553 Running Bear       13782 Anthony Mil~ WR    CHI   bfaedf99-7618-~
    +
    +

    +Values

    +

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    +
    +player_values <- dp_values("values-players.csv")
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +# The values are stored by fantasypros ID since that's where the data comes from. 
    +# To join it to our rosters, we'll need playerID mappings.
    +
    +player_ids <- dp_playerids() %>% 
    +  select(sportradar_id,fantasypros_id) %>% 
    +  filter(!is.na(sportradar_id),!is.na(fantasypros_id))
    +#> No encoding supplied: defaulting to UTF-8.
    +
    +# We'll be joining it onto rosters, so we can trim down the values dataframe
    +# to just IDs, age, and values
    +
    +player_values <- player_values %>% 
    +  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    +  select(sportradar_id,age,ecr_2qb,ecr_pos,value_2qb)
    +
    +# ff_rosters() will return the sportradar_id, which we can then match to our player values!
    +
    +aaa_values <- aaa_rosters %>% 
    +  left_join(player_values, by = c("sportradar_id"="sportradar_id")) %>% 
    +  arrange(franchise_id,desc(value_2qb))
    +
    +head(aaa_values)
    +#> # A tibble: 6 x 11
    +#>   franchise_id franchise_name player_id player_name  pos   team  sportradar_id  
    +#>          <int> <chr>              <int> <chr>        <chr> <chr> <chr>          
    +#> 1      1578553 Running Bear       12159 Dak Prescott QB    DAL   86197778-8d4b-~
    +#> 2      1578553 Running Bear       12926 Chris Godwin WR    TB    baa61bb5-f8d0-~
    +#> 3      1578553 Running Bear       12032 Carson Wentz QB    PHI   e9a5c16b-4472-~
    +#> 4      1578553 Running Bear       13325 Austin Ekel~ RB    LAC   e5b8c439-a48a-~
    +#> 5      1578553 Running Bear       15531 Brandon Aiy~ WR    SF    c90471cc-fa60-~
    +#> 6      1578553 Running Bear        9338 Robert Woods WR    LAR   618bedee-9259-~
    +#> # ... with 4 more variables: age <dbl>, ecr_2qb <dbl>, ecr_pos <dbl>,
    +#> #   value_2qb <int>
    +

    Let’s do some team summaries now!

    +
    +value_summary <- aaa_values %>% 
    +  group_by(franchise_id,franchise_name,pos) %>% 
    +  summarise(total_value = sum(value_2qb,na.rm = TRUE)) %>%
    +  ungroup() %>% 
    +  group_by(franchise_id,franchise_name) %>% 
    +  mutate(team_value = sum(total_value)) %>% 
    +  ungroup() %>% 
    +  pivot_wider(names_from = pos, values_from = total_value) %>% 
    +  arrange(desc(team_value)) %>% 
    +  select(franchise_id,franchise_name,team_value,QB,RB,WR,TE)
    +
    +value_summary
    +#> # A tibble: 12 x 7
    +#>    franchise_id franchise_name      team_value    QB    RB    WR    TE
    +#>           <int> <chr>                    <int> <int> <int> <int> <int>
    +#>  1      1581803 ZachFarni's Team         45658 10299 19968 15334    57
    +#>  2      1581722 syd12nyjets's Team       39773 14666  4596 19094  1417
    +#>  3      1581719 Jmuthers's Team          36800  8073 10710 10055  7962
    +#>  4      1581721 Mjenkyns2004's Team      35061 19338  3680 11598   445
    +#>  5      1582416 Ray Jay Team             34369  6201 11128  9012  8028
    +#>  6      1581753 fede_mndz's Team         34022  3071 16590 13803   558
    +#>  7      1581988 The DK Crew              34020  9167  6627 15292  2834
    +#>  8      1582423 The Verblanders          33492 10661 11273 11186   372
    +#>  9      1581720 brosene's Team           33432 12479 12380  6184  2389
    +#> 10      1581718 AlexG5386's Team         32997  8185 15644  4575  4593
    +#> 11      1581726 SCJaguars's Team         27219  3397 15703  8041    78
    +#> 12      1578553 Running Bear             23630 10533  3585  8257  1255
    +

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    +
    +value_summary_pct <- value_summary %>% 
    +  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    +  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    +
    +value_summary_pct
    +#> # A tibble: 12 x 7
    +#>    franchise_id franchise_name      team_value    QB    RB    WR    TE
    +#>           <int> <chr>                    <dbl> <dbl> <dbl> <dbl> <dbl>
    +#>  1      1581803 ZachFarni's Team         0.111 0.089 0.151 0.116 0.002
    +#>  2      1581722 syd12nyjets's Team       0.097 0.126 0.035 0.144 0.047
    +#>  3      1581719 Jmuthers's Team          0.09  0.07  0.081 0.076 0.266
    +#>  4      1581721 Mjenkyns2004's Team      0.085 0.167 0.028 0.088 0.015
    +#>  5      1582416 Ray Jay Team             0.084 0.053 0.084 0.068 0.268
    +#>  6      1581753 fede_mndz's Team         0.083 0.026 0.126 0.104 0.019
    +#>  7      1581988 The DK Crew              0.083 0.079 0.05  0.115 0.095
    +#>  8      1582423 The Verblanders          0.082 0.092 0.085 0.084 0.012
    +#>  9      1581720 brosene's Team           0.081 0.108 0.094 0.047 0.08 
    +#> 10      1581718 AlexG5386's Team         0.08  0.071 0.119 0.035 0.153
    +#> 11      1581726 SCJaguars's Team         0.066 0.029 0.119 0.061 0.003
    +#> 12      1578553 Running Bear             0.058 0.091 0.027 0.062 0.042
    +

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    +
    +
    +

    +Age

    +

    Another question you might ask: what is the average age of any given team?

    +

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    +
    +age_summary <- aaa_values %>% 
    +  filter(pos %in% c("QB","RB","WR","TE")) %>% 
    +  group_by(franchise_id,pos) %>% 
    +  mutate(position_value = sum(value_2qb,na.rm=TRUE)) %>% 
    +  ungroup() %>% 
    +  mutate(weighted_age = age*value_2qb/position_value,
    +         weighted_age = round(weighted_age, 1)) %>% 
    +  group_by(franchise_id,franchise_name,pos) %>% 
    +  summarise(count = n(),
    +            age = sum(weighted_age,na.rm = TRUE)) %>% 
    +  pivot_wider(names_from = pos,
    +              values_from = c(age,count))
    +
    +age_summary
    +#> # A tibble: 12 x 10
    +#> # Groups:   franchise_id, franchise_name [12]
    +#>    franchise_id franchise_name     age_QB age_RB age_TE age_WR count_QB count_RB
    +#>           <int> <chr>               <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    +#>  1      1578553 Running Bear         27.7   25.8   26.2   25.4        6        6
    +#>  2      1581718 AlexG5386's Team     30.7   24.9   28.4   26.4        3       12
    +#>  3      1581719 Jmuthers's Team      24.9   24.4   26.6   28.8        5        8
    +#>  4      1581720 brosene's Team       29.7   25.6   24.7   26.4        6       10
    +#>  5      1581721 Mjenkyns2004's Te~   25.8   24     26.8   26.6        5        9
    +#>  6      1581722 syd12nyjets's Team   24.8   22.4   24.4   22.2        5        7
    +#>  7      1581726 SCJaguars's Team     23.8   24.9   33     24.3        5        7
    +#>  8      1581753 fede_mndz's Team     35.7   24.7   24.5   27.9        6       12
    +#>  9      1581803 ZachFarni's Team     28.2   21.9   25.8   24.2        5        9
    +#> 10      1581988 The DK Crew          27     22.6   24.9   25          4        6
    +#> 11      1582416 Ray Jay Team         29.6   26.4   30.2   27          4        8
    +#> 12      1582423 The Verblanders      24.3   25.3   26.1   27.3        4        8
    +#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    +
    +
    +

    +Next steps

    +

    In this vignette, I’ve used only a few functions: ff_connect, ff_league, ff_rosters, and dp_values. Now that you’ve gotten this far, why not check out some of the other possibilities?

    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/fleaflicker_getendpoint.html b/docs/dev/articles/fleaflicker_getendpoint.html new file mode 100644 index 00000000..e9528143 --- /dev/null +++ b/docs/dev/articles/fleaflicker_getendpoint.html @@ -0,0 +1,339 @@ + + + + + + + +Fleaflicker: Get Endpoint • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +

    +Creating custom Fleaflicker API calls

    + +

    The Fleaflicker API is fairly extensive. If there is something you’d like to access that’s beyond the current scope of ffscrapr, you can use the lower-level “fleaflicker_getendpoint” function to create a GET request and access the data, while still using the authentication and rate-limiting features I’ve already created.

    +

    Here is an example of how you can call one of the endpoints - in this case, let’s zoom in on the Fetch League Scoreboard endpoint, which is used inside a few different ffscrapr functions and summarised in a few ways.

    +

    We’ll start by opening up this page, https://www.fleaflicker.com/api-docs/index.html#operation--FetchLeagueScoreboard-get, which is the documentation page for this particular endpoint.

    +

    From here, we can see that Fleaflicker’s documentation says the endpoint and parameters are:

    +
    GET /FetchLeagueScoreboard
    +
    +Parameters:
    +
    +- sport: string NFL, MLB, NBA, NHL NFL
    +(in query)
    +
    +- league_id: integer (int32)
    +(in query)
    +
    +- season: integer (int32)
    +(in query)
    +
    +- scoring_period: integer (int32)
    +(in query)
    +

    The fleaflicker_getendpoint function already has the base url encoded, so all we’ll need to do is pass in the endpoint without the /, and pass the HTTP parameters in as arguments to the function (these are case sensitive!)

    +
    +sport <- "NFL"
    +league_id <- 206154
    +season <- 2020
    +week <- 5
    +
    +response_scoreboard <- fleaflicker_getendpoint("FetchLeagueScoreboard",
    +                                               sport = sport, 
    +                                               league_id = league_id, 
    +                                               season = season, 
    +                                               scoring_period = week)
    +#> Using request.R from "ffscrapr"
    +
    +str(response_scoreboard, max.level = 1)
    +#> List of 3
    +#>  $ content :List of 3
    +#>  $ query   : chr "https://www.fleaflicker.com/api/FetchLeagueScoreboard?sport=NFL&league_id=206154&season=2020&scoring_period=5"
    +#>  $ response:List of 9
    +#>   ..- attr(*, "class")= chr "response"
    +#>  - attr(*, "class")= chr "fleaflicker_api"
    +

    Along with the parsed content, the function also returns the query and the response that was sent by the server. These are helpful for debugging, but we can turn the content into a dataframe with some careful application of the tidyverse.

    +
    +df_scoreboard <- response_scoreboard %>% 
    +  purrr::pluck("content","games") %>% 
    +  tibble::tibble() %>% 
    +  tidyr::unnest_wider(1) %>% 
    +  dplyr::mutate_at(c("away","home"),purrr::map_chr,purrr::pluck,"franchise_name"="name") %>% 
    +  dplyr::mutate_at(c("homeScore","awayScore"),purrr::map_dbl,purrr::pluck,"score","value")
    +
    +head(df_scoreboard)
    +#> # A tibble: 6 x 8
    +#>   id     away     home    awayScore homeScore homeResult awayResult isFinalScore
    +#>   <chr>  <chr>    <chr>       <dbl>     <dbl> <chr>      <chr>      <lgl>       
    +#> 1 46301~ Winterf~ Top Ci~      207.      162. LOSE       WIN        TRUE        
    +#> 2 46301~ Goldenr~ Winter~      145.      157. WIN        LOSE       TRUE        
    +#> 3 46301~ Wintert~ Clutch~      153.      192. WIN        LOSE       TRUE        
    +#> 4 46301~ Manitob~ Bamend~      182.      183. WIN        LOSE       TRUE        
    +#> 5 46301~ Springf~ Shangh~      176.      129. LOSE       WIN        TRUE        
    +#> 6 46301~ Boomtow~ Philad~      199.      200. WIN        LOSE       TRUE
    +

    From here, we’ll be able to feed these IDs into the FetchLeagueBoxscore endpoint https://www.fleaflicker.com/api-docs/index.html#operation--FetchLeagueScoreboard-get as the fantasy_game_id - and from here you’ll be able to get to player-level points and actual stat data for each fantasy game!

    +
    +# same variables as previous endpoint call!
    +onegame_lineups <- fleaflicker_getendpoint(
    +  "FetchLeagueBoxscore",
    +  sport = sport, 
    +  league_id = league_id, 
    +  # example for one call, but you can call this in a map or loop! 
    +  fantasy_game_id = df_scoreboard$id[[1]], 
    +  scoring_period = week) %>% 
    +  purrr::pluck('content','lineups') %>% 
    +  tibble::tibble() %>% 
    +  tidyr::unnest_wider(1) %>% 
    +  tidyr::unnest_longer('slots') %>% 
    +  tidyr::unnest_wider('slots') %>% 
    +  tidyr::pivot_longer(c("home","away"),names_to = "franchise",values_to = "player") %>% 
    +  tidyr::unnest_wider('player')
    +
    +str(onegame_lineups,max.level = 2)
    +#> tibble [98 x 16] (S3: tbl_df/tbl/data.frame)
    +#>  $ group               : chr [1:98] "START" "START" "START" "START" ...
    +#>  $ position            :List of 98
    +#>  $ positionColor       :List of 98
    +#>  $ franchise           : chr [1:98] "home" "away" "home" "away" ...
    +#>  $ proPlayer           :List of 98
    +#>  $ requestedGames      :List of 98
    +#>  $ viewingActualPoints :List of 98
    +#>  $ viewingActualStats  :List of 98
    +#>  $ requestedGamesPeriod:List of 98
    +#>  $ viewingFormat       : chr [1:98] "TOTAL" "TOTAL" "TOTAL" "TOTAL" ...
    +#>  $ viewingRange        :List of 98
    +#>  $ owner               :List of 98
    +#>  $ displayGroup        : chr [1:98] "PASSER" "PASSER" "RUSHER" "RUSHER" ...
    +#>  $ rankFantasy         :List of 98
    +#>  $ rankDraft           :List of 98
    +#>  $ lastX               :List of 98
    +

    From here, you can keep unravelling - including the “viewingActualPoints” and “viewingActualStats” columns!

    +
    +
    + + + +
    + + + +
    + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + diff --git a/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/index.html b/docs/dev/articles/index.html index 6ab433b4..7a1931e4 100644 --- a/docs/dev/articles/index.html +++ b/docs/dev/articles/index.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06
    @@ -92,7 +99,7 @@ @@ -135,13 +162,57 @@ + + @@ -165,6 +236,12 @@

    Getting Started

    Sleeper: Basics
    +
    Fleaflicker: Basics
    +
    +
    ESPN: Basics
    +
    +
    ESPN: Private Leagues
    +
    @@ -176,6 +253,10 @@

    Custom API calls

    Sleeper: Get Endpoint
    +
    Fleaflicker: Get Endpoint
    +
    +
    ESPN: Get Endpoint
    +
    @@ -183,7 +264,16 @@

    Performance

    -
    Managing ffscrapr's Cache
    +
    ffscrapr: Managing Cache
    +
    +
    +
    + @@ -204,6 +294,23 @@

    Performance

    + + + diff --git a/docs/dev/articles/mfl_basics.html b/docs/dev/articles/mfl_basics.html index e85f3773..6ae2dc5b 100644 --- a/docs/dev/articles/mfl_basics.html +++ b/docs/dev/articles/mfl_basics.html @@ -17,10 +17,13 @@ - + + + - + + @@ -43,7 +46,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -51,7 +54,7 @@ @@ -93,14 +116,58 @@ + + + @@ -109,11 +176,13 @@ -
    +
    @@ -51,7 +54,7 @@ @@ -93,14 +116,58 @@ + + +
    @@ -109,11 +176,13 @@ -
    +
    @@ -242,7 +305,20 @@

    - - - + + diff --git a/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/articles/sleeper_basics.html b/docs/dev/articles/sleeper_basics.html index 31c79331..ece2f1d5 100644 --- a/docs/dev/articles/sleeper_basics.html +++ b/docs/dev/articles/sleeper_basics.html @@ -17,10 +17,13 @@ - + + + - + + @@ -43,7 +46,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06
    @@ -51,7 +54,7 @@ @@ -93,14 +116,58 @@ + + +
    @@ -109,11 +176,13 @@ -
    +
    @@ -51,7 +54,7 @@ @@ -93,14 +116,58 @@ + + +
    @@ -109,11 +176,13 @@ -
    +
    @@ -240,7 +291,20 @@

    - - - + + diff --git a/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js new file mode 100644 index 00000000..dd57d92e --- /dev/null +++ b/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js @@ -0,0 +1,12 @@ +// Pandoc 2.9 adds attributes on both header and div. We remove the former (to +// be compatible with the behavior of Pandoc < 2.8). +document.addEventListener('DOMContentLoaded', function(e) { + var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); + var i, h, a; + for (i = 0; i < hs.length; i++) { + h = hs[i]; + if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 + a = h.attributes; + while (a.length > 0) h.removeAttribute(a[0].name); + } +}); diff --git a/docs/dev/authors.html b/docs/dev/authors.html index 7c44f73f..63c8bd40 100644 --- a/docs/dev/authors.html +++ b/docs/dev/authors.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06
    @@ -92,7 +99,7 @@ + +
    @@ -157,6 +232,14 @@

    Authors

    Tan Ho. Author, maintainer.

    +
  • +

    Tony ElHabr. Contributor. +

    +
  • +
  • +

    Joe Sydlowski. Contributor. +

    +
  • @@ -178,6 +261,23 @@

    Authors

    + + + diff --git a/docs/dev/docsearch.json b/docs/dev/docsearch.json new file mode 100644 index 00000000..153eb393 --- /dev/null +++ b/docs/dev/docsearch.json @@ -0,0 +1,95 @@ +{ + "index_name": "dynastyprocess", + "start_urls": [ + { + "url": "ffscrapr.dynastyprocess.com/index.html", + "selectors_key": "homepage", + "tags": [ + "homepage" + ] + }, + { + "url": "ffscrapr.dynastyprocess.com/reference", + "selectors_key": "reference", + "tags": [ + "reference" + ] + }, + { + "url": "ffscrapr.dynastyprocess.com/articles", + "selectors_key": "articles", + "tags": [ + "articles" + ] + } + ], + "stop_urls": [ + "/reference/$", + "/reference/index.html", + "/articles/$", + "/articles/index.html" + ], + "sitemap_urls": [ + "ffscrapr.dynastyprocess.com/sitemap.xml" + ], + "selectors": { + "homepage": { + "lvl0": { + "selector": ".contents h1", + "default_value": "ffscrapr Home page" + }, + "lvl1": { + "selector": ".contents h2" + }, + "lvl2": { + "selector": ".contents h3", + "default_value": "Context" + }, + "lvl3": ".ref-arguments td, .ref-description", + "text": ".contents p, .contents li, .contents .pre" + }, + "reference": { + "lvl0": { + "selector": ".contents h1" + }, + "lvl1": { + "selector": ".contents .name", + "default_value": "Argument" + }, + "lvl2": { + "selector": ".ref-arguments th", + "default_value": "Description" + }, + "lvl3": ".ref-arguments td, .ref-description", + "text": ".contents p, .contents li" + }, + "articles": { + "lvl0": { + "selector": ".contents h1" + }, + "lvl1": { + "selector": ".contents .name" + }, + "lvl2": { + "selector": ".contents h2, .contents h3", + "default_value": "Context" + }, + "text": ".contents p, .contents li" + } + }, + "selectors_exclude": [ + ".dont-index" + ], + "min_indexed_level": 2, + "custom_settings": { + "separatorsToIndex": "_", + "attributesToRetrieve": [ + "hierarchy", + "content", + "anchor", + "url", + "url_without_anchor" + ] + } +} + diff --git a/docs/dev/extra.css b/docs/dev/extra.css index 162c126a..1433b08c 100644 --- a/docs/dev/extra.css +++ b/docs/dev/extra.css @@ -1,17 +1,29 @@ -@import 'https://fonts.googleapis.com/css?family=Barlow:400,700|Fira+Mono:400,700'; +@import 'https://fonts.googleapis.com/css?family=Fira+Mono:400,700|family=IBM+Plex+Sans:400,700'; + body{ - font-family: 'Barlow', sans-serif; + font-family: 'IBM Plex Sans', sans-serif; } h1 { font-family: 'Fira Mono', sans-serif; + font-weight: 700; +} + +h2,h3 { + font-family: 'IBM Plex Sans', sans-serif; + font-weight: 700; } pre, code { - font-family: 'Fira Mono'; + font-family: 'Fira Mono', monospace; } -.navbar-brand { - font-family: 'Fira Mono'; +.navbar-link { + font-weight: 700; + font-family: 'Fira Mono', sans-serif; } + +h4.author,h4.date { + padding-top:0px; + margin-top:0px;} diff --git a/docs/dev/favicon-16x16.png b/docs/dev/favicon-16x16.png index 706caf1a2ecaf9d5af2f9769ee58f2d4aa5bbaa1..81ad39e7150039fd064b24c470c9a9e70168737b 100644 GIT binary patch delta 730 zcmZ3)y_$VOd_ALMfKP}k0|UbcPSx-1Dt}m&{;(+hXH~u;puSpC3rPNFP`u5jwozQG zT3PQugXBYAwVh&`t%|xp63D*6ufAVIqfcHZM8_~p+u*#Qdbx^Tg^J#3A&o>$gCtG; zWFXSePtwp!)X=X~(F@fv2-P-dQPg$UH}capG_E%`HZnFgF*Y_dHa0aj4%RUY*EX;* zG%_6FoTUP08XzZqMr!ZLJOlMplMKRz^lP z#wKNj`3vXG@^*JOFfy_*GyDJl|B-IaJ-}d8D+%%o2GR@+Y@SEFm<(sXWmM^W)}<<1 zdi&qMq@O=C{(!;HfB&BGnMShL0~InRdAqx0sU}V319I3)Jbhi+pR#c>afvgnRh|J9 zy5#BN7$R{wIe~%6EzGQ}j4#ZMjU(aFlSj`2gC9S9_9%s^XlCWlAFNkQO-xO%u(GsP z%#>_#bve3ai)n*Hw0lg5%M3@Spm6{A=wN1@6b03T3cAS|DLF~27{gNP)wItl=%%No zM+M2<}!p17y($d!I z-f(7uVL*3JS6^pncelR>%Pd93)Vz69rp%c#Wzwu^?^dZW7R@lakvL0orj|ncMuj=+ zv`(;>ShYRBu$P}9L0e_hWxGYMCtqX{_cqiuFw-@#3;~6&ft8W5wt<0_fk7uv!4#nH jRZCnWN>UO_Qmu0HQ!>*k8H@~!uxt1cctT^cF>5{mD3A25 delta 1256 zcmZ{id2AGQ6vqeH-rak4cXoDW_L`aB%pNm4vq$Z=Hgc4s1q!vMl|#-2OBYJJyDi(Q zn+OPE4O9-3W(6dXgdze$4Q-*Ofhe}10ZO%W760%EAkk3JN+aVU;UA6PY<~%{E;HKp=_x74$va&F$GPkzU>H#peSSaB z^Rt{BVK!SV7MiAck4IqG=??d5z?BGIBrT)SWHRA6?sT~lA_b;8xuSxC60fh2<25j> z)9LhjJx5Z(v?l-}V44W#Ai``V96QV|g-WSXsWe(GX*L&=fVA2e!rZ1OkHK^Y0{XPf zKFpDmm#5ZfEEq1DaE=BhGf{0I4#U)bJw2cX-zY&6b!e0-+Gz46aI>4F5WRk>o;aeV zuBgD*D$uV5HI!4Ak%h~Z7=oZC6QYHiG{jD=tyfLGucIohfOR_T6lFwF48s5bd}tTz}?6N(W8Yq1ij$%+$_Bqj5Y+)IDdm!p;QpHJuiN;a*(f0~SJ zyLGFLgzHB}>S0;M`H6}16*7Ey7`LQSmVZYok+MAQJ)L_(J#l#AcJpLsPkPg&mF2T$ z+}vM#Rh}+#HqL%A0zn4N6G8M4dHQ+^>(u{V_jHy+~wN=ZZ z$uk!U4LNgIIx~Cun)ZF|moM(wUA;Usr7f=b`*u593u0PX_4EcRsxw&uc zC@&iv=!!)jAot}C$I;HZb$4z@P;^lKHqth)qhoRB;?WyL!QP(MxtEbk?v{y%U~bYE z9~i2=wzg)GP&0Zd>2Liq6(2LWmYm-7<}rNpx${>;gVj|ZE$M2xd?R)Te-BA64TKY^ z)7|xh!|O+ze@Xp#`@;7>_4S6n`tH!H6H2T&I=+1y*!=DvS5|#qkt~iqyfhN|nI9h) z$N$WdZRp!{>)r>>>f;$1+qQ@s$F^*pwdB)=vEjQ#?F+A*edW2EzvW%H@Y%QL3lXE7ZJUJ(riS2c#x2@*Y`$L$HY1z(lu o33`Q~&*$`rL62wW-u~i^{Z>w#Qz_7bTMALyLd|d-zRO79{>OV diff --git a/docs/dev/favicon-32x32.png b/docs/dev/favicon-32x32.png index 0c5ea829573aa83f95ebf26437031e4f4ffc74bd..0e621d459809b22cd9b23f6e449f98118d0090e5 100644 GIT binary patch delta 1367 zcmZ8fc~DbF98Q8l!Gj}F0|b&NkmJ3Vx9`0i5|pc;awH;`SV0m97(_%QO7V)ZnN&~_ zuvO#`wHTa=M<_BX)2fsLBOn?C1J;gHsco&)saiVKDR!a%wB6a+{eIu>_wD|EyCY2V z+)D5FoM<#!R8x6(6+hI-&?dwuM?>PihhWG<@MwO}h`YcJ@yrPEKmDHPGVT2kZF0sXH5wMh`A^};(!z5BF0+2O+NR>aDAvS_wXe6a@DOJwH zqHwY(P}0CbwglnjJXA?iN4V%|U&Oc=+p`2a<%@&?a+3f*;fKg5DhUPo0z5`Soa7)R zNrr?dSF2SOT=bY9a?V@aHj|=-kA(sfUb&8g9Oj~cf@ev$Z!gZ$WD*3S72(ED{g57} z(6&f)d66iTAajKHF+bGA$9AEzhLX}%(a{HZD9j$#1JlT-=<&T`PZ z?m@jw;f_E_yo7)?hff1*Ip8Tc?uSUF(wtmf&B3y^t=rGy%kqOHwH)LETO21L2$D=# zt-f}}<}ltL9DQK_$YcZrAtR|}1Sx~51P33jJUn`T@Y@G=hkc-Eb3R27u@ZP+pb-JB z5U%=NI^j`B{l6T?eFOv8oZsY$&>*glgSd-Bz$b%Z#Eef3dOs3 z@AQmvEBt73L!vqf&eP4=7}FKYAnGO<^nkLb<$-kX9S^6bN_;$Zcm8rqyz%DE&Djx` zevd>OUYx|}jSMSSwf|Qrqi4mfjJo}*P5u-HE`}IYw9609t_(MJwO6PsTz(r96_LEO zFIyANIP{!TU!VT`&|C+dsc^>|Pk3{2_b{eBj~>C-7SA!p#myy~F@jHJ%4b4@L0o;}t-(ao8ymRH=_ z^z3%*p%zVZzJ60)$JND6{Mhu2wkw8k|1A6PP)Tt~WR){g^m6Nv0_d^;Ir;kKq^-^N z4NZP*gYjhdin&47ul7#SO%b>FY>UJ4rnZ*0z&z@(tc8A1-dlx9-3Qt!-9d}$M*A$f%Sc>!3CB&CT=cLG5_t%bH-}!3HV$@e=99EeIunPqf>sGmK#zK@G*LUrF zYu~rU;P!JPD6)@>)V*%?R&`zIXT?uj=3o9Lcko0=;S@uspruI1u=M2QFWBRKfpN#N zOxv~v)r`L3^J|;OKDcCSpJf}lxc-LriFIIo;%T=t1@-MCo1IJ(n%3N&I~l$uFGf4E z8;w|iWcT|8NncjonsRa};VO4`b=;WML}NYrscO$_$8StQ!>N1o)WBcwYP~)-;{1u` z^*&eU%<3WYIGYwHs_Fex$h(E9P`H!NYP?wim`ai|L1j{EUtw%Sy G7XA&nhW^O_ delta 2353 zcmV-13C{L}4Av8n83+ad0047(di0SYK7RlPVoOIv0RI600RN!9r;`8x010qNS#tmY z7ZLyf7ZL$ypVCqQ000McNlirudi|?v-ekpk|GfcR z;c=w;5Cf%4D^3L2u7f%E`th7!FsjV)7+}qsHT?MFkBA8Eix+dguMbgWQ3k0|Cap5h z!G>x!vZb89zpj$*T|RlP-+!BBXf`+(z(?yjT9{&W611JL=__9b+3qg`*Llf!@dC=N zP|Ix*5D`R`z(cEt-<3U!Gx%p~z(8m)sw_#o-&{`5Z7L`4c9qlp=bLh)Pmhcv{DAbd zcGB+Ee5=_@$4vUx0h?|+W1LL{%nfg63j^eGIaaM&MPFYZ-Z>UHVSm0?XlWvBq>Q_i z$>suanoPT?N=}4THJ5HFCr7%<={ud(^pmSO&2F~g{DUU>`}?;3*pztG3*y1u1^`ef z6etu5T)cP@m!>TDhNfZ@y|prn7d*g~a+%4=NgnN3%HYrtNzy<)Bq(PhV=sqhMR)>>+{8sp>RtndbHF3_LW z@x8rRYq@m!GLmIHo(Nm(j+F^q$SXae@|%jIp~8prL%hFL_#Qde%5;tA#;waz2{i$gmWgtojr@Hf(Q?%usb$%CBmq}kq|Bi!kPsBFp+Y& zX!yL@P!?#pJ%0iq(*XDI-h0oQj%7Sza=2wnD78I+%N&_=lpOr2YIrgc`mN_*q34>y z_Smzr<_SD(u4W7e%K5w^vvOc(QsAZmW=8;^SS(U1l^7fOiMZzsSJjiNHZe6hg~ub_ zvokStrOJ2KaXjbga7uRrN)9~Jx0t~r4acEoKWF;s%zqU0b3GOjN~IDaLKpNyrT)~3Ray3B~*Jc+;$7Q6?KpBch;O~K6>zhKcqT)D!$ zt7A+m3?((PG^Mw)LSCc)2lL6&7aw)Rn4 zb9owPFMqH$S0Gy6L8Y~sd9AI~YPFdZIq%t;TF$B?@USISEO&~Z$qD;P%9L`)nbQU0 z9FJ&@eE$$_jRxVO1za!WIWsiCqJ;|?7#P4ghpOVe2N6~~rNddiHYux}Qu2boAzTNJ zhwzVP7_nfy2k&pBU=DzQhs-%Hx;jJUI++MEe18d5r4U7okB?KSR4~Te0`{J>lCdod z7*=IpF5&k{K$C|73kO2aSD{cdg1wdYIU$;}l6fF@(*O~x>eO@xgdu5~ zl7G+VNs@#pifC_dXKZYYsi`TtySphiH*@OLDbhxR*jldF>ogaOgf|3px!eqNHIDC6 z10K9Ub4v>wH*O?~BA$Q#dEz)`;lhPnzI>UMmKIbMYb~WxiII^J(ln*BvlD=4pLvF< zsVPK+BuN+@9c9Ie6--S{Q79CsR4SCqWq&^W=p#JY+%9nVY=H)ig7ehVgrT7!thHEc z85|rWiXz(D+DMWFV+_N?!&IwPIyyS&>FHtr{{5UjeVW0+!I}C{Rh)B-jEu|-xaLxc zl3M0vzTsq=LV8*|St{0i?A8900}`l7A$j zv$K;h4C(3VAnQ-uY5u6&!78v^#G}G+xDxfcRXj`+3!RZqsr1u{IO6t+0#|wt2iJlRL|a__47X_tuHXbCFT=EhpD}IP#bT4p~;prCV#W3$Q>Z4 zk{4x-({x8ek8N$}p6;4_I%a*mXi^Y*@2d05zh=!_IS>rq zz%3LJwxsszvx)B8l<3|S6Ms#8K8(@Y_xEM@z5#BYxcO1S%-H|r8auuYvbRCxsYL&} zzGe@`)}@8=nO|k^e^V`8#+JU0n*aa+C3HntbYx+4WjbSWWnpw>05UK#FfA}PEip7y zGB7$bF*-CgD=;!TFfb|N%3%Ni03~!qSaf7zbY(hiZ)9m^c>ppnG8!-~Fg7hQG*mJ$ XIx{gkG&L(QGCD9YSif@Jla&Q;OjCrc diff --git a/docs/dev/favicon.ico b/docs/dev/favicon.ico index b86d30b9969ab4b7d194747ef89f8d8ee79ba9d2..ec6ec640fe9a2360caa61f2342741a3e435d62f2 100644 GIT binary patch literal 15086 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 VU&ekB_q`vpsv}|@)@2*E{XYxary>9V literal 15086 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 diff --git a/docs/dev/index.html b/docs/dev/index.html index 92854e71..4b8deb40 100644 --- a/docs/dev/index.html +++ b/docs/dev/index.html @@ -5,7 +5,7 @@ -API Client for Fantasy Football League Platforms • ffscrapr +ffscrapr • an R package for Fantasy Football APIs • ffscrapr @@ -17,12 +17,14 @@ - - - - + + + + + + + @@ -45,7 +47,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -53,7 +55,7 @@ + + + @@ -111,83 +181,89 @@

    An R Client for Fantasy Football League APIs

    -

    Helps access various Fantasy Football APIs (i.e. MFL, Sleeper, Fleaflicker, ESPN, Yahoo, potentially other platforms) by handling authentication/rate-limiting/caching, forming appropriate calls, and returning tidy dataframes which can be easily connected to other data sources.

    +

    Helps access various Fantasy Football APIs (currently MFL, Sleeper, Fleaflicker, and ESPN - eventually Yahoo, potentially others) by handling authentication/rate-limiting/caching, forming appropriate calls, and returning tidy dataframes which can be easily connected to other data sources.

    Installation

    -

    Version 1.1.0 is now on CRAN 🎉 and can be installed with:

    -
    -install.packages("ffscrapr")
    -# or from GitHub release
    -# install.packages("devtools") OR install.packages("remotes")
    -# remotes is a subpackage of devtools
    -remotes::install_github("dynastyprocess/ffscrapr",ref = "v1.0.0")
    -
    +

    Version 1.4.2 is now on CRAN 🎉 and can be installed with:

    +
    +install.packages("ffscrapr")
    +# or from GitHub release with the remotes package via:
    +# install.packages("remotes")
    +remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.2")

    Install the development version from GitHub with:

    -
    -remotes::install_github("dynastyprocess/ffscrapr")
    -
    +
    +remotes::install_github("dynastyprocess/ffscrapr", ref = "dev")

    The dev version has a separate documentation site here.

    Usage

    All ffscrapr functions start with a connection object created by ff_connect(), which stores connection, authentication, and other user-defined parameters. This object is used by all other functions to help return the correct data.

    -
    -library(ffscrapr)
    -#> memorycache
    -ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020)
    +
    +library(ffscrapr)
    +ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020)
     
     # Get a summary of league settings
    -ff_league(ssb) %>% str()
    -#> tibble [1 x 13] (S3: tbl_df/tbl/data.frame)
    +ff_league(ssb) %>% str()
    +#> tibble [1 x 14] (S3: tbl_df/tbl/data.frame)
     #>  $ league_id      : chr "54040"
     #>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    +#>  $ season         : int 2020
     #>  $ franchise_count: num 14
     #>  $ qb_type        : chr "1QB"
     #>  $ idp            : logi FALSE
     #>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi TRUE
    +#>  $ best_ball      : logi FALSE
     #>  $ salary_cap     : logi FALSE
     #>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2020"
    +#>  $ years_active   : chr "2018-2021"
     #>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 28
    -#>  $ league_depth   : num 392
    +#>  $ roster_size    : num 33
    +#>  $ league_depth   : num 462
     
     # Get rosters
    -ff_rosters(ssb)
    -#> # A tibble: 435 x 11
    -#>   franchise_id franchise_name player_id player_name pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   13189     Engram, Ev~ TE    NYG    26.2
    -#> 2 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    28  
    -#> 3 0001         Team Pikachu   14085     Pollard, T~ RB    DAL    23.6
    -#> 4 0001         Team Pikachu   13645     Smith, Tre~ WR    NOS    24.9
    -#> 5 0001         Team Pikachu   12110     Brate, Cam~ TE    TBB    29.4
    -#> # ... with 430 more rows, and 4 more variables: roster_status <chr>,
    +ff_rosters(ssb)
    +#> # A tibble: 442 x 11
    +#>   franchise_id franchise_name player_id player_name     pos   team    age
    +#>   <chr>        <chr>          <chr>     <chr>           <chr> <chr> <dbl>
    +#> 1 0001         Team Pikachu   13189     Engram, Evan    TE    NYG    26.8
    +#> 2 0001         Team Pikachu   11680     Landry, Jarvis  WR    CLE    28.5
    +#> 3 0001         Team Pikachu   13645     Smith, Tre'Quan WR    NOS    25.4
    +#> 4 0001         Team Pikachu   12110     Brate, Cameron  TE    TBB    29.9
    +#> 5 0001         Team Pikachu   13168     Reynolds, Josh  WR    LAR    26.3
    +#> # ... with 437 more rows, and 4 more variables: roster_status <chr>,
     #> #   drafted <chr>, draft_year <chr>, draft_round <chr>
     
     # Get transactions
    -ff_transactions(ssb)
    -#> # A tibble: 843 x 12
    -#>   timestamp           type  type_desc franchise_id franchise_name player_id
    -#>   <dttm>              <chr> <chr>     <chr>        <chr>          <chr>    
    -#> 1 2020-11-15 17:54:18 IR    activated 0004         Team Ice Clim~ 14840    
    -#> 2 2020-11-15 17:54:08 FREE~ dropped   0004         Team Ice Clim~ 13316    
    -#> 3 2020-11-15 17:23:51 FREE~ added     0010         Team Yoshi     10708    
    -#> 4 2020-11-15 17:23:25 IR    deactiva~ 0010         Team Yoshi     14126    
    -#> 5 2020-11-15 16:45:09 TAXI  promoted  0013         Team Ness      14125    
    -#> # ... with 838 more rows, and 6 more variables: player_name <chr>, pos <chr>,
    -#> #   team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    -
    -

    For a more detailed usage example, including a template dynasty league analysis script, please check out the reference articles and/or vignettes!

    +ff_transactions(ssb) +#> # A tibble: 152 x 12 +#> timestamp type type_desc franchise_id franchise_name +#> <dttm> <chr> <chr> <chr> <chr> +#> 1 2020-07-09 17:25:20 FREE_AGENT dropped 0004 Team Ice Climbers +#> 2 2020-07-09 17:25:20 FREE_AGENT dropped 0004 Team Ice Climbers +#> 3 2020-06-16 01:56:49 TAXI promoted 0014 Team Luigi +#> 4 2020-06-16 01:56:49 TAXI demoted 0014 Team Luigi +#> 5 2020-06-12 23:51:44 FREE_AGENT dropped 0010 Team Yoshi +#> # ... with 147 more rows, and 7 more variables: player_id <chr>, +#> # player_name <chr>, pos <chr>, team <chr>, bbid_spent <dbl>, +#> # trade_partner <chr>, comments <chr>
    +

    Platform-specific guides on getting started with ffscrapr are here:

    + +

    There are also some more advanced guides for custom API calls in the Articles section, as well as some guides on optimizing ffscrapr’s performance.

    @@ -239,16 +315,20 @@

    Developers

    Dev status

      -
    • CRAN status
    • -
    • Lifecycle: maturing
    • -
    • Codecov test coverage
    • -
    • R build status
    • +
    • CRAN status
    • +
    • Dev status
    • +
    • Lifecycle: stable
    • +
    • Codecov test coverage
    • +
    • R build status
    • +
    • API status
    • +
    • nflverse discord
    @@ -267,7 +347,20 @@

    Dev status

    - - - + + diff --git a/docs/dev/logo.svg b/docs/dev/logo.svg new file mode 100644 index 00000000..c25272b8 --- /dev/null +++ b/docs/dev/logo.svg @@ -0,0 +1,141 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html index 9868dc21..cf4f6774 100644 --- a/docs/dev/news/index.html +++ b/docs/dev/news/index.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -157,16 +232,243 @@

    Changelog

    ffscrapr (development version) Unreleased

    -

    Currently undecided on next platform. Amassing some tweaks and hotfixes for a patch version (probably with improved vignettes).

    -
    +
    +

    +Minor changes

    +
      +
    • +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) (v1.4.2.01)
    • +
    • Added helper script in dev/ for switching between test cache versions. (v1.4.2.02)
    • +
    • +ff_schedule() for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03)
    • +
    • +ff_draft() for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04)
    • +
    • +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. (v1.4.2.05)
    • +
    • +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. (v1.4.2.06)
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.4.2 2021-05-10 +

    +

    The main goal of v1.4.2 is to patch some minor bugs.

    +
    +

    +Minor changes

    +
      +
    • +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)
    • +
    • Roxygen configured to use markdown (with the roxygen2md package) - hopefully fixes the lifecycle badge issues?
    • +
    • +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 correctly
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.4.1 2021-04-18 +

    +

    The 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.

    +
    +

    +New features

    +
      +
    • +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().
    • +
    +
    +
    +

    +Minor changes

    +
      +
    • Added release_questions to help remind me to maintain test infrastructure
    • +
    • +mfl_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)
    • +
    • Redirected nflfastr download functions to the new nflverse/ repository locations. (Resolves #268)
    • +
    • +.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)
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.4.0 2021-04-13 +

    +

    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!)

    +
    +

    +New Features

    +
      +
    • +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!
    • +
    +
    +
    +

    +Breaking Changes

    +
      +
    • +ff_scoring for ESPN loses the “override_pos” which only had a value of 16 for D/ST specific rules
    • +
    • +ff_scoring rules for ESPN and Sleeper have been expanded from one line per rule to one line per position per rule
    • +
    +
    +
    +

    +Minor Changes

    +
      +
    • Force mfl_playerscores to use season + league specific players call where possible (#239)
    • +
    • Reduce minimum rows for flea_rosters test to 200, which fixes an API check issue (#242)
    • +
    • Switching memoise backend to cachem package, fixes CRAN check issue where digest is no longer imported by memoise. Cachem also apparently more performant! (#244)
    • +
    • +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)
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.3.0 2021-03-07 +

    +

    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.

    +
    +

    +Breaking Changes

    +
      +
    • +custom_players arguments are deprecated for MFL - it will now return them by default.
    • +
    +
    +

    -Tweaks to be released with 1.1.1

    +ESPN Details +

    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:

      -
    • Patched bug in sleeper_getendpoint() - was appending a “/” to the end of every url by accident, breaking URL parameters
    • -
    • Small copyedits to existing vignettes. (1.1.0.9000)
    • -
    • Added filesystem cache capabilities and a vignette to detailing how to use it (1.1.0.9001)
    • +
    • +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 authenticated
    • +
    • Username and password features - ESPN used to have a way to authenticate via username/password, but this has been recently made more difficult. It is an area that can be revisited if/when the Python package manages it, but at this time will only be accessible with the SWID/ESPN_S2 keys.
    +
    +

    +New Functions

    +
      +
    • +dp_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 is
    • +
    +
    +
    +

    +Minor patches

    +
      +
    • Converted GET requests to use httr::RETRY instead - this adds some robustness for server-side issues. As suggested by Maelle Salmon’s blog post on not reinventing the wheel.
    • +
    • Added some type conversions and renaming for snake_case consistency to mfl_rosters and mfl_playerscores
    • +
    • Fixed bug in MFL’s ff_playerscores() function so that it correctly pulls older names. (Resolves #196)
    • +
    • Refactored all tests to move test cache files to a separate/non-package location (https://github.com/dynastyprocess/ffscrapr-tests) - so that it is not included in CRAN’s package sizing
    • +
    • Fixed bugs in MFL’s ff_starters() function - bad default arg, bad players call. (Fixes #202)
    • +
    • Resolve MFL’s playerscores to handle vectorized request (Fixes #206)
    • +
    • Resolve bugs related to .fn_choose_season for tests (Fixes #217, #219)
    • +
    • Resolved bug in MFL’s ff_rosters() by adding a week parameter (Fixes #215)
    • +
    • Coerced ff_transactions() bid_amount into a numeric (Fixes #210)
    • +
    • Removed bye franchises from ff_starters() (Fixes #212)
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.2.2 2021-02-08 +

    +

    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.

    +
    +

    +Minor patches

    +
      +
    • Refactored dp_values() and dp_playerids() functions to use httr backend for compat with httptest, preventing CRAN errors.
    • +
    • Added inst-level redactor for httptest.
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.2.1 2020-12-16 +

    +
    +

    +Minor patches

    +
      +
    • Caching vignette outputs in tests/testthat to making vignette-rebuilding less internet reliant
    • +
    • Changing the league_id output of sleeper_userleagues to be a character column (because of cran no-longdouble support)
    • +
    +
    +
    +
    +
    +

    +ffscrapr 1.2.0 2020-11-27 +

    +

    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.

    +
    +

    +BREAKING CHANGES

    +
      +
    • +sleeper_getendpoint() now behaves more like the other getendpoint functions - first argument is the endpoint and any further args are passed as query parameters.
    • +
    +
    +
    +

    +Other tweaks to existing platforms/methods

    +
      +
    • Small copyedits to existing vignettes.
    • +
    • Added filesystem cache capabilities and a vignette to detailing how to use it.
    • +
    +
    +
    +

    +Fleaflicker notes

    +

    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.
    • +
    +
    +

    @@ -206,7 +508,7 @@

  • Added method for ff_userleagues()
  • Added handling for offensive_points and defensive_points in ff_standings() (#69, nice.)
  • -
  • Added ff_starters() (1.0.0.9011) as requested by #76 (thanks, Mike!)
  • +
  • Added ff_starters() as requested by #76 (thanks, Mike!)
  • Added an httr::handle_reset() call to fix login-caching bug.
  • Polished vignettes a little.
  • @@ -220,6 +522,7 @@

  • Uses describeIn instead of rdname for method documentation.
  • Wrap all documentation examples in donttest - ratelimiting AND running in under 5 seconds each is pretty challenging!
  • +

    @@ -280,6 +583,23 @@

    Contents

    + + + diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml index 07856290..b16ffb26 100644 --- a/docs/dev/pkgdown.yml +++ b/docs/dev/pkgdown.yml @@ -1,13 +1,19 @@ -pandoc: 2.9.2.1 +pandoc: 2.11.2 pkgdown: 1.6.1 pkgdown_sha: ~ articles: + espn_authentication: espn_authentication.html + espn_basics: espn_basics.html + espn_getendpoint: espn_getendpoint.html ffscrapr_caching: ffscrapr_caching.html + ffscrapr_scoringhistory: ffscrapr_scoringhistory.html + fleaflicker_basics: fleaflicker_basics.html + fleaflicker_getendpoint: fleaflicker_getendpoint.html mfl_basics: mfl_basics.html mfl_getendpoint: mfl_getendpoint.html sleeper_basics: sleeper_basics.html sleeper_getendpoint: sleeper_getendpoint.html -last_built: 2020-11-17T20:41Z +last_built: 2021-06-09T16:07Z urls: reference: ffscrapr.dynastyprocess.com/reference article: ffscrapr.dynastyprocess.com/articles diff --git a/docs/dev/reference/dot-add_allplay.html b/docs/dev/reference/dot-add_allplay.html new file mode 100644 index 00000000..af246a5d --- /dev/null +++ b/docs/dev/reference/dot-add_allplay.html @@ -0,0 +1,295 @@ + + + + + + + + +Add allplay from a standardised schedule output — .add_allplay • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Add allplay from a standardised schedule output

    +
    + +
    .add_allplay(schedule)
    + +

    Arguments

    + + + + + + +
    schedule
      +
    • an output from ff_schedule

    • +
    + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-espn_activity_map.html b/docs/dev/reference/dot-espn_activity_map.html new file mode 100644 index 00000000..ba66a759 --- /dev/null +++ b/docs/dev/reference/dot-espn_activity_map.html @@ -0,0 +1,288 @@ + + + + + + + + +ESPN Activity/Transaction Mapping — .espn_activity_map • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    ESPN Activity/Transaction Mapping

    +
    + +
    .espn_activity_map()
    + + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-espn_lineupslot_map.html b/docs/dev/reference/dot-espn_lineupslot_map.html new file mode 100644 index 00000000..eec7e162 --- /dev/null +++ b/docs/dev/reference/dot-espn_lineupslot_map.html @@ -0,0 +1,288 @@ + + + + + + + + +ESPN Lineup Slot map — .espn_lineupslot_map • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This is for the starting lineup specifically - primary positions is accessible via .espn_pos_map

    +
    + +
    .espn_lineupslot_map()
    + + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-espn_pos_map.html b/docs/dev/reference/dot-espn_pos_map.html new file mode 100644 index 00000000..9b1146ac --- /dev/null +++ b/docs/dev/reference/dot-espn_pos_map.html @@ -0,0 +1,287 @@ + + + + + + + + +ESPN Primary Position map — .espn_pos_map • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Decoded by hand - if you have an IDP ESPN league please open a GitHub issue +and pass along the league info so we can expand this.

    +
    + +
    .espn_pos_map()
    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-espn_stat_map.html b/docs/dev/reference/dot-espn_stat_map.html new file mode 100644 index 00000000..702a48d3 --- /dev/null +++ b/docs/dev/reference/dot-espn_stat_map.html @@ -0,0 +1,288 @@ + + + + + + + + +ESPN Stat ID map — .espn_stat_map • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    ESPN Stat ID map

    +
    + +
    .espn_stat_map()
    + + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-espn_team_map.html b/docs/dev/reference/dot-espn_team_map.html new file mode 100644 index 00000000..9be2ba20 --- /dev/null +++ b/docs/dev/reference/dot-espn_team_map.html @@ -0,0 +1,290 @@ + + + + + + + + +ESPN Team ID map — .espn_team_map • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Opinionatedly conforming to DynastyProcess standards, which match to MyFantasyLeague. +Abbreviations are consistently three letters.

    +
    + +
    .espn_team_map()
    + + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-ff_clear_cache.html b/docs/dev/reference/dot-ff_clear_cache.html index 96d60b3c..4d3a3817 100644 --- a/docs/dev/reference/dot-ff_clear_cache.html +++ b/docs/dev/reference/dot-ff_clear_cache.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Empty Function Cache

    This function will reset the cache for any and all ffscrapr cached functions.

    -
    .ff_clear_cache()
    +
    .ff_clear_cache()
    @@ -185,6 +260,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-fn_choose_season.html b/docs/dev/reference/dot-fn_choose_season.html index 4d9384cf..9802ce92 100644 --- a/docs/dev/reference/dot-fn_choose_season.html +++ b/docs/dev/reference/dot-fn_choose_season.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Choose current season

    A helper function to return the current year if March or later, otherwise assume previous year

    -
    .fn_choose_season(date = NULL)
    +
    .fn_choose_season(date = NULL)
    @@ -185,6 +260,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-fn_drop_nulls.html b/docs/dev/reference/dot-fn_drop_nulls.html index a5a0bc92..714ba16a 100644 --- a/docs/dev/reference/dot-fn_drop_nulls.html +++ b/docs/dev/reference/dot-fn_drop_nulls.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Drop nulls from a list/vector

    Drop nulls from a list/vector

    -
    .fn_drop_nulls(x)
    +
    .fn_drop_nulls(x)
    @@ -185,6 +260,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-fn_set_ratelimit.html b/docs/dev/reference/dot-fn_set_ratelimit.html index 08935c6d..d4df5f19 100644 --- a/docs/dev/reference/dot-fn_set_ratelimit.html +++ b/docs/dev/reference/dot-fn_set_ratelimit.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + + @@ -152,7 +227,7 @@
    @@ -161,7 +236,7 @@

    Set rate limit

    in the .ffscrapr_env hidden object

    -
    .fn_set_ratelimit(toggle = TRUE, platform, rate_number, rate_seconds)
    +
    .fn_set_ratelimit(toggle = TRUE, platform, rate_number, rate_seconds)

    Arguments

    @@ -203,6 +278,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-fn_set_useragent.html b/docs/dev/reference/dot-fn_set_useragent.html index f6d03a60..abdcad6d 100644 --- a/docs/dev/reference/dot-fn_set_useragent.html +++ b/docs/dev/reference/dot-fn_set_useragent.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + +
    + +
    + + @@ -152,7 +227,7 @@
    @@ -161,7 +236,7 @@

    Set user agent

    See: https://www03.myfantasyleague.com/2020/csetup?C=APICLI

    -
    .fn_set_useragent(user_agent)
    +
    .fn_set_useragent(user_agent)
    @@ -187,6 +262,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-mfl_logincookie.html b/docs/dev/reference/dot-mfl_logincookie.html index a9223fef..36c9f812 100644 --- a/docs/dev/reference/dot-mfl_logincookie.html +++ b/docs/dev/reference/dot-mfl_logincookie.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + +
    + +
    + + @@ -161,7 +236,7 @@

    Get MFL Login Cookie

    Docs: https://api.myfantasyleague.com/2020/api_info#login_info

    -
    .mfl_logincookie(user_name, password, season)
    +
    .mfl_logincookie(user_name, password, season)

    Arguments

    @@ -206,6 +281,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dot-retry_get.html b/docs/dev/reference/dot-retry_get.html new file mode 100644 index 00000000..778c8f5e --- /dev/null +++ b/docs/dev/reference/dot-retry_get.html @@ -0,0 +1,293 @@ + + + + + + + + +Create RETRY version of GET — .retry_get • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This wrapper on httr retries the httr::GET function based on best-practice heuristics

    +
    + +
    .retry_get(...)
    + +

    Arguments

    +
    + + + + + +
    ...

    arguments passed to httr::GET

    + + + + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/dot-retry_post.html b/docs/dev/reference/dot-retry_post.html new file mode 100644 index 00000000..3d8c6e6f --- /dev/null +++ b/docs/dev/reference/dot-retry_post.html @@ -0,0 +1,293 @@ + + + + + + + + +Create RETRY version of POST — .retry_post • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This wrapper on httr retries the httr::POST function based on best-practice heuristics.

    +
    + +
    .retry_post(...)
    + +

    Arguments

    + + + + + + +
    ...

    arguments passed to httr::POST

    + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-sleeper_matchup.html b/docs/dev/reference/dot-sleeper_matchup.html new file mode 100644 index 00000000..33fd63d4 --- /dev/null +++ b/docs/dev/reference/dot-sleeper_matchup.html @@ -0,0 +1,285 @@ + + + + + + + + +individual sleeper matchup — .sleeper_matchup • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    individual sleeper matchup

    +
    + +
    .sleeper_matchup(week, conn, last_scored_week)
    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dot-sleeper_userid.html b/docs/dev/reference/dot-sleeper_userid.html index 67edf408..ba9da8eb 100644 --- a/docs/dev/reference/dot-sleeper_userid.html +++ b/docs/dev/reference/dot-sleeper_userid.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -159,7 +234,7 @@

    Get Sleeper User ID

    Docs: https://docs.sleeper.app

    -
    .sleeper_userid(user_name)
    +
    .sleeper_userid(user_name)

    Arguments

    @@ -196,6 +271,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dp_cleannames.html b/docs/dev/reference/dp_cleannames.html new file mode 100644 index 00000000..914d06ff --- /dev/null +++ b/docs/dev/reference/dp_cleannames.html @@ -0,0 +1,339 @@ + + + + + + + + +Clean Names — dp_cleannames • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Applies some name-cleaning heuristics to facilitate joins. These heuristics may include:

      +
    • removing periods and apostrophes

    • +
    • removing common suffixes, such as Jr, Sr, II, III, IV

    • +
    • converting to lowercase

    • +
    • using dp_name_mapping to do common name substitutions, such as Mitch Trubisky to Mitchell Trubisky

    • +
    + +
    + +
    dp_cleannames(
    +  player_name,
    +  lowercase = FALSE,
    +  convert_lastfirst = FALSE,
    +  use_name_database = TRUE
    +)
    + +

    Arguments

    +
    + + + + + + + + + + + + + + + + + +
    player_name

    a character (or character vector)

    lowercase

    defaults to FALSE - if TRUE, converts to lowercase

    convert_lastfirst

    converts names from "Last, First" to "First Last" (i.e. MFL style)

    use_name_database

    uses internal name database to do common substitutions (Mitchell Trubisky to Mitch Trubisky etc)

    + +

    Value

    + +

    a character vector of cleaned names

    +

    See also

    + +

    dp_name_mapping

    + +

    Examples

    +
    # \donttest{ +dp_cleannames(c("A.J. Green", "Odell Beckham Jr.", "Le'Veon Bell Sr.")) +
    #> [1] "AJ Green" "Odell Beckham" "LeVeon Bell"
    +dp_cleannames(c("Trubisky, Mitch", "Atwell, Chatarius", "Elliott, Zeke", "Elijah Moore"), + convert_lastfirst = TRUE, + use_name_database = TRUE) +
    #> [1] "Mitchell Trubisky" "Tutu Atwell" "Ezekiel Elliott" +#> [4] "Elijah Moore"
    # } + +
    + + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/dp_name_mapping.html b/docs/dev/reference/dp_name_mapping.html new file mode 100644 index 00000000..0154328b --- /dev/null +++ b/docs/dev/reference/dp_name_mapping.html @@ -0,0 +1,300 @@ + + + + + + + + +Alternate name mappings — dp_name_mapping • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    A named character vector mapping common alternate names

    +
    + +
    dp_name_mapping
    + + +

    Format

    + +

    A named character vector

    +
    name attribute

    The "alternate" name.

    +
    value attribute

    The "correct" name.

    + +
    + + +

    Examples

    +
    # \donttest{ +dp_name_mapping[c("Chatarius Atwell", "Robert Kelley")] +
    #> Chatarius Atwell Robert Kelley +#> "Tutu Atwell" "Rob Kelley"
    # } + +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/dp_playerids.html b/docs/dev/reference/dp_playerids.html index 9788eaf3..8048b476 100644 --- a/docs/dev/reference/dp_playerids.html +++ b/docs/dev/reference/dp_playerids.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Import latest DynastyProcess player IDs

    Fetches a copy of the latest DynastyProcess player IDs csv

    -
    dp_playerids()
    +
    dp_playerids()

    Value

    @@ -171,24 +246,27 @@

    See a

    Examples

    # \donttest{ -dp_playerids() -
    #> # A tibble: 2,206 x 19 -#> mfl_id sportradar_id gsis_id fantasypros_id ffcalculator_id pfr_id cfbref_id -#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 10005 680fd5cf-3bd~ 00-002~ NA NA WatsD~ dekoda-w~ -#> 2 10026 f1cff356-8de~ 00-002~ NA NA ColeK~ kurt-col~ -#> 3 10077 72f5a27a-544~ 00-002~ NA NA IvorC~ NA -#> 4 10103 6bc584ed-82c~ 00-002~ NA NA NA NA -#> 5 10111 f0d837e0-54e~ 00-002~ NA NA LoveK~ NA -#> 6 10122 4a8190f6-039~ 00-002~ NA NA StewD~ NA -#> 7 10143 cee49408-2e9~ 00-002~ NA NA NA NA -#> 8 10149 688f7a3b-4d6~ 00-002~ NA NA BrocT~ NA -#> 9 10220 39ee3bee-117~ 00-002~ NA NA SendA~ NA -#> 10 10250 4f799675-2b2~ 00-002~ NA NA SherM~ NA -#> # ... with 2,196 more rows, and 12 more variables: sleeper_id <chr>, -#> # espn_id <chr>, fleaflicker_id <chr>, name <chr>, merge_name <chr>, -#> # position <chr>, team <chr>, age <dbl>, draft_year <int>, draft_round <int>, -#> # draft_pick <int>, birthdate <chr>
    # } +dp_playerids() +
    #> # A tibble: 10,512 x 31 +#> mfl_id sportradar_id fantasypros_id gsis_id pff_id sleeper_id nfl_id espn_id +#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> +#> 1 15237 aaa8b42c-4d87~ 19780 NA NA 7523 NA NA +#> 2 15238 cf15be8f-9117~ 19781 NA NA 7591 NA NA +#> 3 15239 17bb63b1-1b0e~ 22679 NA NA 7538 NA NA +#> 4 15240 676a508c-c65f~ 20082 NA NA 7610 NA NA +#> 5 15241 1fd00ec3-b758~ 20156 NA NA 7527 NA NA +#> 6 15242 13038760-a019~ 19800 NA NA 7605 NA NA +#> 7 15243 631e6ad5-0a97~ 19383 NA NA 7581 NA NA +#> 8 15244 NA NA NA NA NA NA NA +#> 9 15245 22fd9495-1745~ 19785 NA NA 7555 NA NA +#> 10 15246 0d3113f7-2a82~ 20159 NA NA 7589 NA NA +#> # ... with 10,502 more rows, and 23 more variables: yahoo_id <chr>, +#> # fleaflicker_id <chr>, cbs_id <chr>, rotowire_id <chr>, rotoworld_id <chr>, +#> # ktc_id <chr>, pfr_id <chr>, cfbref_id <chr>, stats_id <chr>, +#> # stats_global_id <chr>, fantasy_data_id <chr>, name <chr>, merge_name <chr>, +#> # position <chr>, team <chr>, birthdate <chr>, age <dbl>, draft_year <int>, +#> # draft_round <int>, draft_pick <int>, draft_ovr <int>, +#> # twitter_username <chr>, db_season <int>
    # }
    @@ -213,6 +291,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/dp_values.html b/docs/dev/reference/dp_values.html index 9fa8f902..d29499ed 100644 --- a/docs/dev/reference/dp_values.html +++ b/docs/dev/reference/dp_values.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Import latest DynastyProcess values

    Fetches a copy of the latest DynastyProcess dynasty trade values sheets

    -
    dp_values(file = c("values.csv", "values-players.csv", "values-picks.csv"))
    +
    dp_values(file = c("values.csv", "values-players.csv", "values-picks.csv"))

    Arguments

    @@ -179,24 +254,10 @@

    See a

    Examples

    # \donttest{ - dp_values() -
    #> # A tibble: 439 x 12 -#> player pos team age draft_year ecr_1qb ecr_2qb ecr_pos value_1qb -#> <chr> <chr> <chr> <dbl> <int> <dbl> <dbl> <dbl> <int> -#> 1 Chris~ RB CAR 24.4 2017 1.8 2.1 1 10058 -#> 2 Alvin~ RB NOS 25.3 2017 2.2 2.5 3.3 9978 -#> 3 Davan~ WR GBP 27.9 2014 5 6.1 3.3 9336 -#> 4 D.K. ~ WR SEA 22.9 2019 5.2 6.4 1 9299 -#> 5 DeAnd~ WR ARI 28.4 2013 6.7 8.4 4.3 8977 -#> 6 Saquo~ RB NYG 23.7 2018 7.7 10.2 2.7 8768 -#> 7 Tyree~ WR KCC 26.7 2016 9 11.7 5.3 8498 -#> 8 Micha~ WR NOS 27.7 2016 10.5 13.8 4.7 8204 -#> 9 A.J. ~ WR TEN 23.4 2019 12.7 16.8 5.7 7796 -#> 10 Clyde~ RB KCC 21.6 2020 13.8 18.7 7.7 7586 -#> # ... with 429 more rows, and 3 more variables: value_2qb <int>, -#> # scrape_date <date>, fp_id <chr>
    # } - -
    +dp_values() +# } + + + + + diff --git a/docs/dev/reference/espn_connect.html b/docs/dev/reference/espn_connect.html new file mode 100644 index 00000000..1ca044da --- /dev/null +++ b/docs/dev/reference/espn_connect.html @@ -0,0 +1,349 @@ + + + + + + + + +Connect to ESPN League — espn_connect • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function creates a connection object which stores parameters and a user ID if available.

    +
    + +
    espn_connect(
    +  season = NULL,
    +  league_id = NULL,
    +  swid = NULL,
    +  espn_s2 = NULL,
    +  user_agent = NULL,
    +  rate_limit = TRUE,
    +  rate_limit_number = NULL,
    +  rate_limit_seconds = NULL,
    +  ...
    +)
    + +

    Arguments

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    season

    Season to access on Fleaflicker - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID

    swid

    SWID parameter for accessing private leagues - see vignette for details

    espn_s2

    ESPN_S2 parameter for accessing private leagues - see vignette for details

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is under 1000 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    other arguments (for other methods, for R compat)

    + +

    Value

    + +

    a list that stores ESPN connection objects

    + +

    Examples

    +
    # \donttest{ +conn <- espn_connect( + season = 2018, + league_id = 1178049, + espn_s2 = Sys.getenv("TAN_ESPN_S2"), + swid = Sys.getenv("TAN_SWID") +) +# } + +
    + + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/espn_getendpoint.html b/docs/dev/reference/espn_getendpoint.html new file mode 100644 index 00000000..ca0b49e0 --- /dev/null +++ b/docs/dev/reference/espn_getendpoint.html @@ -0,0 +1,318 @@ + + + + + + + + +GET ESPN fantasy league endpoint — espn_getendpoint • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function is used to call the ESPN Fantasy API for league-based endpoints.

    +
    + +
    espn_getendpoint(conn, ..., x_fantasy_filter = NULL)
    + +

    Arguments

    + + + + + + + + + + + + + + +
    conn

    a connection object created by espn_connect or ff_connect()

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    x_fantasy_filter

    a JSON-encoded character string that specifies a filter for the data

    + +

    Value

    + +

    A list object containing the query, response, and parsed content.

    +

    Details

    + +

    The ESPN Fantasy API is undocumented and this should be used by advanced users +familiar with the API.

    +

    It chooses the correct league endpoint based on the year (eg leagueHistory +for <2018), checks the x_fantasy_filter for valid JSON input, builds a url +with any optional query parameters, and executes the request with authentication +and rate limiting.

    +

    HTTP query parameters (i.e. arguments to ...) are Case Sensitive.

    +

    Please see the vignette for more on usage.

    +

    See also

    + +

    vignette("espn_getendpoint")

    +

    espn_getendpoint_raw

    + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/espn_getendpoint_raw.html b/docs/dev/reference/espn_getendpoint_raw.html new file mode 100644 index 00000000..ea33ea34 --- /dev/null +++ b/docs/dev/reference/espn_getendpoint_raw.html @@ -0,0 +1,316 @@ + + + + + + + + +GET ESPN endpoint (raw) — espn_getendpoint_raw • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function is the lower-level function that powers the API call: +it takes a URL and headers and executes the http request with rate-limiting +and authentication. It checks for JSON return and any warnings/errors, +parses the json, and returns an espn_api object with the parsed content, +the raw response, and the actual query.

    +
    + +
    espn_getendpoint_raw(conn, url_query, ...)
    + +

    Arguments

    + + + + + + + + + + + + + + +
    conn

    a connection object created by ff_connect or equivalent - used for authentication

    url_query

    a fully-formed URL to call

    ...

    any headers or other httr request objects to pass along

    + +

    Value

    + +

    object of class espn_api with parsed content, request, and response

    +

    See also

    + +

    espn_getendpoint() - a higher level wrapper that checks JSON and prepares the url query

    +

    vignette("espn_getendpoint")

    + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/espn_players.html b/docs/dev/reference/espn_players.html new file mode 100644 index 00000000..1bbcdbf5 --- /dev/null +++ b/docs/dev/reference/espn_players.html @@ -0,0 +1,310 @@ + + + + + + + + +ESPN players library — espn_players • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    A cached table of ESPN NFL players. Will store in memory for each session! +(via memoise in zzz.R)

    +
    + +
    espn_players(conn = NULL, season = NULL)
    + +

    Arguments

    + + + + + + + + + + +
    conn

    a connection object created by espn_connect or ff_connect()

    season

    a season to fetch

    + +

    Value

    + +

    a dataframe containing all ~2000+ active players in the ESPN database

    + +

    Examples

    +
    # \donttest{ +conn <- espn_connect(season = 2020, league_id = 1178049) + +player_list <- espn_players(conn, season = 2020) +# } + +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/espn_potentialpoints.html b/docs/dev/reference/espn_potentialpoints.html new file mode 100644 index 00000000..5b0c257e --- /dev/null +++ b/docs/dev/reference/espn_potentialpoints.html @@ -0,0 +1,321 @@ + + + + + + + + +ESPN Potential Points — espn_potentialpoints • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function calculates the optimal starters for a given week, using some lineup heuristics.

    +
    + +
    espn_potentialpoints(conn, weeks = 1:17)
    + +

    Arguments

    + + + + + + + + + + +
    conn

    the list object created by ff_connect()

    weeks

    a numeric vector for determining which weeks to calculate

    + +

    Value

    + +

    a tibble with the best lineup for each team and whether they were started or not

    + +

    Examples

    +
    # \donttest{ + +conn <- espn_connect(season = 2020, league_id = 899513) +espn_potentialpoints(conn, weeks = 1:3) +
    #> # A tibble: 666 x 11 +#> week franchise_id franchise_name franchise_score optimal_slot actual_slot +#> <int> <int> <chr> <dbl> <chr> <chr> +#> 1 1 1 The Early GGod 102. QB OP +#> 2 1 1 The Early GGod 102. RB BE +#> 3 1 1 The Early GGod 102. RB RB +#> 4 1 1 The Early GGod 102. WR BE +#> 5 1 1 The Early GGod 102. WR BE +#> 6 1 1 The Early GGod 102. TE BE +#> 7 1 1 The Early GGod 102. OP WR +#> 8 1 1 The Early GGod 102. DST DST +#> 9 1 1 The Early GGod 102. K K +#> 10 1 1 The Early GGod 102. RB/WR/TE BE +#> # ... with 656 more rows, and 5 more variables: player_score <dbl>, +#> # player_name <chr>, player_pos <chr>, team <chr>, player_id <int>
    # } +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/ff_connect.html b/docs/dev/reference/ff_connect.html index d4ee9ff4..b20f8dd4 100644 --- a/docs/dev/reference/ff_connect.html +++ b/docs/dev/reference/ff_connect.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,7 +234,7 @@

    Connect to a League

    This function creates a connection object which stores parameters and gets a login-cookie if available - it does so by passing arguments to the appropriate league-based handler.

    -
    ff_connect(platform = "mfl", league_id = NULL, ...)
    +
    ff_connect(platform = "mfl", league_id = NULL, ...)

    Arguments

    @@ -183,10 +258,11 @@

    Value

    a connection object to be used with ff_* functions

    See also

    -

    ff_connect, sleeper_connect

    +

    Examples

    -
    ff_connect(platform = "mfl", season = 2019, league_id = 54040, rate_limit = FALSE) +
    # \donttest{ +ff_connect(platform = "mfl", season = 2019, league_id = 54040, rate_limit = FALSE)
    #> <MFL connection 2019_54040> #> List of 5 #> $ platform : chr "MFL" @@ -194,7 +270,7 @@

    Examp #> $ league_id : chr "54040" #> $ APIKEY : NULL #> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"

    +#> - attr(*, "class")= chr "mfl_conn"
    # }
    + + + diff --git a/docs/dev/reference/ff_draft.html b/docs/dev/reference/ff_draft.html index c176fae6..b74ea019 100644 --- a/docs/dev/reference/ff_draft.html +++ b/docs/dev/reference/ff_draft.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + +
    + +
    + + @@ -152,7 +227,7 @@
    @@ -161,13 +236,19 @@

    Get Draft Results

    Can handle MFL devy drafts or startup drafts by specifying the custom_players argument

    -
    ff_draft(conn, ...)
    +    
    ff_draft(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_draft(conn, ...)
    +
    +# S3 method for flea_conn
    +ff_draft(conn, ...)
     
     # S3 method for mfl_conn
    -ff_draft(conn, custom_players = FALSE, ...)
    +ff_draft(conn, custom_players = deprecated(), ...)
     
     # S3 method for sleeper_conn
    -ff_draft(conn, ...)
    +ff_draft(conn, ...)

    Arguments

    @@ -182,7 +263,7 @@

    Arg

    - +
    custom_players

    MFL: TRUE or FALSE - retrieve custom players from the MFL database? (Allows for devy, placeholder picks, slightly slower)

    [Deprecated] - now returns custom players by default

    @@ -193,48 +274,90 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_draft(ssb_conn) -
    #> # A tibble: 57 x 10 -#> timestamp round pick franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2020-05-15 19:43:56 01 01 0001 Team Pikachu 14803 -#> 2 2020-05-15 19:53:18 01 02 0012 Team Mewtwo 14802 -#> 3 2020-05-15 19:58:24 01 03 0010 Team Yoshi 14797 -#> 4 2020-05-15 21:19:59 01 04 0013 Team Ness 14800 -#> 5 2020-05-16 02:47:24 01 05 0010 Team Yoshi 14799 -#> 6 2020-05-16 02:48:15 01 06 0012 Team Mewtwo 14833 -#> 7 2020-05-16 04:03:59 01 07 0011 Team Diddy Ko~ 14832 -#> 8 2020-05-16 07:00:48 01 08 0007 Team Kirby 14839 -#> 9 2020-05-16 12:38:48 01 09 0006 Team King Ded~ 14836 -#> 10 2020-05-16 13:47:29 01 10 0006 Team King Ded~ 14834 -#> # ... with 47 more rows, and 4 more variables: player_name <chr>, pos <chr>, -#> # age <dbl>, team <chr>
    # } +conn <- espn_connect(season = 2020, league_id = 899513) +ff_draft(conn) +
    #> # A tibble: 220 x 21 +#> round pick overall franchise_id franchise_name user_nickname player_id +#> <int> <int> <int> <int> <chr> <chr> <int> +#> 1 1 1 1 9 "RAFI CUNADO" Brandon11598 3120348 +#> 2 1 2 2 5 "The Juggernaut" longhorn0010 4047646 +#> 3 1 3 3 1 "The Early GGod" dachosenJuan~ 2977644 +#> 4 1 4 4 4 "I'm Also Sad " Ciavalen5th 3121422 +#> 5 1 5 5 8 "Big Coomers" Zarkoa -16033 +#> 6 1 6 6 3 "PAKI STANS" erodriguezk 3122840 +#> 7 1 7 7 2 "Coom Dumpster" mfespinosaIV 16800 +#> 8 1 8 8 6 "OBJ's Personal Por~ drake iz yoda 15683 +#> 9 1 9 9 10 "Austin \U0001f410D~ espn14856151 14880 +#> 10 1 10 10 7 "Tony El Tigre" anthon8821581 2573079 +#> # ... with 210 more rows, and 14 more variables: player_name <chr>, pos <chr>, +#> # team <chr>, bid_amount <int>, nominating_team_id <int>, is_keeper <lgl>, +#> # can_keeper <lgl>, autodraft_type <int>, complete_date <dttm>, +#> # in_progress <lgl>, pick_id <int>, drafted <lgl>, lineupSlotId <int>, +#> # tradeLocked <lgl>
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_draft(jml_conn) -
    #> # A tibble: 48 x 13 -#> draft_id status type season round pick franchise_id franchise_name -#> <chr> <chr> <chr> <chr> <int> <int> <int> <chr> -#> 1 5224587~ compl~ line~ 2020 1 1 4 The FANTom Me~ -#> 2 5224587~ compl~ line~ 2020 1 2 5 Barbarians -#> 3 5224587~ compl~ line~ 2020 1 3 11 Permian Panth~ -#> 4 5224587~ compl~ line~ 2020 1 4 2 KingGabe -#> 5 5224587~ compl~ line~ 2020 1 5 8 Hocka Flocka -#> 6 5224587~ compl~ line~ 2020 1 6 2 KingGabe -#> 7 5224587~ compl~ line~ 2020 1 7 2 KingGabe -#> 8 5224587~ compl~ line~ 2020 1 8 2 KingGabe -#> 9 5224587~ compl~ line~ 2020 1 9 6 sox05syd -#> 10 5224587~ compl~ line~ 2020 1 10 9 ZPMiller97 -#> # ... with 38 more rows, and 5 more variables: player_id <chr>, -#> # player_name <chr>, pos <chr>, age <dbl>, team <chr>
    # } +conn <- fleaflicker_connect(season = 2020, league_id = 206154) +ff_draft(conn) +
    #> # A tibble: 80 x 9 +#> round pick overall franchise_id franchise_name player_id player_name pos +#> <int> <int> <int> <int> <chr> <int> <chr> <chr> +#> 1 1 1 1 1373970 Bamenda Herd 15539 Clyde Edwar~ RB +#> 2 1 2 2 1374252 Central City C~ 15604 Jonathan Ta~ RB +#> 3 1 3 3 1373991 Top City Terro~ 15523 CeeDee Lamb WR +#> 4 1 4 4 1374315 Shanghai Commu~ 15555 J.K. Dobbins RB +#> 5 1 5 5 1374271 Clutch City Ba~ 15601 D'Andre Swi~ RB +#> 6 1 6 6 1374271 Clutch City Ba~ 15563 Cam Akers RB +#> 7 1 7 7 1373883 Manitoba Marmo~ 15540 Justin Jeff~ WR +#> 8 1 8 8 1373973 Red River Land~ 15544 Jerry Jeudy WR +#> 9 1 9 9 1374271 Clutch City Ba~ 15537 Chase Young EDR +#> 10 1 10 10 1373535 Winterthur Ang~ 15620 Ke'Shawn Va~ RB +#> # ... with 70 more rows, and 1 more variable: team <chr>
    # } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_draft(ssb_conn) +
    #> # A tibble: 90 x 11 +#> timestamp round pick overall franchise_id franchise_name player_id +#> <dttm> <chr> <chr> <int> <chr> <chr> <chr> +#> 1 2021-02-08 18:52:22 01 01 1 0014 Team Luigi 11244 +#> 2 2021-02-08 19:20:07 01 02 2 0003 Team Donkey K~ 14073 +#> 3 2021-02-08 20:01:16 01 03 3 0008 Team Bowser 11678 +#> 4 2021-02-08 20:01:30 02 01 4 0008 Team Bowser 13131 +#> 5 2021-02-08 20:12:30 02 02 5 0003 Team Donkey K~ 11671 +#> 6 2021-02-09 02:55:39 02 03 6 0012 Team Mewtwo 13593 +#> 7 2021-02-09 03:09:50 03 01 7 0014 Team Luigi 0829 +#> 8 2021-02-09 03:12:44 03 02 8 0003 Team Donkey K~ 11222 +#> 9 2021-02-09 03:22:50 03 03 9 0008 Team Bowser 14208 +#> 10 2021-02-09 03:23:01 04 01 10 0008 Team Bowser 13156 +#> # ... with 80 more rows, and 4 more variables: player_name <chr>, pos <chr>, +#> # age <dbl>, team <chr>
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_draft(jml_conn) +
    #> # A tibble: 48 x 13 +#> draft_id status type season round pick franchise_id franchise_name +#> <chr> <chr> <chr> <chr> <int> <int> <int> <chr> +#> 1 5224587733212~ complete line~ 2020 1 1 4 The FANTom Men~ +#> 2 5224587733212~ complete line~ 2020 1 2 5 Barbarians +#> 3 5224587733212~ complete line~ 2020 1 3 11 Permian Panthe~ +#> 4 5224587733212~ complete line~ 2020 1 4 2 KingGabe +#> 5 5224587733212~ complete line~ 2020 1 5 8 Hocka Flocka +#> 6 5224587733212~ complete line~ 2020 1 6 2 KingGabe +#> 7 5224587733212~ complete line~ 2020 1 7 2 KingGabe +#> 8 5224587733212~ complete line~ 2020 1 8 2 KingGabe +#> 9 5224587733212~ complete line~ 2020 1 9 6 sox05syd +#> 10 5224587733212~ complete line~ 2020 1 10 9 ZPMiller97 +#> # ... with 38 more rows, and 5 more variables: player_id <chr>, +#> # player_name <chr>, pos <chr>, age <dbl>, team <chr>
    # }
    @@ -259,6 +382,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_draftpicks.html b/docs/dev/reference/ff_draftpicks.html index 96622cdc..69e0b85a 100644 --- a/docs/dev/reference/ff_draftpicks.html +++ b/docs/dev/reference/ff_draftpicks.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get Draft Picks

    Returns all draft picks (current and future) that belong to a specific franchise and have not yet been converted into players (i.e. selected.)

    -
    ff_draftpicks(conn, ...)
    +    
    ff_draftpicks(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_draftpicks(conn, ...)
    +
    +# S3 method for flea_conn
    +ff_draftpicks(conn, franchise_id = NULL, ...)
     
     # S3 method for mfl_conn
    -ff_draftpicks(conn, ...)
    +ff_draftpicks(conn, ...)
     
     # S3 method for sleeper_conn
    -ff_draftpicks(conn, ...)
    +ff_draftpicks(conn, ...)

    Arguments

    @@ -178,6 +259,10 @@

    Arg

    + + + +
    ...

    other arguments (currently unused)

    franchise_id

    A list of franchise IDs to pull, if NULL will return all franchise IDs

    Value

    @@ -187,46 +272,64 @@

    Examples

    # \donttest{ -dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_draftpicks(conn = dlf_conn) -
    #> # A tibble: 80 x 5 +conn <- espn_connect( + season = 2018, + league_id = 1178049, + espn_s2 = Sys.getenv("TAN_ESPN_S2"), + swid = Sys.getenv("TAN_SWID") +) + +ff_draftpicks(conn) +
    #> Warning: ESPN does not support draft pick trades. For draft results, please use ff_draft()
    #> NULL
    # } + +# \donttest{ +conn <- fleaflicker_connect(2020, 206154) +ff_draftpicks(conn, franchise_id = 1373475) +# } + +# \donttest{ +dlf_conn <- mfl_connect(2020, league_id = 37920) +ff_draftpicks(conn = dlf_conn) +
    #> # A tibble: 80 x 5 #> season franchise_id franchise_name round original_franchise_id -#> <dbl> <chr> <chr> <dbl> <chr> -#> 1 2021 0001 @dibari22 1 0001 -#> 2 2021 0001 @dibari22 2 0001 -#> 3 2021 0001 @dibari22 3 0001 -#> 4 2021 0001 @dibari22 5 0001 -#> 5 2021 0001 @dibari22 2 0009 -#> 6 2021 0002 @_PeteLaw 1 0002 -#> 7 2021 0002 @_PeteLaw 2 0002 -#> 8 2021 0002 @_PeteLaw 3 0002 -#> 9 2021 0002 @_PeteLaw 4 0002 -#> 10 2021 0002 @_PeteLaw 5 0002 -#> # ... with 70 more rows
    # } +#> <dbl> <chr> <chr> <dbl> <chr> +#> 1 2021 0001 @dibari22 1 0001 +#> 2 2021 0001 @dibari22 2 0001 +#> 3 2021 0001 @dibari22 3 0001 +#> 4 2021 0001 @dibari22 5 0001 +#> 5 2021 0001 @dibari22 2 0009 +#> 6 2021 0002 OPEN 1 0002 +#> 7 2021 0002 OPEN 2 0002 +#> 8 2021 0002 OPEN 3 0002 +#> 9 2021 0002 OPEN 4 0002 +#> 10 2021 0002 OPEN 5 0002 +#> # ... with 70 more rows
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_draftpicks(jml_conn) -
    #> # A tibble: 144 x 5 +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_draftpicks(jml_conn) +
    #> # A tibble: 144 x 5 #> season franchise_id franchise_name round original_franchise_id -#> <chr> <int> <chr> <int> <int> -#> 1 2021 1 Fake News 1 1 -#> 2 2021 1 Fake News 3 1 -#> 3 2021 1 Fake News 4 1 -#> 4 2022 1 Fake News 2 1 -#> 5 2022 1 Fake News 3 1 -#> 6 2022 1 Fake News 4 1 -#> 7 2023 1 Fake News 1 1 -#> 8 2023 1 Fake News 2 1 -#> 9 2023 1 Fake News 3 1 -#> 10 2023 1 Fake News 4 1 -#> # ... with 134 more rows
    # } +#> <chr> <int> <chr> <int> <int> +#> 1 2021 1 Fake News 3 1 +#> 2 2021 1 Fake News 4 1 +#> 3 2022 1 Fake News 2 1 +#> 4 2022 1 Fake News 3 1 +#> 5 2022 1 Fake News 4 1 +#> 6 2023 1 Fake News 1 1 +#> 7 2023 1 Fake News 2 1 +#> 8 2023 1 Fake News 3 1 +#> 9 2023 1 Fake News 4 1 +#> 10 2021 2 KingGabe 1 2 +#> # ... with 134 more rows
    # }
    @@ -251,6 +354,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_franchises.html b/docs/dev/reference/ff_franchises.html index cf9a40ee..011c68c4 100644 --- a/docs/dev/reference/ff_franchises.html +++ b/docs/dev/reference/ff_franchises.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get League Franchises

    Return franchise-level data (including divisions, usernames, etc) - available data may vary slightly based on platform.

    -
    ff_franchises(conn)
    +    
    ff_franchises(conn)
    +
    +# S3 method for espn_conn
    +ff_franchises(conn)
    +
    +# S3 method for flea_conn
    +ff_franchises(conn)
     
     # S3 method for mfl_conn
    -ff_franchises(conn)
    +ff_franchises(conn)
     
     # S3 method for sleeper_conn
    -ff_franchises(conn)
    +ff_franchises(conn)

    Arguments

    @@ -183,51 +264,101 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_franchises(ssb_conn) -
    #> # A tibble: 14 x 7 -#> franchise_id franchise_name logo icon abbrev bbidAvailableBa~ -#> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 0001 Team Pikachu http~ http~ PIKA 159.00 -#> 2 0002 Team Simon Be~ http~ http~ SIMN 171.00 -#> 3 0003 Team Captain ~ http~ http~ CFCN 50.00 -#> 4 0004 Team Ice Clim~ http~ http~ ICE 0.00 -#> 5 0005 Team Dr. Mario http~ http~ DRM 84.00 -#> 6 0006 Team King Ded~ http~ http~ KDDD 120.00 -#> 7 0007 Team Kirby http~ http~ KRBY 55.00 -#> 8 0008 Team Fox http~ http~ FOX 173.00 -#> 9 0009 Team Link http~ http~ LINK 81.00 -#> 10 0010 Team Yoshi http~ http~ YSHI 0.00 -#> 11 0011 Team Diddy Ko~ http~ http~ DDY 179.00 -#> 12 0012 Team Mewtwo http~ http~ MEW2 121.00 -#> 13 0013 Team Ness http~ http~ NESS 0.00 -#> 14 0014 Team Luigi http~ http~ LUIG 45.00 -#> # ... with 1 more variable: waiverSortOrder <chr>
    # } +conn <- espn_connect(season = 2020, league_id = 1178049) + +ff_franchises(conn) +
    #> # A tibble: 14 x 8 +#> franchise_id franchise_name franchise_abbrev logo waiver_order user_id +#> <int> <chr> <chr> <chr> <int> <chr> +#> 1 1 Rushin' Collus~ RC https://~ 3 {6CE354~ +#> 2 2 Gurleys Gone W~ GGW https://~ 6 {74ADB5~ +#> 3 3 The Name's Mage Mage http://i~ 12 {141C9C~ +#> 4 4 dlp:: thoriyan thor https://~ 5 {1E6BB1~ +#> 5 5 No Ultrasmurfs~ ALH http://m~ 9 {E88F51~ +#> 6 6 Dak Street Boys DSB https://~ 11 {441A52~ +#> 7 7 Kung-Fu Kenny KDOT https://~ 10 {C60506~ +#> 8 8 Sticky Simians LEL https://~ 4 {599F7D~ +#> 9 9 The Wright Stu~ TWS NA 8 {F831BD~ +#> 10 10 Too Many Cooks COOK https://~ 7 {C9AE3C~ +#> 11 11 Team Typhon TYPH https://~ 14 {070C02~ +#> 12 12 Homicidal Hicks HH http://3~ 1 {CBF269~ +#> 13 13 Baby You Can D~ POKE http://v~ 13 {A5DC83~ +#> 14 14 Boralus Booty BB https://~ 2 {1778DE~ +#> # ... with 2 more variables: user_name <chr>, user_nickname <chr>
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_franchises(jml_conn) -
    #> # A tibble: 12 x 5 +conn <- fleaflicker_connect(season = 2020, league_id = 206154) +ff_franchises(conn) +
    #> # A tibble: 16 x 10 +#> division_id division_name franchise_id franchise_name franchise_logo +#> <int> <chr> <int> <chr> <chr> +#> 1 606681 JDL North 1371776 Winter Hill Blac~ https://s3.amazonaw~ +#> 2 606681 JDL North 1373973 Red River Land T~ https://s3.amazonaw~ +#> 3 606681 JDL North 1373501 Midgard Gallows https://s3.amazonaw~ +#> 4 606681 JDL North 1373991 Top City Terrors https://s3.amazonaw~ +#> 5 606682 JDL East 1374255 Mushroom City Ka~ https://s3.amazonaw~ +#> 6 606682 JDL East 1373475 Winterfell Dire ~ https://s3.amazonaw~ +#> 7 606682 JDL East 1373480 Goldenrod City N~ https://s3.amazonaw~ +#> 8 606682 JDL East 1374252 Central City Cru~ https://s3.amazonaw~ +#> 9 606683 JDL South 1373970 Bamenda Herd https://s3.amazonaw~ +#> 10 606683 JDL South 1374271 Clutch City Ball~ https://s3.amazonaw~ +#> 11 606683 JDL South 1374315 Shanghai Communi~ NA +#> 12 606683 JDL South 1373993 Boomtown Sly Fox~ https://s3.amazonaw~ +#> 13 606684 JDL West 1373393 Philadelphia Fire https://s3.amazonaw~ +#> 14 606684 JDL West 1373535 Winterthur Angry~ https://s3.amazonaw~ +#> 15 606684 JDL West 1373883 Manitoba Marmots NA +#> 16 606684 JDL West 1373988 Springfield Isot~ https://s3.amazonaw~ +#> # ... with 5 more variables: franchise_abbrev <chr>, user_id <int>, +#> # user_name <chr>, user_avatar <chr>, user_lastlogin <dttm>
    # } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_franchises(ssb_conn) +
    #> # A tibble: 14 x 7 +#> franchise_id franchise_name logo icon abbrev bbidAvailableBa~ +#> <chr> <chr> <chr> <chr> <chr> <chr> +#> 1 0001 Team Pikachu https://i.i~ https://i.~ PIKA 159.00 +#> 2 0002 Team Simon Bel~ https://i.i~ https://i.~ SIMN 99.00 +#> 3 0003 Team Donkey Ko~ https://i.i~ https://i.~ DK 50.00 +#> 4 0004 Team Ice Climb~ https://i.i~ https://i.~ ICE 0.00 +#> 5 0005 Team Dr. Mario https://i.i~ https://i.~ DRM 84.00 +#> 6 0006 Team King Dede~ https://i.i~ https://i.~ KDDD 87.00 +#> 7 0007 Team Kirby https://i.i~ https://i.~ KRBY 40.00 +#> 8 0008 Team Bowser https://i.i~ https://i.~ BWSR 0.00 +#> 9 0009 Team Link https://i.i~ https://i.~ LINK 81.00 +#> 10 0010 Team Yoshi https://i.i~ https://i.~ YSHI 0.00 +#> 11 0011 Team Diddy Kong https://i.i~ https://i.~ DDY 173.00 +#> 12 0012 Team Mewtwo https://i.i~ https://i.~ MEW2 0.00 +#> 13 0013 Team Ness https://i.i~ https://i.~ NESS 0.00 +#> 14 0014 Team Luigi https://i.i~ https://i.~ LUIG 0.00 +#> # ... with 1 more variable: waiverSortOrder <chr>
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_franchises(jml_conn) +
    #> # A tibble: 12 x 5 #> franchise_id franchise_name user_name user_id co_owners -#> <int> <chr> <chr> <chr> <list> -#> 1 1 Fake News Jcurtis44 70729037081100288 <NULL> -#> 2 2 KingGabe KingGabe 76686532077305856 <NULL> -#> 3 3 solarpool solarpool 202892038360801280 <NULL> -#> 4 4 The FANTom Menace weeknee 202882046337490944 <NULL> -#> 5 5 Barbarians ABitterHomer 386383436639973376 <NULL> -#> 6 6 sox05syd sox05syd 409797051455393792 <NULL> -#> 7 7 Flipadelphia05 Flipadelphia05 386950378371207168 <NULL> -#> 8 8 Hocka Flocka TwoFrames 386976568364306432 <NULL> -#> 9 9 ZPMiller97 ZPMiller97 386571720443764736 <NULL> -#> 10 10 JMLarkin JMLarkin 387070108625039360 <NULL> -#> 11 11 Permian Panthers theoracleETS 198540145396289536 <list [1]> -#> 12 12 jaydk jaydk 401485903224193024 <NULL>
    # } +#> <int> <chr> <chr> <chr> <list> +#> 1 1 Fake News Jcurtis44 70729037081100288 <NULL> +#> 2 2 KingGabe KingGabe 76686532077305856 <NULL> +#> 3 3 solarpool solarpool 202892038360801280 <NULL> +#> 4 4 The FANTom Menace weeknee 202882046337490944 <NULL> +#> 5 5 Barbarians ABitterHomer 386383436639973376 <NULL> +#> 6 6 sox05syd sox05syd 409797051455393792 <NULL> +#> 7 7 Flipadelphia05 Flipadelphia05 386950378371207168 <NULL> +#> 8 8 Hocka Flocka TwoFrames 386976568364306432 <NULL> +#> 9 9 ZPMiller97 ZPMiller97 386571720443764736 <NULL> +#> 10 10 JMLarkin JMLarkin 387070108625039360 <NULL> +#> 11 11 Permian Panthers theoracleETS 198540145396289536 <list [1]> +#> 12 12 jaydk jaydk 401485903224193024 <NULL>
    # }
    @@ -252,6 +383,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_league.html b/docs/dev/reference/ff_league.html index 9abf06dd..427d1b64 100644 --- a/docs/dev/reference/ff_league.html +++ b/docs/dev/reference/ff_league.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + +
    + +
    + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get League Summary

    This function returns a tidy dataframe of common league settings, including details like "1QB" or "2QB/SF", scoring, best ball, team count, IDP etc. This is potentially useful in summarising the features of multiple leagues.

    -
    ff_league(conn)
    +    
    ff_league(conn)
    +
    +# S3 method for espn_conn
    +ff_league(conn)
    +
    +# S3 method for flea_conn
    +ff_league(conn)
     
     # S3 method for mfl_conn
    -ff_league(conn)
    +ff_league(conn)
     
     # S3 method for sleeper_conn
    -ff_league(conn)
    +ff_league(conn)

    Arguments

    @@ -183,31 +264,56 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_league(ssb_conn) -
    #> # A tibble: 1 x 13 -#> league_id league_name franchise_count qb_type idp scoring_flags best_ball -#> <chr> <chr> <dbl> <chr> <lgl> <chr> <lgl> -#> 1 54040 The Super ~ 14 1QB FALSE 0.5_ppr, TEP~ TRUE -#> # ... with 6 more variables: salary_cap <lgl>, player_copies <dbl>, -#> # years_active <chr>, qb_count <chr>, roster_size <dbl>, league_depth <dbl>
    # } - - -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_league(jml_conn) -
    #> # A tibble: 1 x 15 -#> league_id league_name league_type franchise_count qb_type idp scoring_flags -#> <chr> <chr> <chr> <dbl> <chr> <lgl> <chr> -#> 1 52245877~ The JanMic~ dynasty 12 1QB FALSE 0.5_ppr -#> # ... with 8 more variables: best_ball <lgl>, salary_cap <lgl>, -#> # player_copies <dbl>, years_active <chr>, qb_count <chr>, roster_size <int>, -#> # league_depth <dbl>, prev_league_ids <chr>
    +conn <- espn_connect(season = 2020, league_id = 899513) +ff_league(conn) +
    #> # A tibble: 1 x 16 +#> league_id league_name season league_type franchise_count qb_type idp +#> <chr> <chr> <int> <chr> <int> <chr> <lgl> +#> 1 899513 Sucio Boys 2020 keeper 10 2QB/SF FALSE +#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, +#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, +#> # roster_size <int>, league_depth <dbl>, keeper_count <int>
    # } + +# \donttest{ +conn <- fleaflicker_connect(2020, 206154) +ff_league(conn) +
    #> # A tibble: 1 x 15 +#> league_id league_name season league_type franchise_count qb_type idp +#> <chr> <chr> <int> <chr> <dbl> <chr> <lgl> +#> 1 206154 Jackpot Dynasty Le~ 2020 dynasty 16 1QB TRUE +#> # ... with 8 more variables: scoring_flags <chr>, best_ball <lgl>, +#> # salary_cap <lgl>, player_copies <dbl>, qb_count <chr>, roster_size <int>, +#> # league_depth <dbl>, keeper_count <int>
    # } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_league(ssb_conn) +
    #> # A tibble: 1 x 14 +#> league_id league_name season franchise_count qb_type idp scoring_flags +#> <chr> <chr> <int> <dbl> <chr> <lgl> <chr> +#> 1 54040 The Super Smash~ 2020 14 1QB FALSE 0.5_ppr, TEPr~ +#> # ... with 7 more variables: best_ball <lgl>, salary_cap <lgl>, +#> # player_copies <dbl>, years_active <chr>, qb_count <chr>, roster_size <dbl>, +#> # league_depth <dbl>
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_league(jml_conn) +
    #> # A tibble: 1 x 16 +#> league_id league_name season league_type franchise_count qb_type idp +#> <chr> <chr> <int> <chr> <dbl> <chr> <lgl> +#> 1 52245877331~ The JanMichaelL~ 2020 dynasty 12 1QB FALSE +#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, +#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, +#> # roster_size <int>, league_depth <dbl>, prev_league_ids <chr>
    # }
    + + + diff --git a/docs/dev/reference/ff_playerscores.html b/docs/dev/reference/ff_playerscores.html index fffb76f5..f6a5e755 100644 --- a/docs/dev/reference/ff_playerscores.html +++ b/docs/dev/reference/ff_playerscores.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,8 +57,9 @@ - +Please see ff_scoringhistory() for an alternative reconstruction." /> + + @@ -87,7 +94,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -95,7 +102,7 @@ + +
    + +
    + + @@ -153,23 +228,29 @@

    This function returns a tidy dataframe of player scores based on league rules.

    Unfortunately, Sleeper has deprecated their player stats endpoint from their supported/open API. -Adding some nflfastr-based ideas to the pipeline for future iterations.

    +Please see ff_scoringhistory() for an alternative reconstruction.

    -
    ff_playerscores(conn, season, week, ...)
    +    
    ff_playerscores(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_playerscores(conn, limit = 1000, ...)
    +
    +# S3 method for flea_conn
    +ff_playerscores(conn, page_limit = NULL, ...)
     
     # S3 method for mfl_conn
    -ff_playerscores(conn, season, week, ...)
    +ff_playerscores(conn, season, week, ...)
     
     # S3 method for sleeper_conn
    -ff_playerscores(conn, ...)
    +ff_playerscores(conn, ...)

    Arguments

    @@ -178,17 +259,25 @@

    Arg

    + + + + + + + + + + + + - - - - - +
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    limit

    A numeric describing the number of players to return - default 1000

    page_limit

    A numeric describing the number of pages to return - default NULL returns all available

    season

    the season of interest - generally only the most recent 2-3 seasons are available

    week

    a numeric or one of YTD (year-to-date) or AVG (average to date)

    ...

    other arguments (currently unused)

    a numeric vector (ie 1:17) or one of YTD (year-to-date) or AVG (average to date)

    @@ -199,28 +288,65 @@

    See also

    + +

    ff_scoringhistory

    Examples

    # \donttest{ -dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_playerscores(conn = dlf_conn, season = 2019, week = "YTD") -
    #> # A tibble: 597 x 8 -#> season week player_id player_name pos team points isAvailable -#> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 2019 YTD 13593 Jackson, Lamar QB BAL 480.68 0 -#> 2 2019 YTD 13130 McCaffrey, Christian RB CAR 469.20 0 -#> 3 2019 YTD 12652 Thomas, Michael WR NOS 391.00 0 -#> 4 2019 YTD 11244 Kelce, Travis TE KCC 369.80 0 -#> 5 2019 YTD 12625 Elliott, Ezekiel RB DAL 355.70 0 -#> 6 2019 YTD 12620 Prescott, Dak QB DAL 351.78 0 -#> 7 2019 YTD 12626 Henry, Derrick RB TEN 351.60 0 -#> 8 2019 YTD 13113 Watson, Deshaun QB HOU 342.08 0 -#> 9 2019 YTD 10703 Wilson, Russell QB SEA 339.70 0 -#> 10 2019 YTD 13319 Jones, Aaron RB GBP 337.90 0 -#> # ... with 587 more rows
    # } + +conn <- espn_connect(season = 2020, league_id = 899513) +ff_playerscores(conn, limit = 5) +
    #> # A tibble: 5 x 8 +#> season player_id player_name pos score_total score_average franchise_id +#> <int> <int> <chr> <chr> <dbl> <dbl> <int> +#> 1 2020 3054850 Alvin Kamara RB 337. 22.5 9 +#> 2 2020 3043078 Derrick Henry RB 324. 20.2 4 +#> 3 2020 16800 Davante Adams WR 301. 21.5 2 +#> 4 2020 15795 DeAndre Hopkins WR 230. 14.4 4 +#> 5 2020 2576925 Darren Waller TE 225. 14.1 4 +#> # ... with 1 more variable: franchise_name <chr>
    # } +# \donttest{ + +conn <- fleaflicker_connect(2020, 312861) +x <- ff_playerscores(conn, page_limit = 2) +x +
    #> # A tibble: 60 x 8 +#> player_id player_name pos team games score_total score_avg score_sd +#> <int> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> +#> 1 13761 Josh Allen QB BUF 16 550. 34.4 10.4 +#> 2 3452 Aaron Rodgers QB GB 16 542. 33.8 8.49 +#> 3 12894 Patrick Mahomes QB KC 15 520. 34.6 9.95 +#> 4 8598 Russell Wilson QB SEA 16 513. 32.1 10.8 +#> 5 14664 Kyler Murray QB ARI 16 507. 31.7 11.9 +#> 6 12919 Deshaun Watson QB HOU 16 503. 31.5 7.96 +#> 7 309 Tom Brady QB TB 16 488. 30.5 12.2 +#> 8 8514 Ryan Tannehill QB TEN 16 469. 29.3 9.76 +#> 9 15516 Justin Herbert QB LAC 15 459. 30.6 9.67 +#> 10 8625 Kirk Cousins QB MIN 16 446. 27.9 9.8 +#> # ... with 50 more rows
    # } +# \donttest{ +sfb_conn <- mfl_connect(2020, league_id = 65443) +ff_playerscores(conn = sfb_conn, season = 2019, week = "YTD") +
    #> # A tibble: 589 x 8 +#> season week player_id player_name pos team points is_available +#> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <chr> +#> 1 2019 YTD 13593 Jackson, Lamar QB BAL 489. 1 +#> 2 2019 YTD 13130 McCaffrey, Christian RB CAR 447. 1 +#> 3 2019 YTD 12652 Thomas, Michael WR NOS 338. 1 +#> 4 2019 YTD 13113 Watson, Deshaun QB HOU 330. 1 +#> 5 2019 YTD 11244 Kelce, Travis TE KCC 317. 1 +#> 6 2019 YTD 10703 Wilson, Russell QB SEA 315. 1 +#> 7 2019 YTD 12620 Prescott, Dak QB DAL 314. 1 +#> 8 2019 YTD 13128 Cook, Dalvin RB MIN 313. 1 +#> 9 2019 YTD 13319 Jones, Aaron RB GBP 312 1 +#> 10 2019 YTD 12625 Elliott, Ezekiel RB DAL 309. 1 +#> # ... with 579 more rows
    # }
    + + + diff --git a/docs/dev/reference/ff_rosters.html b/docs/dev/reference/ff_rosters.html index 52ecd205..deaa75d9 100644 --- a/docs/dev/reference/ff_rosters.html +++ b/docs/dev/reference/ff_rosters.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get League Rosters

    This function returns a tidy dataframe of team rosters

    -
    ff_rosters(conn, ...)
    +    
    ff_rosters(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_rosters(conn, week = NULL, ...)
    +
    +# S3 method for flea_conn
    +ff_rosters(conn, ...)
     
     # S3 method for mfl_conn
    -ff_rosters(conn, custom_players = FALSE, ...)
    +ff_rosters(conn, custom_players = deprecated(), week = NULL, ...)
     
     # S3 method for sleeper_conn
    -ff_rosters(conn, ...)
    +ff_rosters(conn, ...)

    Arguments

    @@ -178,9 +259,13 @@

    Arg

    + + + + - +
    ...

    arguments passed to other methods (currently none)

    week

    a numeric that specifies which week to return

    custom_players

    TRUE or FALSE - include custom players? defaults to FALSE

    [Deprecated] - now returns custom players by default

    @@ -191,47 +276,76 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_rosters(ssb_conn) -
    #> # A tibble: 435 x 11 -#> franchise_id franchise_name player_id player_name pos team age -#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> -#> 1 0001 Team Pikachu 13189 Engram, Ev~ TE NYG 26.2 -#> 2 0001 Team Pikachu 11680 Landry, Ja~ WR CLE 28 -#> 3 0001 Team Pikachu 14085 Pollard, T~ RB DAL 23.6 -#> 4 0001 Team Pikachu 13645 Smith, Tre~ WR NOS 24.9 -#> 5 0001 Team Pikachu 12110 Brate, Cam~ TE TBB 29.4 -#> 6 0001 Team Pikachu 13168 Reynolds, ~ WR LAR 25.8 -#> 7 0001 Team Pikachu 13793 Valdes-Sca~ WR GBP 26.1 -#> 8 0001 Team Pikachu 13879 Allen, Kyle QB WAS 24.7 -#> 9 0001 Team Pikachu 13377 Patrick, T~ WR DEN 27 -#> 10 0001 Team Pikachu 13254 Shaheen, A~ TE MIA 26.9 -#> # ... with 425 more rows, and 4 more variables: roster_status <chr>, -#> # drafted <chr>, draft_year <chr>, draft_round <chr>
    # } +conn <- espn_connect(season = 2020, league_id = 899513) +ff_league(conn) +
    #> # A tibble: 1 x 16 +#> league_id league_name season league_type franchise_count qb_type idp +#> <chr> <chr> <int> <chr> <int> <chr> <lgl> +#> 1 899513 Sucio Boys 2020 keeper 10 2QB/SF FALSE +#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, +#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, +#> # roster_size <int>, league_depth <dbl>, keeper_count <int>
    # } +# \donttest{ +joe_conn <- ff_connect(platform = "fleaflicker", league_id = 312861, season = 2020) +ff_rosters(joe_conn) +
    #> # A tibble: 282 x 7 +#> franchise_id franchise_name player_id player_name pos team sportradar_id +#> <int> <chr> <int> <chr> <chr> <chr> <chr> +#> 1 1578553 Running Bear 12032 Carson Wentz QB IND e9a5c16b-4472~ +#> 2 1578553 Running Bear 12159 Dak Prescott QB DAL 86197778-8d4b~ +#> 3 1578553 Running Bear 13325 Austin Ekel~ RB LAC e5b8c439-a48a~ +#> 4 1578553 Running Bear 12926 Chris Godwin WR TB baa61bb5-f8d0~ +#> 5 1578553 Running Bear 16250 Ja'Marr Cha~ WR CIN fa99e984-d63b~ +#> 6 1578553 Running Bear 6660 Antonio Bro~ WR TB 16e33176-b73e~ +#> 7 1578553 Running Bear 8429 Marvin Jones WR JAC 1a2fbc23-e6db~ +#> 8 1578553 Running Bear 13788 Michael Gal~ WR DAL 9e174ff2-ca0e~ +#> 9 1578553 Running Bear 15531 Brandon Aiy~ WR SF c90471cc-fa60~ +#> 10 1578553 Running Bear 7378 Cam Newton QB NE 214e55e4-a089~ +#> # ... with 272 more rows
    # } +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_rosters(ssb_conn) +
    #> # A tibble: 442 x 11 +#> franchise_id franchise_name player_id player_name pos team age +#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> +#> 1 0001 Team Pikachu 13189 Engram, Evan TE NYG 26.8 +#> 2 0001 Team Pikachu 11680 Landry, Jarvis WR CLE 28.5 +#> 3 0001 Team Pikachu 13645 Smith, Tre'Quan WR NOS 25.4 +#> 4 0001 Team Pikachu 12110 Brate, Cameron TE TBB 29.9 +#> 5 0001 Team Pikachu 13168 Reynolds, Josh WR LAR 26.3 +#> 6 0001 Team Pikachu 13793 Valdes-Scantling, Ma~ WR GBP 26.7 +#> 7 0001 Team Pikachu 13377 Patrick, Tim WR DEN 27.5 +#> 8 0001 Team Pikachu 13254 Shaheen, Adam TE MIA 27.4 +#> 9 0001 Team Pikachu 14803 Edwards-Helaire, Cly~ RB KCC 22.2 +#> 10 0001 Team Pikachu 14838 Shenault, Laviska WR JAC 22.7 +#> # ... with 432 more rows, and 4 more variables: roster_status <chr>, +#> # drafted <chr>, draft_year <chr>, draft_round <chr>
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_rosters(jml_conn) -
    #> # A tibble: 350 x 7 +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_rosters(jml_conn) +
    #> # A tibble: 350 x 7 #> franchise_id franchise_name player_id player_name pos team age -#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> -#> 1 1 Fake News 2025 Albert Wilson WR MIA 28.4 -#> 2 1 Fake News 4089 Gerald Everett TE LAR 26.4 -#> 3 1 Fake News 6068 Devine Ozigbo RB JAX 24.1 -#> 4 1 Fake News 4036 Corey Davis WR TEN 25.9 -#> 5 1 Fake News 1339 Zach Ertz TE PHI 30 -#> 6 1 Fake News 5068 Kerryon Johnson RB DET 23.4 -#> 7 1 Fake News 5965 Miles Boykin WR BAL 24.1 -#> 8 1 Fake News 289 Drew Brees QB NO 41.8 -#> 9 1 Fake News 4435 Anthony Firkser TE TEN 25.7 -#> 10 1 Fake News 4199 Aaron Jones RB GB 26 -#> # ... with 340 more rows
    # } +#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> +#> 1 1 Fake News 1110 T.Y. Hilton WR IND 31.6 +#> 2 1 Fake News 1339 Zach Ertz TE PHI 30.6 +#> 3 1 Fake News 1426 DeAndre Hopkins WR ARI 29 +#> 4 1 Fake News 1825 Jarvis Landry WR CLE 28.5 +#> 5 1 Fake News 2025 Albert Wilson WR MIA 28.9 +#> 6 1 Fake News 2197 Brandin Cooks WR HOU 27.7 +#> 7 1 Fake News 2319 DeVante Parker WR MIA 28.4 +#> 8 1 Fake News 232 Frank Gore RB NYJ 38.1 +#> 9 1 Fake News 2822 Adam Humphries WR WAS 28 +#> 10 1 Fake News 289 Drew Brees QB NO 42.4 +#> # ... with 340 more rows
    # }
    + + + diff --git a/docs/dev/reference/ff_schedule.html b/docs/dev/reference/ff_schedule.html index ae622a54..8aee549f 100644 --- a/docs/dev/reference/ff_schedule.html +++ b/docs/dev/reference/ff_schedule.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get Schedule

    This function returns a tidy dataframe with one row for every team for every weekly matchup

    -
    ff_schedule(conn, ...)
    +    
    ff_schedule(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_schedule(conn, ...)
    +
    +# S3 method for flea_conn
    +ff_schedule(conn, week = 1:17, ...)
     
     # S3 method for mfl_conn
    -ff_schedule(conn, ...)
    +ff_schedule(conn, ...)
     
     # S3 method for sleeper_conn
    -ff_schedule(conn, ...)
    +ff_schedule(conn, ...)

    Arguments

    @@ -176,7 +257,11 @@

    Arg

    - + + + + +
    ...

    additional args passed to each platform

    for other platforms

    week

    a numeric or numeric vector specifying which weeks to pull

    @@ -187,46 +272,71 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_schedule(ssb_conn) -
    #> # A tibble: 190 x 7 -#> week franchise_id franchise_score spread result opponent_id opponent_score -#> <dbl> <chr> <dbl> <dbl> <chr> <chr> <dbl> -#> 1 1 0001 123. NA W 0002 103. -#> 2 1 0002 103. NA L 0001 123. -#> 3 1 0003 128. NA L 0004 174. -#> 4 1 0004 174. NA W 0003 128. -#> 5 1 0005 144. NA W 0011 130. -#> 6 1 0006 173. NA W 0013 125. -#> 7 1 0007 145. NA W 0010 127. -#> 8 1 0008 185. NA W 0009 176. -#> 9 1 0009 176. NA L 0008 185. -#> 10 1 0010 127. NA L 0007 145. -#> # ... with 180 more rows
    # } +espn_conn <- espn_connect(season = 2020, league_id = 899513) +ff_schedule(espn_conn) +
    #> # A tibble: 140 x 6 +#> week franchise_id franchise_score result opponent_id opponent_score +#> <int> <int> <dbl> <chr> <int> <dbl> +#> 1 1 1 102. L 4 130. +#> 2 1 2 156. W 3 135. +#> 3 1 3 135. L 2 156. +#> 4 1 4 130. W 1 102. +#> 5 1 5 133. W 7 131. +#> 6 1 6 119. L 9 124. +#> 7 1 7 131. L 5 133. +#> 8 1 8 120. L 10 122. +#> 9 1 9 124. W 6 119. +#> 10 1 10 122. W 8 120. +#> # ... with 130 more rows
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_schedule(jml_conn) -
    #> # A tibble: 156 x 6 +conn <- fleaflicker_connect(season = 2019, league_id = 206154) +x <- ff_schedule(conn, week = 2:4) +# } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_schedule(ssb_conn) +
    #> # A tibble: 234 x 6 +#> week franchise_id franchise_score result opponent_id opponent_score +#> <dbl> <chr> <dbl> <chr> <chr> <dbl> +#> 1 1 0001 123. W 0002 103. +#> 2 1 0002 103. L 0001 123. +#> 3 1 0003 128. L 0004 174. +#> 4 1 0004 174. W 0003 128. +#> 5 1 0005 144. W 0011 130. +#> 6 1 0006 173. W 0013 125. +#> 7 1 0007 145. W 0010 127. +#> 8 1 0008 185. W 0009 176. +#> 9 1 0009 176. L 0008 185. +#> 10 1 0010 127. L 0007 145. +#> # ... with 224 more rows
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_schedule(jml_conn) +
    #> # A tibble: 184 x 6 #> week franchise_id franchise_score opponent_id opponent_score result -#> <int> <int> <dbl> <int> <dbl> <chr> -#> 1 1 1 97.8 12 160. L -#> 2 1 2 65.9 8 70.2 L -#> 3 1 3 103. 10 71 W -#> 4 1 4 133. 7 106. W -#> 5 1 5 82.4 6 99.3 L -#> 6 1 6 99.3 5 82.4 W -#> 7 1 7 106. 4 133. L -#> 8 1 8 70.2 2 65.9 W -#> 9 1 9 78.3 11 147 L -#> 10 1 10 71 3 103. L -#> # ... with 146 more rows
    # } +#> <int> <int> <dbl> <int> <dbl> <chr> +#> 1 1 1 97.8 12 160. L +#> 2 1 2 65.9 8 70.2 L +#> 3 1 3 103. 10 71 W +#> 4 1 4 133. 7 106. W +#> 5 1 5 82.4 6 99.3 L +#> 6 1 6 99.3 5 82.4 W +#> 7 1 7 106. 4 133. L +#> 8 1 8 70.2 2 65.9 W +#> 9 1 9 78.3 11 147 L +#> 10 1 10 71 3 103. L +#> # ... with 174 more rows
    # }
    @@ -251,6 +361,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_scoring.html b/docs/dev/reference/ff_scoring.html index 68eb9675..b518de95 100644 --- a/docs/dev/reference/ff_scoring.html +++ b/docs/dev/reference/ff_scoring.html @@ -6,7 +6,7 @@ -Get League Scoring settings — ff_scoring • ffscrapr +Get League Scoring Settings — ff_scoring • ffscrapr @@ -44,13 +44,20 @@ + + + + + + - + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -150,8 +225,8 @@
    @@ -159,13 +234,19 @@

    Get League Scoring settings

    This function returns a dataframe with detailed scoring settings for each league - broken down by event, points, and (if available) position.

    -
    ff_scoring(conn)
    +    
    ff_scoring(conn)
    +
    +# S3 method for espn_conn
    +ff_scoring(conn)
    +
    +# S3 method for flea_conn
    +ff_scoring(conn)
     
     # S3 method for mfl_conn
    -ff_scoring(conn)
    +ff_scoring(conn)
     
     # S3 method for sleeper_conn
    -ff_scoring(conn)
    +ff_scoring(conn)

    Arguments

    @@ -183,6 +264,8 @@

    See a

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_scoring(ssb_conn) -# } +conn <- espn_connect(season = 2020, league_id = 899513) +ff_scoring(conn) +
    #> # A tibble: 627 x 4 +#> pos points stat_id stat_name +#> <chr> <dbl> <int> <chr> +#> 1 QB 0 133 defensive400To449YardsAllowed +#> 2 RB 0 133 defensive400To449YardsAllowed +#> 3 WR 0 133 defensive400To449YardsAllowed +#> 4 TE 0 133 defensive400To449YardsAllowed +#> 5 K 0 133 defensive400To449YardsAllowed +#> 6 P 0 133 defensive400To449YardsAllowed +#> 7 DT 0 133 defensive400To449YardsAllowed +#> 8 DE 0 133 defensive400To449YardsAllowed +#> 9 LB 0 133 defensive400To449YardsAllowed +#> 10 CB 0 133 defensive400To449YardsAllowed +#> # ... with 617 more rows
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_scoring(jml_conn) -
    #> # A tibble: 45 x 2 -#> event points -#> <chr> <dbl> -#> 1 pass_2pt 2 -#> 2 pass_int -2 -#> 3 fgmiss 0 -#> 4 rec_yd 0.1 -#> 5 xpmiss 0 -#> 6 def_pr_td 0 -#> 7 fgm_30_39 0 -#> 8 blk_kick 2 -#> 9 pts_allow_7_13 0 -#> 10 ff 1 -#> # ... with 35 more rows
    # } +joe_conn <- ff_connect(platform = "fleaflicker", league_id = 312861, season = 2020) +ff_scoring(joe_conn) +
    #> # A tibble: 72 x 7 +#> pos event abbrev points label desc event_id +#> <chr> <chr> <chr> <dbl> <chr> <chr> <int> +#> 1 QB Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 +#> 2 RB Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 +#> 3 WR Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 +#> 4 TE Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 +#> 5 QB Passing TD TD 6 Passi~ 6 points for every Passi~ 5 +#> 6 RB Passing TD TD 6 Passi~ 6 points for every Passi~ 5 +#> 7 WR Passing TD TD 6 Passi~ 6 points for every Passi~ 5 +#> 8 TE Passing TD TD 6 Passi~ 6 points for every Passi~ 5 +#> 9 QB 2 Pt Conversio~ 2PC 2 Passi~ 2 points for every 2 Pt ~ 4 +#> 10 RB 2 Pt Conversio~ 2PC 2 Passi~ 2 points for every 2 Pt ~ 4 +#> # ... with 62 more rows
    # } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_scoring(ssb_conn) +
    #> # A tibble: 71 x 6 +#> pos points range event short_desc long_desc +#> <chr> <dbl> <chr> <chr> <chr> <chr> +#> 1 QB 6 0-10 #P Number of Passi~ "This is the total number of Pass~ +#> 2 RB 6 0-10 #P Number of Passi~ "This is the total number of Pass~ +#> 3 WR 6 0-10 #P Number of Passi~ "This is the total number of Pass~ +#> 4 TE 6 0-10 #P Number of Passi~ "This is the total number of Pass~ +#> 5 QB 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ +#> 6 RB 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ +#> 7 WR 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ +#> 8 TE 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ +#> 9 QB -4 0-10 IN Pass Intercepti~ "This is the number of pass inter~ +#> 10 RB -4 0-10 IN Pass Intercepti~ "This is the number of pass inter~ +#> # ... with 61 more rows
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_scoring(jml_conn) +
    #> # A tibble: 169 x 3 +#> pos event points +#> <chr> <chr> <dbl> +#> 1 QB pass_2pt 2 +#> 2 RB pass_2pt 2 +#> 3 WR pass_2pt 2 +#> 4 TE pass_2pt 2 +#> 5 K pass_2pt 2 +#> 6 QB pass_int -2 +#> 7 RB pass_int -2 +#> 8 WR pass_int -2 +#> 9 TE pass_int -2 +#> 10 K pass_int -2 +#> # ... with 159 more rows
    # }
    @@ -237,6 +369,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_scoringhistory.html b/docs/dev/reference/ff_scoringhistory.html new file mode 100644 index 00000000..86a0b690 --- /dev/null +++ b/docs/dev/reference/ff_scoringhistory.html @@ -0,0 +1,391 @@ + + + + + + + + +Get League-Specific Scoring History — ff_scoringhistory • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    (Experimental!) This function reads your league's ff_scoring rules and maps them to nflfastr week-level data. +Not all of the scoring rules from your league may have nflfastr equivalents, but most of the common ones are available!

    +
    + +
    ff_scoringhistory(conn, season, ...)
    +
    +# S3 method for espn_conn
    +ff_scoringhistory(conn, season = 1999:2020, ...)
    +
    +# S3 method for flea_conn
    +ff_scoringhistory(conn, season = 1999:2020, ...)
    +
    +# S3 method for mfl_conn
    +ff_scoringhistory(conn, season = 1999:2020, ...)
    +
    +# S3 method for sleeper_conn
    +ff_scoringhistory(conn, season = 1999:2020, ...)
    + +

    Arguments

    +
    + + + + + + + + + + + + + +
    conn

    a conn object created by ff_connect()

    season

    season a numeric vector of seasons (earliest available year is 1999)

    ...

    other arguments

    + +

    Value

    + +

    A tidy dataframe of weekly fantasy scoring data, one row per player per week

    +

    Methods (by class)

    + + +
      +
    • espn_conn: ESPN: returns scoring history in a flat table, one row per player per week.

    • +
    • flea_conn: Fleaflicker: returns scoring history in a flat table, one row per player per week.

    • +
    • mfl_conn: MFL: returns scoring history in a flat table, one row per player per week.

    • +
    • sleeper_conn: Sleeper: returns scoring history in a flat table, one row per player per week.

    • +
    +

    See also

    + + + +

    Examples

    +
    # \donttest{ +conn <- espn_connect(season = 2020, league_id = 899513) +ff_scoringhistory(conn) +
    #> # A tibble: 112,291 x 24 +#> season week gsis_id sportradar_id espn_id player_name pos team points +#> <dbl> <int> <chr> <chr> <int> <chr> <chr> <chr> <dbl> +#> 1 1999 1 00-0000003 NA NA A.al-Jabbar RB MIA 13.2 +#> 2 1999 2 00-0000003 NA NA A.al-Jabbar RB MIA 6.6 +#> 3 1999 4 00-0000003 NA NA A.al-Jabbar RB MIA 0.2 +#> 4 1999 7 00-0000003 NA NA A.al-Jabbar RB CLE 4.5 +#> 5 1999 8 00-0000003 NA NA A.al-Jabbar RB CLE 3.9 +#> 6 1999 9 00-0000003 NA NA A.al-Jabbar RB CLE 3 +#> 7 1999 10 00-0000003 NA NA A.al-Jabbar RB CLE 6.6 +#> 8 1999 11 00-0000003 NA NA A.al-Jabbar RB CLE 2.3 +#> 9 1999 12 00-0000003 NA NA A.al-Jabbar RB CLE 4.1 +#> 10 1999 13 00-0000003 NA NA A.al-Jabbar RB CLE 5.5 +#> # ... with 112,281 more rows, and 15 more variables: passing_yards <dbl>, +#> # passing_tds <dbl>, interceptions <dbl>, sack_fumbles_lost <dbl>, +#> # passing_2pt_conversions <dbl>, rushing_yards <dbl>, rushing_tds <dbl>, +#> # rushing_fumbles_lost <dbl>, rushing_2pt_conversions <dbl>, +#> # receptions <dbl>, receiving_yards <dbl>, receiving_tds <dbl>, +#> # receiving_fumbles_lost <dbl>, receiving_2pt_conversions <dbl>, +#> # special_teams_tds <dbl>
    # } + +# \donttest{ +# conn <- fleaflicker_connect(2020, 312861) +ff_scoringhistory(conn, season = 2020) +
    #> # A tibble: 5,423 x 24 +#> season week gsis_id sportradar_id espn_id player_name pos team points +#> <dbl> <int> <chr> <chr> <int> <chr> <chr> <chr> <dbl> +#> 1 2020 1 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 20.5 +#> 2 2020 2 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 8.68 +#> 3 2020 3 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 23.9 +#> 4 2020 4 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 32.5 +#> 5 2020 5 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 14.1 +#> 6 2020 6 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 14.6 +#> 7 2020 7 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 36.9 +#> 8 2020 8 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 19.1 +#> 9 2020 9 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 2.36 +#> 10 2020 10 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 31.8 +#> # ... with 5,413 more rows, and 15 more variables: passing_yards <dbl>, +#> # passing_tds <dbl>, interceptions <dbl>, sack_fumbles_lost <dbl>, +#> # passing_2pt_conversions <dbl>, rushing_yards <dbl>, rushing_tds <dbl>, +#> # rushing_fumbles_lost <dbl>, rushing_2pt_conversions <dbl>, +#> # receptions <dbl>, receiving_yards <dbl>, receiving_tds <dbl>, +#> # receiving_fumbles_lost <dbl>, receiving_2pt_conversions <dbl>, +#> # special_teams_tds <dbl>
    # } + +# \donttest{ +# ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +# ff_scoringhistory(ssb_conn) +# } + +# \donttest{ +#' +# conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +# ff_scoringhistory(conn, season = 2020) +# } + +
    +
    + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/ff_standings.html b/docs/dev/reference/ff_standings.html index 1d45443f..dbaeaf1e 100644 --- a/docs/dev/reference/ff_standings.html +++ b/docs/dev/reference/ff_standings.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get Standings

    This function returns a tidy dataframe of season-long fantasy team stats, including H2H wins as well as points, potential points, and all-play.

    -
    ff_standings(conn, ...)
    +    
    ff_standings(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_standings(conn, ...)
    +
    +# S3 method for flea_conn
    +ff_standings(conn, include_allplay = TRUE, include_potentialpoints = TRUE, ...)
     
     # S3 method for mfl_conn
    -ff_standings(conn, ...)
    +ff_standings(conn, ...)
     
     # S3 method for sleeper_conn
    -ff_standings(conn, ...)
    +ff_standings(conn, ...)

    Arguments

    @@ -178,6 +259,14 @@

    Arg

    + + + + + + + +
    ...

    arguments passed to other methods (currently none)

    include_allplay

    TRUE/FALSE - return all-play win pct calculation? defaults to TRUE

    include_potentialpoints

    TRUE/FALSE - return potential points calculation? defaults to TRUE.

    Value

    @@ -187,58 +276,85 @@

    Examples

    # \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_standings(ssb_conn) -
    #> # A tibble: 14 x 20 -#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct -#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 0014 Team Luigi 10 0 0 1 -#> 2 0009 Team Link 7 3 0 0.7 -#> 3 0011 Team Diddy Ko~ 7 3 0 0.7 -#> 4 0006 Team King Ded~ 6 4 0 0.6 -#> 5 0010 Team Yoshi 6 4 0 0.6 -#> 6 0008 Team Fox 6 4 0 0.6 -#> 7 0003 Team Captain ~ 5 5 0 0.5 -#> 8 0007 Team Kirby 5 5 0 0.5 -#> 9 0012 Team Mewtwo 4 6 0 0.4 -#> 10 0005 Team Dr. Mario 4 6 0 0.4 -#> 11 0004 Team Ice Clim~ 3 7 0 0.3 -#> 12 0002 Team Simon Be~ 3 7 0 0.3 -#> 13 0001 Team Pikachu 3 7 0 0.3 -#> 14 0013 Team Ness 1 9 0 0.1 -#> # ... with 14 more variables: allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_ties <dbl>, allplay_winpct <dbl>, points_for <dbl>, -#> # points_against <dbl>, max_points_against <dbl>, min_points_against <dbl>, -#> # potential_points <dbl>, victory_points <dbl>, offensive_points <dbl>, -#> # defensive_points <dbl>, power_rank <dbl>, power_rank_alt <dbl>
    # } +espn_conn <- espn_connect(season = 2020, league_id = 899513) +ff_standings(espn_conn) +
    #> # A tibble: 10 x 12 +#> franchise_id franchise_name league_rank h2h_wins h2h_losses h2h_ties +#> <int> <chr> <int> <int> <int> <int> +#> 1 1 "The Early GGod" 7 3 9 0 +#> 2 2 "Coom Dumpster" 3 7 5 0 +#> 3 3 "PAKI STANS" 6 4 8 0 +#> 4 4 "I'm Also Sad " 5 7 5 0 +#> 5 5 "The Juggernaut" 1 9 3 0 +#> 6 6 "OBJ's Personal Porta ~ 4 8 4 0 +#> 7 7 "Tony El Tigre" 9 5 7 0 +#> 8 8 "Big Coomers" 8 6 6 0 +#> 9 9 "RAFI CUNADO" 2 7 5 0 +#> 10 10 "Austin \U0001f410Drew~ 10 4 8 0 +#> # ... with 6 more variables: h2h_winpct <dbl>, points_for <dbl>, +#> # points_against <dbl>, allplay_wins <dbl>, allplay_losses <dbl>, +#> # allplay_winpct <dbl>
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = 522458773317046272, season = 2020) -ff_standings(jml_conn) -
    #> # A tibble: 12 x 12 -#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct -#> <int> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 1 Fake News 6 4 0 0.6 -#> 2 2 KingGabe 0 10 0 0 -#> 3 3 solarpool 7 3 0 0.7 -#> 4 4 The FANTom Me~ 6 4 0 0.6 -#> 5 5 Barbarians 3 7 0 0.3 -#> 6 6 sox05syd 6 4 0 0.6 -#> 7 7 Flipadelphia05 7 3 0 0.7 -#> 8 8 Hocka Flocka 6 4 0 0.6 -#> 9 9 ZPMiller97 4 6 0 0.4 -#> 10 10 JMLarkin 1 9 0 0.1 -#> 11 11 Permian Panth~ 7 3 0 0.7 -#> 12 12 jaydk 7 3 0 0.7 -#> # ... with 6 more variables: points_for <dbl>, points_against <dbl>, -#> # potential_points <dbl>, allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_winpct <dbl>
    # } +conn <- fleaflicker_connect(season = 2020, league_id = 206154) +x <- ff_standings(conn) +# } + +# \donttest{ +ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) +ff_standings(ssb_conn) +
    #> # A tibble: 14 x 20 +#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct +#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> +#> 1 0009 Team Link 10 3 0 0.769 +#> 2 0010 Team Yoshi 9 4 0 0.692 +#> 3 0014 Team Luigi 10 3 0 0.769 +#> 4 0003 Team Donkey Kong 6 7 0 0.462 +#> 5 0006 Team King Dedede 8 5 0 0.615 +#> 6 0011 Team Diddy Kong 8 5 0 0.615 +#> 7 0008 Team Bowser 7 6 0 0.538 +#> 8 0007 Team Kirby 7 6 0 0.538 +#> 9 0002 Team Simon Belmont 6 7 0 0.462 +#> 10 0004 Team Ice Climbers 5 8 0 0.385 +#> 11 0005 Team Dr. Mario 5 8 0 0.385 +#> 12 0013 Team Ness 3 10 0 0.231 +#> 13 0012 Team Mewtwo 4 9 0 0.308 +#> 14 0001 Team Pikachu 3 10 0 0.231 +#> # ... with 14 more variables: allplay_wins <dbl>, allplay_losses <dbl>, +#> # allplay_ties <dbl>, allplay_winpct <dbl>, points_for <dbl>, +#> # points_against <dbl>, max_points_against <dbl>, min_points_against <dbl>, +#> # potential_points <dbl>, victory_points <dbl>, offensive_points <dbl>, +#> # defensive_points <dbl>, power_rank <dbl>, power_rank_alt <dbl>
    # } + +# \donttest{ +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +ff_standings(jml_conn) +
    #> # A tibble: 12 x 12 +#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct +#> <int> <chr> <dbl> <dbl> <dbl> <dbl> +#> 1 1 Fake News 8 5 0 0.615 +#> 2 2 KingGabe 1 12 0 0.0769 +#> 3 3 solarpool 8 5 0 0.615 +#> 4 4 The FANTom Menace 8 5 0 0.615 +#> 5 5 Barbarians 6 7 0 0.462 +#> 6 6 sox05syd 8 5 0 0.615 +#> 7 7 Flipadelphia05 10 3 0 0.769 +#> 8 8 Hocka Flocka 7 6 0 0.538 +#> 9 9 ZPMiller97 4 9 0 0.308 +#> 10 10 JMLarkin 1 12 0 0.0769 +#> 11 11 Permian Panthers 8 5 0 0.615 +#> 12 12 jaydk 9 4 0 0.692 +#> # ... with 6 more variables: points_for <dbl>, points_against <dbl>, +#> # potential_points <dbl>, allplay_wins <dbl>, allplay_losses <dbl>, +#> # allplay_winpct <dbl>
    # }
    @@ -263,6 +379,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_starter_positions.html b/docs/dev/reference/ff_starter_positions.html new file mode 100644 index 00000000..89bc4956 --- /dev/null +++ b/docs/dev/reference/ff_starter_positions.html @@ -0,0 +1,377 @@ + + + + + + + + +Get Starting Lineup Settings — ff_starter_positions • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function returns a tidy dataframe with positional lineup rules.

    +
    + +
    ff_starter_positions(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_starter_positions(conn, ...)
    +
    +# S3 method for flea_conn
    +ff_starter_positions(conn, ...)
    +
    +# S3 method for mfl_conn
    +ff_starter_positions(conn, ...)
    +
    +# S3 method for sleeper_conn
    +ff_starter_positions(conn, ...)
    + +

    Arguments

    + + + + + + + + + + +
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    + +

    Value

    + +

    A tidy dataframe of positional lineup rules, one row per position with minimum and maximum starters as well as total starter calculations.

    +

    Methods (by class)

    + + +
      +
    • espn_conn: ESPN: returns min/max starters for each main player position

    • +
    • flea_conn: Fleaflicker: returns minimum and maximum starters for each player position.

    • +
    • mfl_conn: MFL: returns minimum and maximum starters for each player position.

    • +
    • sleeper_conn: Sleeper: returns minimum and maximum starters for each player position.

    • +
    + +

    Examples

    +
    # \donttest{ +conn <- espn_connect(season = 2020, league_id = 1178049) +ff_starter_positions(conn) +
    #> # A tibble: 6 x 7 +#> pos min max offense_starters defense_starters kdst_starters +#> <chr> <int> <int> <int> <int> <int> +#> 1 QB 1 1 7 0 2 +#> 2 RB 2 4 7 0 2 +#> 3 WR 3 5 7 0 2 +#> 4 TE 1 3 7 0 2 +#> 5 DST 1 1 7 0 2 +#> 6 K 1 1 7 0 2 +#> # ... with 1 more variable: total_starters <int>
    # } + +# \donttest{ +conn <- fleaflicker_connect(season = 2020, league_id = 206154) +ff_starter_positions(conn) +
    #> # A tibble: 10 x 7 +#> pos min max offense_starters defense_starters kdst_starters +#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> +#> 1 CB 2 4 7 8 1 +#> 2 EDR 0 4 7 8 1 +#> 3 IL 0 4 7 8 1 +#> 4 K 1 1 7 8 1 +#> 5 LB 2 4 7 8 1 +#> 6 QB 1 1 7 8 1 +#> 7 RB 2 3 7 8 1 +#> 8 S 2 4 7 8 1 +#> 9 TE 1 2 7 8 1 +#> 10 WR 2 3 7 8 1 +#> # ... with 1 more variable: total_starters <dbl>
    # } + +# \donttest{ +dlfidp_conn <- mfl_connect(2020, league_id = 33158) +ff_starter_positions(conn = dlfidp_conn) +
    #> # A tibble: 9 x 7 +#> pos min max offense_starters defense_starters kdst_starters +#> <chr> <int> <int> <dbl> <dbl> <int> +#> 1 QB 1 1 8 10 0 +#> 2 RB 1 6 8 10 0 +#> 3 WR 1 6 8 10 0 +#> 4 TE 0 5 8 10 0 +#> 5 DT 1 3 8 10 0 +#> 6 DE 2 4 8 10 0 +#> 7 LB 2 4 8 10 0 +#> 8 CB 2 4 8 10 0 +#> 9 S 1 3 8 10 0 +#> # ... with 1 more variable: total_starters <int>
    # } + +# \donttest{ +jml_conn <- sleeper_connect(league_id = "652718526494253056", season = 2021) +jml_starters <- ff_starter_positions(jml_conn) +# } + +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/ff_starters.html b/docs/dev/reference/ff_starters.html index 1e87cc18..7fc133a5 100644 --- a/docs/dev/reference/ff_starters.html +++ b/docs/dev/reference/ff_starters.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get Starting Lineups

    This function returns a tidy dataframe with one row for every starter (and bench) for every week and their scoring, if available.

    -
    ff_starters(conn, ...)
    +    
    ff_starters(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_starters(conn, weeks = 1:17, ...)
    +
    +# S3 method for flea_conn
    +ff_starters(conn, week = 1:17, ...)
     
     # S3 method for mfl_conn
    -ff_starters(conn, week = "all", season = NULL, ...)
    +ff_starters(conn, week = 1:17, season = NULL, ...)
     
     # S3 method for sleeper_conn
    -ff_starters(conn, week = 1:17, ...)
    +ff_starters(conn, week = 1:17, ...)

    Arguments

    @@ -178,6 +259,10 @@

    Arg

    + + + + @@ -195,33 +280,59 @@

    Examples

    # \donttest{ -dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_starters(conn = dlf_conn, week = 1:2) -
    #> # A tibble: 938 x 11 -#> franchise_id franchise_name season week starter_status should_start -#> <chr> <chr> <dbl> <int> <chr> <dbl> -#> 1 0013 Advance Repti~ 2020 1 starter 1 -#> 2 0013 Advance Repti~ 2020 1 starter 1 -#> 3 0013 Advance Repti~ 2020 1 starter 1 -#> 4 0013 Advance Repti~ 2020 1 starter 1 -#> 5 0013 Advance Repti~ 2020 1 starter 1 -#> 6 0013 Advance Repti~ 2020 1 starter 1 -#> 7 0013 Advance Repti~ 2020 1 starter 1 -#> 8 0013 Advance Repti~ 2020 1 starter 1 -#> 9 0013 Advance Repti~ 2020 1 starter 1 -#> 10 0013 Advance Repti~ 2020 1 nonstarter 0 -#> # ... with 928 more rows, and 5 more variables: player_score <dbl>, -#> # player_id <chr>, player_name <chr>, pos <chr>, team <chr>
    # } +conn <- espn_connect(season = 2020, league_id = 1178049) +ff_starters(conn, weeks = 1:3) +
    #> # A tibble: 714 x 11 +#> week franchise_id franchise_name franchise_score lineup_slot player_score +#> <int> <int> <chr> <dbl> <chr> <dbl> +#> 1 1 1 Rushin' Collusion 118 QB 27.5 +#> 2 1 1 Rushin' Collusion 118 RB 9.2 +#> 3 1 1 Rushin' Collusion 118 RB 6.7 +#> 4 1 1 Rushin' Collusion 118 WR 13.1 +#> 5 1 1 Rushin' Collusion 118 WR 8.6 +#> 6 1 1 Rushin' Collusion 118 WR 12.6 +#> 7 1 1 Rushin' Collusion 118 TE 16.6 +#> 8 1 1 Rushin' Collusion 118 DST 0 +#> 9 1 1 Rushin' Collusion 118 K 9 +#> 10 1 1 Rushin' Collusion 118 BE 4.8 +#> # ... with 704 more rows, and 5 more variables: player_id <int>, +#> # player_name <chr>, pos <chr>, team <chr>, eligible_lineup_slots <list>
    # } # \donttest{ -jml_conn <- sleeper_connect(league_id = 522458773317046272, season = 2020) -jml_starters <- ff_starters(jml_conn) +conn <- fleaflicker_connect(season = 2020, league_id = 206154) +ff_starters(conn) +# } + +# \donttest{ +dlf_conn <- mfl_connect(2020, league_id = 37920) +ff_starters(conn = dlf_conn) +
    #> # A tibble: 6,371 x 11 +#> franchise_id franchise_name season week starter_status should_start +#> <chr> <chr> <dbl> <int> <chr> <dbl> +#> 1 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 2 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 3 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 4 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 5 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 6 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 7 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 8 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 9 0013 Advance Reptilian Sola~ 2020 1 starter 1 +#> 10 0013 Advance Reptilian Sola~ 2020 1 nonstarter 0 +#> # ... with 6,361 more rows, and 5 more variables: player_score <dbl>, +#> # player_id <chr>, player_name <chr>, pos <chr>, team <chr>
    # } + +# \donttest{ +jml_conn <- sleeper_connect(league_id = "522458773317046272", season = 2020) +jml_starters <- ff_starters(jml_conn) # }
    @@ -247,6 +358,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_transactions.html b/docs/dev/reference/ff_transactions.html index 669757c5..71b4a176 100644 --- a/docs/dev/reference/ff_transactions.html +++ b/docs/dev/reference/ff_transactions.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + +
    + +
    + + @@ -152,7 +227,7 @@
    @@ -161,13 +236,19 @@

    Get League Transactions

    Each trade is represented twice, once per each team.

    -
    ff_transactions(conn, ...)
    +    
    ff_transactions(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_transactions(conn, limit = 1000, ...)
    +
    +# S3 method for flea_conn
    +ff_transactions(conn, franchise_id = NULL, ...)
     
     # S3 method for mfl_conn
    -ff_transactions(conn, custom_players = FALSE, ...)
    +ff_transactions(conn, custom_players = deprecated(), ...)
     
     # S3 method for sleeper_conn
    -ff_transactions(conn, week = 1:17, ...)
    +ff_transactions(conn, week = 1:17, ...)

    Arguments

    ...

    other arguments (currently unused)

    weeks

    which weeks to calculate, a number or numeric vector

    week

    a numeric or one of YTD (year-to-date) or AVG (average to date)

    @@ -180,9 +261,17 @@

    Arg

    + + + + + + + + - + @@ -197,47 +286,67 @@

    Examples

    -
    # \donttest{ -dlf_conn <- mfl_connect(2019, league_id = 37920) -ff_transactions(dlf_conn) -
    #> # A tibble: 1,146 x 12 -#> timestamp type type_desc franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2019-12-19 11:56:49 FREE~ added 0003 Electric Spid~ 13868 -#> 2 2019-12-19 11:56:49 FREE~ dropped 0003 Electric Spid~ 13387 -#> 3 2019-12-19 03:03:13 FREE~ added 0019 Advance Repti~ 12857 -#> 4 2019-12-19 03:03:13 FREE~ dropped 0019 Advance Repti~ 11186 -#> 5 2019-12-19 03:02:26 FREE~ added 0019 Advance Repti~ 13868 -#> 6 2019-12-19 03:02:26 FREE~ dropped 0019 Advance Repti~ 14305 -#> 7 2019-12-15 17:28:15 FREE~ added 0003 Electric Spid~ 12197 -#> 8 2019-12-15 17:27:28 FREE~ dropped 0003 Electric Spid~ 12623 -#> 9 2019-12-15 17:27:00 FREE~ added 0003 Electric Spid~ 13387 -#> 10 2019-12-15 17:26:27 IR deactiva~ 0003 Electric Spid~ 14138 -#> # ... with 1,136 more rows, and 6 more variables: player_name <chr>, pos <chr>, -#> # team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    # } +
    if (FALSE) { +# Marked as don't run because this endpoint requires private authentication + +conn <- espn_connect( + season = 2020, + league_id = 1178049, + swid = Sys.getenv("TAN_SWID"), + espn_s2 = Sys.getenv("TAN_ESPN_S2") +) +ff_transactions(conn) +} + +# \donttest{ +conn <- fleaflicker_connect(season = 2020, league_id = 312861) +ff_transactions(conn) +
    #> # A tibble: 283 x 12 +#> timestamp type type_desc franchise_id franchise_name player_id +#> <dttm> <chr> <chr> <int> <chr> <glue> +#> 1 2021-06-07 12:28:41 free_ag~ dropped 1581803 ZachFarni's Te~ 15662 +#> 2 2021-06-07 11:55:56 free_ag~ dropped 1581719 Jmuthers's Team 11455 +#> 3 2021-06-06 16:45:46 free_ag~ dropped 1581726 SCJaguars's Te~ 15814 +#> 4 2021-06-04 13:00:05 free_ag~ dropped 1578553 Running Bear 15723 +#> 5 2021-06-01 15:56:47 free_ag~ dropped 1581721 Mjenkyns2004's~ 11194 +#> 6 2021-06-01 11:50:42 free_ag~ dropped 1581719 Jmuthers's Team 14774 +#> 7 2021-06-01 11:50:33 free_ag~ dropped 1581719 Jmuthers's Team 14709 +#> 8 2021-05-31 10:43:46 free_ag~ dropped 1578553 Running Bear 14714 +#> 9 2021-05-31 10:43:30 free_ag~ dropped 1578553 Running Bear 11188 +#> 10 2021-05-31 10:43:22 free_ag~ dropped 1578553 Running Bear 14749 +#> # ... with 273 more rows, and 6 more variables: player_name <glue>, pos <chr>, +#> # team <chr>, trade_partner_id <int>, trade_partner_name <chr>, +#> # trade_id <int>
    # } + +# \donttest{ +dlf_conn <- mfl_connect(2019, league_id = 37920) +ff_transactions(dlf_conn) +
    #> # A tibble: 1,146 x 12 +#> timestamp type type_desc franchise_id franchise_name player_id +#> <dttm> <chr> <chr> <chr> <chr> <chr> +#> 1 2019-12-19 11:56:49 FREE_~ added 0003 Electric Spiders 13868 +#> 2 2019-12-19 11:56:49 FREE_~ dropped 0003 Electric Spiders 13387 +#> 3 2019-12-19 03:03:13 FREE_~ added 0019 Advance Reptilia~ 12857 +#> 4 2019-12-19 03:03:13 FREE_~ dropped 0019 Advance Reptilia~ 11186 +#> 5 2019-12-19 03:02:26 FREE_~ added 0019 Advance Reptilia~ 13868 +#> 6 2019-12-19 03:02:26 FREE_~ dropped 0019 Advance Reptilia~ 14305 +#> 7 2019-12-15 17:28:15 FREE_~ added 0003 Electric Spiders 12197 +#> 8 2019-12-15 17:27:28 FREE_~ dropped 0003 Electric Spiders 12623 +#> 9 2019-12-15 17:27:00 FREE_~ added 0003 Electric Spiders 13387 +#> 10 2019-12-15 17:26:27 IR deactiva~ 0003 Electric Spiders 14138 +#> # ... with 1,136 more rows, and 6 more variables: player_name <chr>, pos <chr>, +#> # team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    # } # \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_transactions(jml_conn,week = 2:3) -
    #> # A tibble: 109 x 12 -#> timestamp type type_desc franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2020-09-30 07:04:24 waiv~ added 1 Fake News 4992 -#> 2 2020-09-30 07:04:24 waiv~ added 1 Fake News 4994 -#> 3 2020-09-30 07:04:24 waiv~ added 1 Fake News 5113 -#> 4 2020-09-30 07:04:24 waiv~ added 1 Fake News 5102 -#> 5 2020-09-30 07:04:24 waiv~ added 7 Flipadelphia05 4994 -#> 6 2020-09-30 07:04:24 waiv~ dropped 7 Flipadelphia05 7050 -#> 7 2020-09-30 07:04:24 waiv~ added 7 Flipadelphia05 5285 -#> 8 2020-09-30 07:04:24 waiv~ dropped 7 Flipadelphia05 7050 -#> 9 2020-09-30 07:04:24 waiv~ added 4 The FANTom Me~ 5102 -#> 10 2020-09-30 07:04:24 waiv~ added 3 solarpool 2390 -#> # ... with 99 more rows, and 6 more variables: player_name <chr>, pos <chr>, -#> # team <chr>, bbid_amount <int>, trade_partner <chr>, comment <chr>
    # } +jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) +x <- ff_transactions(jml_conn, week = 1:17) +# }
    @@ -262,6 +371,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/ff_userleagues.html b/docs/dev/reference/ff_userleagues.html index 548c680a..33029136 100644 --- a/docs/dev/reference/ff_userleagues.html +++ b/docs/dev/reference/ff_userleagues.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + +
    + +
    + + @@ -151,7 +226,7 @@
    @@ -159,13 +234,19 @@

    Get User Leagues

    This function returns a tidy dataframe with one row for every league a user is in. This requries authentication cookies for MFL usage.

    -
    ff_userleagues(conn, ...)
    +    
    ff_userleagues(conn, ...)
    +
    +# S3 method for espn_conn
    +ff_userleagues(conn = NULL, ...)
    +
    +# S3 method for flea_conn
    +ff_userleagues(conn = NULL, user_email = NULL, season = NULL, ...)
     
     # S3 method for mfl_conn
    -ff_userleagues(conn, season = NULL, ...)
    +ff_userleagues(conn, season = NULL, ...)
     
     # S3 method for sleeper_conn
    -ff_userleagues(conn = NULL, user_name = NULL, season = NULL, ...)
    +ff_userleagues(conn = NULL, user_name = NULL, season = NULL, ...)

    Arguments

    ...

    additional args for other methods

    limit

    number of most recent transactions to return

    franchise_id

    fleaflicker returns transactions grouped by franchise id, pass a list here to filter

    custom_players

    TRUE or FALSE - fetch custom players

    [Deprecated] - now returns custom players by default

    week
    @@ -178,6 +259,10 @@

    Arg

    + + + + @@ -195,12 +280,15 @@

    See also

    -

    sleeper_userleagues to call this function for Sleeper leagues without first creating a connection object.

    +

    fleaflicker_userleagues() to call this function for flea leagues without first creating a connection object.

    +

    sleeper_userleagues() to call this function for Sleeper leagues without first creating a connection object.

    + + + diff --git a/docs/dev/reference/ffscrapr-package.html b/docs/dev/reference/ffscrapr-package.html new file mode 100644 index 00000000..03ba706f --- /dev/null +++ b/docs/dev/reference/ffscrapr-package.html @@ -0,0 +1,313 @@ + + + + + + + + +ffscrapr: API Client for Fantasy Football League Platforms — ffscrapr-package • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Helps access various Fantasy Football APIs by handling + authentication and rate-limiting, forming appropriate calls, and + returning tidy dataframes which can be easily connected to other data + sources.

    +
    + + + +

    See also

    + + +

    Author

    + +

    Maintainer: Tan Ho tan@tanho.ca

    +

    Other contributors:

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/figures/logo.svg b/docs/dev/reference/figures/logo.svg new file mode 100644 index 00000000..c25272b8 --- /dev/null +++ b/docs/dev/reference/figures/logo.svg @@ -0,0 +1,141 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dev/reference/fleaflicker_connect.html b/docs/dev/reference/fleaflicker_connect.html new file mode 100644 index 00000000..fcbe54c6 --- /dev/null +++ b/docs/dev/reference/fleaflicker_connect.html @@ -0,0 +1,333 @@ + + + + + + + + +Connect to Fleaflicker League — fleaflicker_connect • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function creates a connection object which stores parameters and a user ID if available.

    +
    + +
    fleaflicker_connect(
    +  season = NULL,
    +  league_id = NULL,
    +  user_email = NULL,
    +  user_agent = NULL,
    +  rate_limit = TRUE,
    +  rate_limit_number = NULL,
    +  rate_limit_seconds = NULL,
    +  ...
    +)
    + +

    Arguments

    +
    ...

    arguments that may be passed to other methods (for method consistency)

    user_email

    the username to look up - defaults to user created in conn if available

    season

    the season to look up leagues for

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    season

    Season to access on Fleaflicker - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID

    user_email

    Optional - attempts to get user's user ID by email

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is under 1000 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    other arguments (for other methods, for R compat)

    + +

    Value

    + +

    a list that stores Fleaflicker connection objects

    + + + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/fleaflicker_getendpoint.html b/docs/dev/reference/fleaflicker_getendpoint.html new file mode 100644 index 00000000..05f6cf41 --- /dev/null +++ b/docs/dev/reference/fleaflicker_getendpoint.html @@ -0,0 +1,307 @@ + + + + + + + + +GET any Fleaflicker endpoint — fleaflicker_getendpoint • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the Fleaflicker API reference page.

    +
    + +
    fleaflicker_getendpoint(endpoint, ...)
    + +

    Arguments

    + + + + + + + + + + +
    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    + +

    Value

    + +

    A list object containing the query, response, and parsed content.

    +

    Details

    + +

    Check out the vignette for more details and example usage.

    +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/fleaflicker_players.html b/docs/dev/reference/fleaflicker_players.html new file mode 100644 index 00000000..41ff44d5 --- /dev/null +++ b/docs/dev/reference/fleaflicker_players.html @@ -0,0 +1,309 @@ + + + + + + + + +Fleaflicker players library — fleaflicker_players • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    A cached table of Fleaflicker NFL players. Will store in memory for each session! +(via memoise in zzz.R)

    +
    + +
    fleaflicker_players(conn, page_limit = NULL)
    + +

    Arguments

    + + + + + + + + + + +
    conn

    a conn object created by ff_connect()

    page_limit

    A number limiting the number of players to return, or NULL (default) returns all

    + +

    Value

    + +

    a dataframe containing all ~7000+ players in the Fleaflicker database

    + +

    Examples

    +
    # \donttest{ +conn <- fleaflicker_connect(2020, 312861) +player_list <- fleaflicker_players(conn, page_limit = 2) +# } + +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/fleaflicker_userleagues.html b/docs/dev/reference/fleaflicker_userleagues.html new file mode 100644 index 00000000..55a6bdb1 --- /dev/null +++ b/docs/dev/reference/fleaflicker_userleagues.html @@ -0,0 +1,305 @@ + + + + + + + + +Fleaflicker - Get User Leagues — fleaflicker_userleagues • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    This function returns the leagues that a specific user is in. +This variant can be used without first creating a connection object.

    +
    + +
    fleaflicker_userleagues(user_email, season = NULL)
    + +

    Arguments

    + + + + + + + + + + +
    user_email

    the username to look up

    season

    the season to return leagues from - defaults to current year based on heuristics

    + +

    Value

    + +

    a dataframe of leagues for the specified user

    +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/index.html b/docs/dev/reference/index.html index b0791b73..9be74095 100644 --- a/docs/dev/reference/index.html +++ b/docs/dev/reference/index.html @@ -44,12 +44,19 @@ + + + + + + - + + @@ -84,7 +91,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -92,7 +99,7 @@ + + @@ -163,21 +238,12 @@

    Reference

    -

    ffscrapr reference

    -

    +

    Main

    +

    These are the primary functions of ffscrapr and are designed to work for all platforms.

    - - - - -

    FF

    -

    The main interface - these functions are designed to wrap the platform-specific methods to return generic input.

    - - - @@ -234,7 +300,13 @@

    F

    ff_scoring()

    -

    Get League Scoring settings

    +

    Get League Scoring Settings

    + + + +

    ff_scoringhistory()

    + +

    Get League-Specific Scoring History

    @@ -249,6 +321,12 @@

    F

    Get Starting Lineups

    + +

    ff_starter_positions()

    + +

    Get Starting Lineup Settings

    + +

    ff_transactions()

    @@ -261,14 +339,14 @@

    F

    Get User Leagues

    - -

    MFL

    +

    MFL

    Additional functions designed/optimized for the MFL platform.

    + @@ -292,14 +370,14 @@

    MFL players library

    - -

    Sleeper

    +

    Sleeper

    Additional functions designed/optimized for the Sleeper platform.

    + @@ -314,7 +392,7 @@

    sleeper_getendpoint()

    -

    GET any SLEEPER endpoint

    +

    GET any Sleeper endpoint

    @@ -328,20 +406,112 @@

    +

    Fleaflicker

    +

    Additional functions designed/optimized for the Fleaflicker platform.

    + + + + + + + + + + +

    fleaflicker_connect()

    + +

    Connect to Fleaflicker League

    + + + +

    fleaflicker_getendpoint()

    + +

    GET any Fleaflicker endpoint

    + + + +

    fleaflicker_players()

    + +

    Fleaflicker players library

    + + + +

    fleaflicker_userleagues()

    + +

    Fleaflicker - Get User Leagues

    + + + + +

    ESPN

    +

    Additional functions designed/optimized for the ESPN platform

    + + + + + + + + +

    espn_connect()

    + +

    Connect to ESPN League

    + + + +

    espn_getendpoint()

    + +

    GET ESPN fantasy league endpoint

    + + + +

    espn_getendpoint_raw()

    + +

    GET ESPN endpoint (raw)

    + + + +

    espn_players()

    + +

    ESPN players library

    + + + +

    espn_potentialpoints()

    + +

    ESPN Potential Points

    + + -

    DynastyProcess

    +

    DynastyProcess

    Functions to interface with DynastyProcess data

    + + +

    dp_cleannames()

    + +

    Clean Names

    + + + +

    dp_name_mapping

    + +

    Alternate name mappings

    + +

    dp_playerids()

    @@ -353,15 +523,46 @@

    +

    nflfastR

    +

    Functions to interface with nflfastR data

    + + + + + + + + +

    nflfastr_rosters()

    + +

    Import nflfastr roster data

    + + + +

    nflfastr_stat_mapping

    + +

    Mappings for nflfastr to fantasy platform scoring

    + + + +

    nflfastr_weekly()

    + +

    Import latest nflfastr weekly stats

    + + -

    Misc

    +

    Miscellaneous

    Additional helper functions

    + @@ -371,6 +572,12 @@

    <

    .ff_clear_cache()

    Empty Function Cache

    + + + +

    %>%

    + +

    Pipe operator

    @@ -397,6 +604,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/mfl_allrules.html b/docs/dev/reference/mfl_allrules.html new file mode 100644 index 00000000..07c6f635 --- /dev/null +++ b/docs/dev/reference/mfl_allrules.html @@ -0,0 +1,285 @@ + + + + + + + + +MFL rules library - memoised via zzz.R — mfl_allrules • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    MFL rules library - memoised via zzz.R

    +
    + +
    mfl_allrules(conn)
    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/mfl_connect.html b/docs/dev/reference/mfl_connect.html index e149d44c..ad2cb2e2 100644 --- a/docs/dev/reference/mfl_connect.html +++ b/docs/dev/reference/mfl_connect.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -159,18 +234,18 @@

    Connect to MFL League

    This function creates a connection object which stores parameters and gets a login-cookie if available

    -
    mfl_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  APIKEY = NULL,
    -  user_name = NULL,
    -  password = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    +
    mfl_connect(
    +  season = NULL,
    +  league_id = NULL,
    +  APIKEY = NULL,
    +  user_name = NULL,
    +  password = NULL,
    +  user_agent = NULL,
    +  rate_limit = TRUE,
    +  rate_limit_number = NULL,
    +  rate_limit_seconds = NULL,
    +  ...
    +)

    Arguments

    @@ -220,12 +295,10 @@

    Arg

    Value

    a connection object to be used with ff_* functions

    -

    See also

    - -

    Examples

    -
    mfl_connect(season = 2020, league_id = 54040) +
    # \donttest{ +mfl_connect(season = 2020, league_id = 54040)
    #> <MFL connection 2020_54040> #> List of 5 #> $ platform : chr "MFL" @@ -233,7 +306,7 @@

    Examp #> $ league_id : chr "54040" #> $ APIKEY : NULL #> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"

    mfl_connect(season = 2019, league_id = 54040, rate_limit = FALSE) +#> - attr(*, "class")= chr "mfl_conn"
    mfl_connect(season = 2019, league_id = 54040, rate_limit = FALSE)
    #> <MFL connection 2019_54040> #> List of 5 #> $ platform : chr "MFL" @@ -241,7 +314,8 @@

    Examp #> $ league_id : chr "54040" #> $ APIKEY : NULL #> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"

    +#> - attr(*, "class")= chr "mfl_conn"
    # } +
    + + + diff --git a/docs/dev/reference/mfl_getendpoint.html b/docs/dev/reference/mfl_getendpoint.html index 3c06a356..f81e0d5e 100644 --- a/docs/dev/reference/mfl_getendpoint.html +++ b/docs/dev/reference/mfl_getendpoint.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + +
    + +
    + + @@ -159,7 +234,7 @@

    GET any MFL endpoint

    Create a GET request to any MFL export endpoint.

    -
    mfl_getendpoint(conn, endpoint, ...)
    +
    mfl_getendpoint(conn, endpoint, ...)

    Arguments

    @@ -213,6 +288,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/mfl_players.html b/docs/dev/reference/mfl_players.html index 8d000f46..b8bf6972 100644 --- a/docs/dev/reference/mfl_players.html +++ b/docs/dev/reference/mfl_players.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + +
    + +
    + + @@ -161,7 +236,7 @@

    MFL players library

    (via memoise in zzz.R)

    -
    mfl_players(conn = NULL)
    +
    mfl_players(conn = NULL)

    Arguments

    @@ -178,21 +253,21 @@

    Value

    Examples

    # \donttest{ -player_list <- mfl_players() -dplyr::sample_n(player_list, 5) -
    #> # A tibble: 5 x 25 -#> player_id player_name pos age team status draft_year draft_team -#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> -#> 1 12760 Worley, Da~ CB 25.7 BUF NA 2016 CAR -#> 2 13256 Bowser, Ty~ LB 25.5 BAL NA 2017 BAL -#> 3 15002 Coughlin, ~ LB 23.3 NYG R 2020 NYG -#> 4 14275 Egbule, Em~ LB 24.1 LAC NA 2019 LAC -#> 5 9763 Fewell, Pe~ Coach NA FA NA 0 FA -#> # ... with 17 more variables: draft_round <chr>, draft_pick <chr>, -#> # stats_global_id <chr>, stats_id <chr>, fleaflicker_id <chr>, cbs_id <chr>, -#> # sportsdata_id <chr>, rotoworld_id <chr>, rotowire_id <chr>, nfl_id <chr>, -#> # espn_id <chr>, twitter_username <chr>, college <chr>, height <chr>, -#> # weight <chr>, jersey <chr>, birthdate <date>
    # } +player_list <- mfl_players() +dplyr::sample_n(player_list, 5) +
    #> # A tibble: 5 x 25 +#> player_id player_name pos age team status draft_year draft_team +#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> +#> 1 13188 Howard, O.J. TE 26.6 TBB NA 2017 TBB +#> 2 13640 Callaway, Antonio WR 24.4 KCC NA 2018 CLE +#> 3 15392 St-Juste, Benjamin CB 23.8 WAS R 2021 WAS +#> 4 14878 Gross-Matos, Yetur DE 23.3 CAR NA 2020 CAR +#> 5 9940 Woods, Al DT 34.2 SEA NA 2010 NOS +#> # ... with 17 more variables: draft_round <chr>, draft_pick <chr>, +#> # stats_global_id <chr>, stats_id <chr>, cbs_id <chr>, fleaflicker_id <chr>, +#> # sportsdata_id <chr>, rotoworld_id <chr>, rotowire_id <chr>, nfl_id <chr>, +#> # espn_id <chr>, twitter_username <chr>, college <chr>, height <chr>, +#> # weight <chr>, birthdate <date>, jersey <chr>
    # }
    @@ -217,6 +292,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/nflfastr_rosters.html b/docs/dev/reference/nflfastr_rosters.html new file mode 100644 index 00000000..295675c8 --- /dev/null +++ b/docs/dev/reference/nflfastr_rosters.html @@ -0,0 +1,329 @@ + + + + + + + + +Import nflfastr roster data — nflfastr_rosters • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Fetches a copy of roster data from nflfastr's data repository. +The same input/output as nflfastr's fast_scraper_roster function.

    +
    + +
    nflfastr_rosters(seasons)
    + +

    Arguments

    +
    + + + + + +
    seasons

    A numeric vector of seasons, earliest of which is 1999

    + +

    Value

    + +

    Data frame where each individual row represents a player in the roster of the given team and season

    +

    Details

    + +

    If you have any issues with the output of this data, please open an issue in +the nflfastr repository.

    +

    See also

    + + + +

    Examples

    +
    # \donttest{ +nflfastr_rosters(seasons = 2019:2020) +
    #> # A tibble: 7,735 x 24 +#> season team position depth_chart_positi~ jersey_number status full_name +#> <dbl> <chr> <chr> <chr> <int> <chr> <chr> +#> 1 2019 ARI C NA 60 CUT Jacob Ohnesor~ +#> 2 2019 ARI C NA 53 ACT A.Q. Shipley +#> 3 2019 ARI C NA 65 ACT Lamont Gailla~ +#> 4 2019 ARI CB NA 27 SUS Josh Shaw +#> 5 2019 ARI CB NA 30 ACT Jalen Davis +#> 6 2019 ARI CB NA 33 ACT Byron Murphy +#> 7 2019 ARI CB NA 22 CUT Trevor Willia~ +#> 8 2019 ARI CB NA 26 RES Brandon Willi~ +#> 9 2019 ARI CB NA NA DEV Sojourn Shelt~ +#> 10 2019 ARI CB NA 28 CUT Deatrick Nich~ +#> # ... with 7,725 more rows, and 17 more variables: first_name <chr>, +#> # last_name <chr>, birth_date <date>, height <chr>, weight <chr>, +#> # college <chr>, high_school <chr>, gsis_id <chr>, espn_id <int>, +#> # sportradar_id <chr>, yahoo_id <int>, rotowire_id <int>, pff_id <int>, +#> # headshot_url <glue>, fantasy_data_id <int>, sleeper_id <chr>, +#> # years_exp <int>
    # } + +
    + + + + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    + + + + + + + + + + + + diff --git a/docs/dev/reference/nflfastr_stat_mapping.html b/docs/dev/reference/nflfastr_stat_mapping.html new file mode 100644 index 00000000..a3637a79 --- /dev/null +++ b/docs/dev/reference/nflfastr_stat_mapping.html @@ -0,0 +1,294 @@ + + + + + + + + +Mappings for nflfastr to fantasy platform scoring — nflfastr_stat_mapping • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    A small helper dataframe for connecting nflfastr to specific fantasy platform rules.

    +
    + +
    nflfastr_stat_mapping
    + + +

    Format

    + +

    A data frame with ~85 rows and 3 variables:

    +
    nflfastr_event

    the column name of the statistic in the nflfastr_weekly dataset

    +
    platform

    specific platform that this mapping applies to

    +
    ff_event

    name of the statistic for that platform

    + +
    + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/nflfastr_weekly.html b/docs/dev/reference/nflfastr_weekly.html new file mode 100644 index 00000000..0da536e0 --- /dev/null +++ b/docs/dev/reference/nflfastr_weekly.html @@ -0,0 +1,339 @@ + + + + + + + + +Import latest nflfastr weekly stats — nflfastr_weekly • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Fetches a copy of the latest week-level stats from nflfastr's data repository. +The same output as nflfastr's load_player_stats() function.

    +
    + +
    nflfastr_weekly(type = c("offense", "defense", "all"))
    + +

    Arguments

    + + + + + + +
    type

    One of "offense", "defense", or "all" - currently, only "offense" is available.

    + +

    Value

    + +

    Weekly stats for all passers, rushers and receivers in the nflfastR play-by-play data from the 1999 season to the most recent season

    +

    Details

    + +

    The goal of this data is to replicate the NFL's official weekly stats, which +can diverge a bit from what fantasy data feeds display.

    +

    If you have any issues with the output of this data, please open an issue in +the nflfastr repository.

    +

    See also

    + + + +

    Examples

    +
    # \donttest{ +nflfastr_weekly() +
    #> # A tibble: 112,757 x 42 +#> player_id player_name recent_team season week completions attempts +#> <chr> <chr> <chr> <int> <int> <int> <int> +#> 1 00-0000003 A.al-Jabbar MIA 1999 1 0 0 +#> 2 00-0000003 A.al-Jabbar MIA 1999 2 0 0 +#> 3 00-0000003 A.al-Jabbar MIA 1999 4 0 0 +#> 4 00-0000003 A.al-Jabbar CLE 1999 7 0 0 +#> 5 00-0000003 A.al-Jabbar CLE 1999 8 0 0 +#> 6 00-0000003 A.al-Jabbar CLE 1999 9 0 0 +#> 7 00-0000003 A.al-Jabbar CLE 1999 10 0 0 +#> 8 00-0000003 A.al-Jabbar CLE 1999 11 0 0 +#> 9 00-0000003 A.al-Jabbar CLE 1999 12 0 0 +#> 10 00-0000003 A.al-Jabbar CLE 1999 13 0 0 +#> # ... with 112,747 more rows, and 35 more variables: passing_yards <dbl>, +#> # passing_tds <int>, interceptions <dbl>, sacks <dbl>, sack_yards <dbl>, +#> # sack_fumbles <int>, sack_fumbles_lost <int>, passing_air_yards <dbl>, +#> # passing_yards_after_catch <dbl>, passing_first_downs <dbl>, +#> # passing_epa <dbl>, passing_2pt_conversions <int>, dakota <dbl>, +#> # carries <int>, rushing_yards <dbl>, rushing_tds <int>, +#> # rushing_fumbles <dbl>, rushing_fumbles_lost <dbl>, +#> # rushing_first_downs <dbl>, rushing_epa <dbl>, +#> # rushing_2pt_conversions <int>, receptions <int>, targets <int>, +#> # receiving_yards <dbl>, receiving_tds <int>, receiving_fumbles <dbl>, +#> # receiving_fumbles_lost <dbl>, receiving_air_yards <dbl>, +#> # receiving_yards_after_catch <dbl>, receiving_first_downs <dbl>, +#> # receiving_epa <dbl>, receiving_2pt_conversions <int>, +#> # special_teams_tds <dbl>, fantasy_points <dbl>, fantasy_points_ppr <dbl>
    # } + +
    +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/parse_raw_rds.html b/docs/dev/reference/parse_raw_rds.html new file mode 100644 index 00000000..cf4ab7dd --- /dev/null +++ b/docs/dev/reference/parse_raw_rds.html @@ -0,0 +1,296 @@ + + + + + + + + +Parse Raw RDS — parse_raw_rds • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Useful for parsing the raw-content of RDS files downloaded from nflfastr repo, c/o Seb.

    +
    + +
    parse_raw_rds(raw)
    + +

    Arguments

    + + + + + + +
    raw

    raw-content that is known to be an RDS file

    + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/pipe.html b/docs/dev/reference/pipe.html index e8f458cf..11c8907e 100644 --- a/docs/dev/reference/pipe.html +++ b/docs/dev/reference/pipe.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -151,15 +226,14 @@
    -

    See magrittr::%>% for details.

    +

    See magrittr::%>% for details.

    -
    lhs %>% rhs
    @@ -185,6 +259,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/release_bullets.html b/docs/dev/reference/release_bullets.html new file mode 100644 index 00000000..1b714fcd --- /dev/null +++ b/docs/dev/reference/release_bullets.html @@ -0,0 +1,285 @@ + + + + + + + + +Release questions — release_bullets • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Release questions

    +
    + +
    release_bullets()
    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/set_unescaped_cookies.html b/docs/dev/reference/set_unescaped_cookies.html new file mode 100644 index 00000000..980da570 --- /dev/null +++ b/docs/dev/reference/set_unescaped_cookies.html @@ -0,0 +1,296 @@ + + + + + + + + +Add unescaped cookies — set_unescaped_cookies • ffscrapr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    + +
    +
    + + +
    +

    Useful for ESPN which is already URL escaped

    +
    + +
    set_unescaped_cookies(...)
    + +

    Arguments

    + + + + + + +
    ...

    a named cookie values

    + +

    See also

    + + + +
    + +
    + + +
    + + +
    +

    Site built with pkgdown 1.6.1.

    +
    + +
    +
    + + + + + + + + + + + diff --git a/docs/dev/reference/sleeper_connect.html b/docs/dev/reference/sleeper_connect.html index a8022fe3..120cda1b 100644 --- a/docs/dev/reference/sleeper_connect.html +++ b/docs/dev/reference/sleeper_connect.html @@ -44,13 +44,20 @@ + + + + + + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + + @@ -159,16 +234,16 @@

    Connect to Sleeper League

    This function creates a connection object which stores parameters and a user ID if available.

    -
    sleeper_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  user_name = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    +
    sleeper_connect(
    +  season = NULL,
    +  league_id = NULL,
    +  user_name = NULL,
    +  user_agent = NULL,
    +  rate_limit = TRUE,
    +  rate_limit_number = NULL,
    +  rate_limit_seconds = NULL,
    +  ...
    +)

    Arguments

    @@ -233,6 +308,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/sleeper_getendpoint.html b/docs/dev/reference/sleeper_getendpoint.html index aa80b1cb..e5ca10f7 100644 --- a/docs/dev/reference/sleeper_getendpoint.html +++ b/docs/dev/reference/sleeper_getendpoint.html @@ -6,7 +6,7 @@ -GET any SLEEPER endpoint — sleeper_getendpoint • ffscrapr +GET any Sleeper endpoint — sleeper_getendpoint • ffscrapr @@ -44,13 +44,20 @@ + + + + + + - + - + + @@ -85,7 +92,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -93,7 +100,7 @@ + +
    + +
    + + @@ -150,7 +225,7 @@
    @@ -159,7 +234,7 @@

    GET any SLEEPER endpoint

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the Sleeper API reference page.

    -
    sleeper_getendpoint(endpoint, ...)
    +
    sleeper_getendpoint(endpoint, ...)

    Arguments

    @@ -170,7 +245,7 @@

    Arg

    - +
    ...

    All other arguments are passed in order as slash-separated components of the url

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    @@ -207,6 +282,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/sleeper_players.html b/docs/dev/reference/sleeper_players.html index f6ae7c31..fde93a67 100644 --- a/docs/dev/reference/sleeper_players.html +++ b/docs/dev/reference/sleeper_players.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + + @@ -161,7 +236,7 @@

    Sleeper players library

    (via memoise in zzz.R)

    -
    sleeper_players()
    +
    sleeper_players()

    Value

    @@ -170,7 +245,7 @@

    Value

    Examples

    # \donttest{ -player_list <- sleeper_players() +player_list <- sleeper_players() # }
    @@ -196,6 +271,23 @@

    Contents

    + + + diff --git a/docs/dev/reference/sleeper_userleagues.html b/docs/dev/reference/sleeper_userleagues.html index 5bfa2e92..b733b958 100644 --- a/docs/dev/reference/sleeper_userleagues.html +++ b/docs/dev/reference/sleeper_userleagues.html @@ -44,6 +44,12 @@ + + + + + + @@ -51,7 +57,8 @@ - + + @@ -86,7 +93,7 @@ ffscrapr - 1.1.0.9001 + 1.4.2.06 @@ -94,7 +101,7 @@ + + @@ -161,7 +236,7 @@

    Sleeper - Get User Leagues

    This variant can be used without first creating a connection object.

    -
    sleeper_userleagues(user_name, season = NULL)
    +
    sleeper_userleagues(user_name, season = NULL)

    Arguments

    @@ -181,7 +256,7 @@

    Value

    a dataframe of leagues for the specified user

    See also

    - + + + + diff --git a/docs/dev/sitemap.xml b/docs/dev/sitemap.xml index ec12ef8a..1cc2818f 100644 --- a/docs/dev/sitemap.xml +++ b/docs/dev/sitemap.xml @@ -3,6 +3,24 @@ ffscrapr.dynastyprocess.com/index.html + + ffscrapr.dynastyprocess.com/reference/dot-add_allplay.html + + + ffscrapr.dynastyprocess.com/reference/dot-espn_activity_map.html + + + ffscrapr.dynastyprocess.com/reference/dot-espn_lineupslot_map.html + + + ffscrapr.dynastyprocess.com/reference/dot-espn_pos_map.html + + + ffscrapr.dynastyprocess.com/reference/dot-espn_stat_map.html + + + ffscrapr.dynastyprocess.com/reference/dot-espn_team_map.html + ffscrapr.dynastyprocess.com/reference/dot-ff_clear_cache.html @@ -21,15 +39,48 @@ ffscrapr.dynastyprocess.com/reference/dot-mfl_logincookie.html + + ffscrapr.dynastyprocess.com/reference/dot-retry_get.html + + + ffscrapr.dynastyprocess.com/reference/dot-retry_post.html + + + ffscrapr.dynastyprocess.com/reference/dot-sleeper_matchup.html + ffscrapr.dynastyprocess.com/reference/dot-sleeper_userid.html + + ffscrapr.dynastyprocess.com/reference/dp_cleannames.html + + + ffscrapr.dynastyprocess.com/reference/dp_name_mapping.html + ffscrapr.dynastyprocess.com/reference/dp_playerids.html ffscrapr.dynastyprocess.com/reference/dp_values.html + + ffscrapr.dynastyprocess.com/reference/espn_connect.html + + + ffscrapr.dynastyprocess.com/reference/espn_getendpoint.html + + + ffscrapr.dynastyprocess.com/reference/espn_getendpoint_raw.html + + + ffscrapr.dynastyprocess.com/reference/espn_players.html + + + ffscrapr.dynastyprocess.com/reference/espn_potentialpoints.html + + + ffscrapr.dynastyprocess.com/reference/ffscrapr-package.html + ffscrapr.dynastyprocess.com/reference/ff_connect.html @@ -57,18 +108,39 @@ ffscrapr.dynastyprocess.com/reference/ff_scoring.html + + ffscrapr.dynastyprocess.com/reference/ff_scoringhistory.html + ffscrapr.dynastyprocess.com/reference/ff_standings.html ffscrapr.dynastyprocess.com/reference/ff_starters.html + + ffscrapr.dynastyprocess.com/reference/ff_starter_positions.html + ffscrapr.dynastyprocess.com/reference/ff_transactions.html ffscrapr.dynastyprocess.com/reference/ff_userleagues.html + + ffscrapr.dynastyprocess.com/reference/fleaflicker_connect.html + + + ffscrapr.dynastyprocess.com/reference/fleaflicker_getendpoint.html + + + ffscrapr.dynastyprocess.com/reference/fleaflicker_players.html + + + ffscrapr.dynastyprocess.com/reference/fleaflicker_userleagues.html + + + ffscrapr.dynastyprocess.com/reference/mfl_allrules.html + ffscrapr.dynastyprocess.com/reference/mfl_connect.html @@ -78,9 +150,27 @@ ffscrapr.dynastyprocess.com/reference/mfl_players.html + + ffscrapr.dynastyprocess.com/reference/nflfastr_rosters.html + + + ffscrapr.dynastyprocess.com/reference/nflfastr_stat_mapping.html + + + ffscrapr.dynastyprocess.com/reference/nflfastr_weekly.html + + + ffscrapr.dynastyprocess.com/reference/parse_raw_rds.html + ffscrapr.dynastyprocess.com/reference/pipe.html + + ffscrapr.dynastyprocess.com/reference/release_bullets.html + + + ffscrapr.dynastyprocess.com/reference/set_unescaped_cookies.html + ffscrapr.dynastyprocess.com/reference/sleeper_connect.html @@ -93,9 +183,27 @@ ffscrapr.dynastyprocess.com/reference/sleeper_userleagues.html + + ffscrapr.dynastyprocess.com/articles/espn_authentication.html + + + ffscrapr.dynastyprocess.com/articles/espn_basics.html + + + ffscrapr.dynastyprocess.com/articles/espn_getendpoint.html + ffscrapr.dynastyprocess.com/articles/ffscrapr_caching.html + + ffscrapr.dynastyprocess.com/articles/ffscrapr_scoringhistory.html + + + ffscrapr.dynastyprocess.com/articles/fleaflicker_basics.html + + + ffscrapr.dynastyprocess.com/articles/fleaflicker_getendpoint.html + ffscrapr.dynastyprocess.com/articles/mfl_basics.html diff --git a/man/pipe.Rd b/man/pipe.Rd index c9c04db0..d17bdf8b 100644 --- a/man/pipe.Rd +++ b/man/pipe.Rd @@ -4,5 +4,5 @@ \alias{\%>\%} \title{Pipe operator} \description{ -See \verb{magrittr::[\\\%>\\\%][magrittr::pipe]} for details. +See \href{https://magrittr.tidyverse.org/reference/pipe.html}{\verb{magrittr::\%>\%}} for details. } diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 38fdfd11..8f0f5a18 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -33,6 +33,7 @@ reference: desc: Additional helper functions contents: - starts_with(".ff") + - "`%>%`" home: title: ffscrapr • an R package for Fantasy Football APIs @@ -44,7 +45,7 @@ home: navbar: structure: - left: [home, reference, news, articles] + left: [home, reference, articles, news] right: [discord, github, more] components: discord: @@ -54,23 +55,22 @@ navbar: text: "More" menu: - text: ffverse - menu: - - text: ffsimulator - href: https://ffsimulator.dynastyprocess.com - - text: GitHub - href: https://www.github.com/ffverse - - text: R-Universe - href: https://ffverse.r-universe.dev + - text: ffsimulator package + href: https://ffsimulator.dynastyprocess.com + - text: ffverse GitHub + href: https://www.github.com/ffverse + - text: ------ - text: "nflverse" - menu: - - text: nflfastR - href: https://www.nflfastr.com - - text: GitHub - href: https://github.com/nflverse - - text: R-Universe - href: https://nflverse.r-universe.dev + - text: nflfastR package + href: https://www.nflfastr.com + - text: nflverse GitHub + href: https://github.com/nflverse + - text: ------ + - text: "DynastyProcess" - text: "DynastyProcess.com" href: https://dynastyprocess.com + - text: DynastyProcess GitHub + href: https://github.com/dynastyprocess articles: - title: Getting Started diff --git a/pkgdown/extra.css b/pkgdown/extra.css index 64a2ddc2..1433b08c 100644 --- a/pkgdown/extra.css +++ b/pkgdown/extra.css @@ -23,3 +23,7 @@ pre, code { font-weight: 700; font-family: 'Fira Mono', sans-serif; } + +h4.author,h4.date { + padding-top:0px; + margin-top:0px;} diff --git a/vignettes/espn_authentication.Rmd b/vignettes/espn_authentication.Rmd index 7755ce1f..7a89d91f 100644 --- a/vignettes/espn_authentication.Rmd +++ b/vignettes/espn_authentication.Rmd @@ -1,8 +1,10 @@ --- title: "ESPN: Private Leagues" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{espn_authentication} + %\VignetteIndexEntry{ESPN: Private Leagues} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/espn_basics.Rmd b/vignettes/espn_basics.Rmd index e38ba0a7..b9ac2b8e 100644 --- a/vignettes/espn_basics.Rmd +++ b/vignettes/espn_basics.Rmd @@ -1,8 +1,10 @@ --- title: "ESPN: Basics" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{espn_basics} + %\VignetteIndexEntry{ESPN: Basics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/espn_getendpoint.Rmd b/vignettes/espn_getendpoint.Rmd index febca384..e6e2683d 100644 --- a/vignettes/espn_getendpoint.Rmd +++ b/vignettes/espn_getendpoint.Rmd @@ -1,8 +1,10 @@ --- title: "ESPN: Get Endpoint" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{espn_getendpoint} + %\VignetteIndexEntry{ESPN: Get Endpoint} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/ffscrapr_caching.Rmd b/vignettes/ffscrapr_caching.Rmd index 2e6ca6e3..d3c6ec96 100644 --- a/vignettes/ffscrapr_caching.Rmd +++ b/vignettes/ffscrapr_caching.Rmd @@ -1,9 +1,10 @@ --- -title: "Managing ffscrapr's Cache" -author: "Tan Ho" +title: "ffscrapr: Managing Cache" +author: Tan Ho +date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{ffscrapr_caching} + %\VignetteIndexEntry{ffscrapr: Managing Cache} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/ffscrapr_scoringhistory.Rmd b/vignettes/ffscrapr_scoringhistory.Rmd index 61bd300b..5a416bff 100644 --- a/vignettes/ffscrapr_scoringhistory.Rmd +++ b/vignettes/ffscrapr_scoringhistory.Rmd @@ -1,46 +1,26 @@ --- -title: "ffscrapr: Player Scoring History" +title: "ffscrapr: ff_scoringhistory Limitations" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{ff_scoringhistory} + %\VignetteIndexEntry{ffscrapr: ff_scoringhistory Limitations} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>" -) - -options(dplyr.summarise.inform = FALSE, - rmarkdown.html_vignette.check_title = FALSE) - -eval <- TRUE - -tryCatch(expr = { - - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") - unzip('f.zip', exdir = ".") - - httptest::.mockPaths(new = "ffscrapr-tests-main")}, - warning = function(e) eval <<- FALSE, - error = function(e) eval <<- FALSE) - -httptest::use_mock_api() -``` - ## Limitations of ff_scoringhistory For all sites: + - Official NFL lateral scoring may be different than MFL scoring - Special team TDs are not broken down into punt returns, kick returns, and FG returns in nflfastR `load_player_stats` so the kick return scoring was applied to all special team TDs - No support for IDPs, team defenses, kickers, coaches, fumbles, return yards, offensive fumble recoveries - Support for eccentric rules (bonuses for long plays, conditional rules) will be added on a request basis For Fleaflicker: -- Does Fleaflicker allow for ranged scoring rules like MFL? +- Does Fleaflicker allow for ranged scoring rules like MFL? (assume no) For Sleeper: -- Does Sleeper allow for ranged scoring rules like MFL? -- Does Sleeper allow for positional scoring rules? +- Does Sleeper allow for ranged scoring rules like MFL? (assume no) +- Does Sleeper allow for positional scoring rules? (assume no) diff --git a/vignettes/fleaflicker_basics.Rmd b/vignettes/fleaflicker_basics.Rmd index 67c019d9..6ce096c8 100644 --- a/vignettes/fleaflicker_basics.Rmd +++ b/vignettes/fleaflicker_basics.Rmd @@ -1,8 +1,10 @@ --- title: "Fleaflicker: Basics" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{fleaflicker_basics} + %\VignetteIndexEntry{Fleaflicker: Basics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/fleaflicker_getendpoint.Rmd b/vignettes/fleaflicker_getendpoint.Rmd index 7a7a4e46..dcaad922 100644 --- a/vignettes/fleaflicker_getendpoint.Rmd +++ b/vignettes/fleaflicker_getendpoint.Rmd @@ -1,8 +1,10 @@ --- title: "Fleaflicker: Get Endpoint" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{fleaflicker_getendpoint} + %\VignetteIndexEntry{Fleaflicker: Get Endpoint} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/mfl_basics.Rmd b/vignettes/mfl_basics.Rmd index 7b024613..0b8a93b7 100644 --- a/vignettes/mfl_basics.Rmd +++ b/vignettes/mfl_basics.Rmd @@ -1,8 +1,10 @@ --- title: "MFL: Basics" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{mfl_basics} + %\VignetteIndexEntry{MFL: Basics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/mfl_getendpoint.Rmd b/vignettes/mfl_getendpoint.Rmd index e3ff61f5..bf107eb0 100644 --- a/vignettes/mfl_getendpoint.Rmd +++ b/vignettes/mfl_getendpoint.Rmd @@ -1,8 +1,10 @@ --- title: "MFL: Get Endpoint" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{mfl_getendpoint} + %\VignetteIndexEntry{MFL: Get Endpoint} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/sleeper_basics.Rmd b/vignettes/sleeper_basics.Rmd index 375876a6..5fcbdafe 100644 --- a/vignettes/sleeper_basics.Rmd +++ b/vignettes/sleeper_basics.Rmd @@ -1,8 +1,10 @@ --- title: "Sleeper: Basics" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{sleeper_basics} + %\VignetteIndexEntry{Sleeper: Basics} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- diff --git a/vignettes/sleeper_getendpoint.Rmd b/vignettes/sleeper_getendpoint.Rmd index 1ea4504a..ec8b0c67 100644 --- a/vignettes/sleeper_getendpoint.Rmd +++ b/vignettes/sleeper_getendpoint.Rmd @@ -1,8 +1,10 @@ --- title: "Sleeper: Get Endpoint" output: rmarkdown::html_vignette +author: Tan Ho +date: "`r Sys.Date()`" vignette: > - %\VignetteIndexEntry{sleeper_getendpoint} + %\VignetteIndexEntry{Sleeper: Get Endpoint} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- From 8d4ad19fe9f36dd21fd84e6f2944cc943ffbc155 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 08:39:21 -0400 Subject: [PATCH 23/31] update pkgdown --- LICENSE | 2 +- LICENSE.md | 2 +- README.Rmd | 7 + README.md | 9 + docs/404.html | 176 ----- docs/CODE_OF_CONDUCT.html | 226 ------- docs/CONTRIBUTING.html | 233 ------- docs/LICENSE-text.html | 178 ----- docs/LICENSE.html | 182 ----- docs/apple-touch-icon-120x120.png | Bin 12837 -> 0 bytes docs/apple-touch-icon-152x152.png | Bin 17559 -> 0 bytes docs/apple-touch-icon-180x180.png | Bin 22205 -> 0 bytes docs/apple-touch-icon-60x60.png | Bin 5424 -> 0 bytes docs/apple-touch-icon-76x76.png | Bin 7100 -> 0 bytes docs/apple-touch-icon.png | Bin 22205 -> 0 bytes docs/articles/index.html | 177 ----- docs/articles/mfl_basics.html | 320 --------- .../empty-anchor.js | 15 - docs/articles/mfl_getendpoint.html | 214 ------ .../empty-anchor.js | 15 - docs/authors.html | 175 ----- docs/bootstrap-toc.css | 60 -- docs/bootstrap-toc.js | 159 ----- docs/dev/404.html | 279 -------- docs/dev/CODE_OF_CONDUCT.html | 329 --------- docs/dev/CONTRIBUTING.html | 349 ---------- docs/dev/LICENSE-text.html | 281 -------- docs/dev/LICENSE.html | 285 -------- docs/dev/apple-touch-icon-120x120.png | Bin 7100 -> 0 bytes docs/dev/apple-touch-icon-152x152.png | Bin 9362 -> 0 bytes docs/dev/apple-touch-icon-180x180.png | Bin 11245 -> 0 bytes docs/dev/apple-touch-icon-60x60.png | Bin 3038 -> 0 bytes docs/dev/apple-touch-icon-76x76.png | Bin 3833 -> 0 bytes docs/dev/apple-touch-icon.png | Bin 11245 -> 0 bytes docs/dev/articles/a1_mfl_basics.html | 363 ---------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - docs/dev/articles/a2_sleeper_basics.html | 374 ----------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - docs/dev/articles/espn_authentication.html | 258 ------- .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/espn_basics.html | 429 ------------ .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/espn_getendpoint.html | 351 ---------- .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/ffscrapr_caching.html | 280 -------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - .../header-attrs-2.7/header-attrs.js | 12 - .../dev/articles/ffscrapr_scoringhistory.html | 247 ------- .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/fleaflicker_basics.html | 430 ------------ .../header-attrs-2.7/header-attrs.js | 12 - .../dev/articles/fleaflicker_getendpoint.html | 339 ---------- .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/index.html | 319 --------- docs/dev/articles/mfl_basics.html | 444 ------------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/mfl_getendpoint.html | 324 --------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/sleeper_basics.html | 448 ------------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/articles/sleeper_getendpoint.html | 310 --------- .../empty-anchor.js | 15 - .../header-attrs-2.3/header-attrs.js | 12 - .../header-attrs-2.7/header-attrs.js | 12 - docs/dev/authors.html | 286 -------- docs/dev/bootstrap-toc.css | 60 -- docs/dev/bootstrap-toc.js | 159 ----- docs/dev/docsearch.css | 148 ----- docs/dev/docsearch.js | 85 --- docs/dev/docsearch.json | 95 --- docs/dev/extra.css | 29 - docs/dev/favicon-16x16.png | Bin 939 -> 0 bytes docs/dev/favicon-32x32.png | Bin 1540 -> 0 bytes docs/dev/favicon.ico | Bin 15086 -> 0 bytes docs/dev/index.html | 366 ---------- docs/dev/link.svg | 12 - docs/dev/logo.png | Bin 175341 -> 0 bytes docs/dev/logo.svg | 141 ---- docs/dev/news/index.html | 608 ----------------- docs/dev/pkgdown.css | 367 ---------- docs/dev/pkgdown.js | 108 --- docs/dev/pkgdown.yml | 20 - docs/dev/reference/Rplot001.png | Bin 1011 -> 0 bytes docs/dev/reference/dot-add_allplay.html | 295 -------- docs/dev/reference/dot-espn_activity_map.html | 288 -------- .../reference/dot-espn_lineupslot_map.html | 288 -------- docs/dev/reference/dot-espn_pos_map.html | 287 -------- docs/dev/reference/dot-espn_stat_map.html | 288 -------- docs/dev/reference/dot-espn_team_map.html | 290 -------- docs/dev/reference/dot-ff_clear_cache.html | 285 -------- .../reference/dot-ffscrapr_clear_cache.html | 191 ------ docs/dev/reference/dot-fn_choose_season.html | 285 -------- docs/dev/reference/dot-fn_drop_nulls.html | 285 -------- docs/dev/reference/dot-fn_set_ratelimit.html | 303 --------- docs/dev/reference/dot-fn_set_useragent.html | 287 -------- docs/dev/reference/dot-mfl_logincookie.html | 306 --------- docs/dev/reference/dot-retry_get.html | 293 -------- docs/dev/reference/dot-retry_post.html | 293 -------- docs/dev/reference/dot-sleeper_matchup.html | 285 -------- docs/dev/reference/dot-sleeper_userid.html | 296 --------- docs/dev/reference/dp_cleannames.html | 339 ---------- docs/dev/reference/dp_name_mapping.html | 300 --------- docs/dev/reference/dp_playerids.html | 316 --------- docs/dev/reference/dp_values.html | 305 --------- docs/dev/reference/espn_connect.html | 349 ---------- docs/dev/reference/espn_getendpoint.html | 318 --------- docs/dev/reference/espn_getendpoint_raw.html | 316 --------- docs/dev/reference/espn_players.html | 310 --------- docs/dev/reference/espn_potentialpoints.html | 321 --------- docs/dev/reference/ff_connect.html | 319 --------- docs/dev/reference/ff_draft.html | 407 ------------ docs/dev/reference/ff_draftpicks.html | 379 ----------- docs/dev/reference/ff_franchises.html | 408 ------------ docs/dev/reference/ff_league.html | 362 ---------- docs/dev/reference/ff_playerscores.html | 395 ----------- docs/dev/reference/ff_rosters.html | 394 ----------- docs/dev/reference/ff_schedule.html | 386 ----------- docs/dev/reference/ff_scoring.html | 394 ----------- docs/dev/reference/ff_scoringhistory.html | 391 ----------- docs/dev/reference/ff_standings.html | 404 ----------- docs/dev/reference/ff_starter_positions.html | 377 ----------- docs/dev/reference/ff_starters.html | 383 ----------- docs/dev/reference/ff_transactions.html | 396 ----------- docs/dev/reference/ff_userleagues.html | 337 ---------- docs/dev/reference/ffscrapr-package.html | 313 --------- docs/dev/reference/figures/ffscrapr.svg | 169 ----- .../reference/figures/logo-no-gradient.png | Bin 123126 -> 0 bytes .../dev/reference/figures/logo-no-hexfill.png | Bin 132631 -> 0 bytes docs/dev/reference/figures/logo.png | Bin 175341 -> 0 bytes docs/dev/reference/figures/logo.svg | 141 ---- docs/dev/reference/fleaflicker_connect.html | 333 ---------- .../reference/fleaflicker_getendpoint.html | 307 --------- docs/dev/reference/fleaflicker_players.html | 309 --------- .../reference/fleaflicker_userleagues.html | 305 --------- docs/dev/reference/forget.html | 181 ----- docs/dev/reference/index.html | 629 ------------------ docs/dev/reference/mfl_allrules.html | 285 -------- docs/dev/reference/mfl_connect.html | 363 ---------- docs/dev/reference/mfl_getendpoint.html | 313 --------- docs/dev/reference/mfl_players.html | 317 --------- docs/dev/reference/nflfastr_rosters.html | 329 --------- docs/dev/reference/nflfastr_stat_mapping.html | 294 -------- docs/dev/reference/nflfastr_weekly.html | 339 ---------- docs/dev/reference/parse_raw_rds.html | 296 --------- docs/dev/reference/pipe.html | 284 -------- docs/dev/reference/release_bullets.html | 285 -------- docs/dev/reference/set_unescaped_cookies.html | 296 --------- docs/dev/reference/sleeper_connect.html | 333 ---------- docs/dev/reference/sleeper_getendpoint.html | 307 --------- docs/dev/reference/sleeper_players.html | 296 --------- docs/dev/reference/sleeper_userleagues.html | 305 --------- docs/dev/sitemap.xml | 219 ------ docs/docsearch.css | 148 ----- docs/docsearch.js | 85 --- docs/extra.css | 17 - docs/favicon-16x16.png | Bin 1442 -> 0 bytes docs/favicon-32x32.png | Bin 2518 -> 0 bytes docs/favicon.ico | Bin 15086 -> 0 bytes docs/index.html | 256 ------- docs/link.svg | 12 - docs/logo.png | Bin 178428 -> 0 bytes docs/news/index.html | 195 ------ docs/pkgdown.css | 367 ---------- docs/pkgdown.js | 108 --- docs/pkgdown.yml | 11 - docs/reference/dp_playerids.html | 206 ------ docs/reference/dp_values.html | 212 ------ docs/reference/ff_connect.html | 219 ------ docs/reference/ff_draft.html | 223 ------- docs/reference/ff_draftpicks.html | 216 ------ docs/reference/ff_franchises.html | 216 ------ docs/reference/ff_league.html | 204 ------ docs/reference/ff_playerscores.html | 224 ------- docs/reference/ff_rosters.html | 221 ------ docs/reference/ff_schedule.html | 218 ------ docs/reference/ff_scoring.html | 202 ------ docs/reference/ff_standings.html | 222 ------- docs/reference/ff_transactions.html | 221 ------ docs/reference/figures/ffscrapr.svg | 158 ----- docs/reference/figures/logo.png | Bin 178428 -> 0 bytes docs/reference/forget.html | 181 ----- docs/reference/index.html | 364 ---------- docs/reference/mfl_connect.html | 254 ------- docs/reference/mfl_getendpoint.html | 210 ------ docs/reference/mfl_players.html | 210 ------ docs/reference/mfl_playerscores.html | 204 ------ docs/reference/pipe.html | 182 ----- docs/reference/sleeper_connect.html | 225 ------- docs/reference/sleeper_getendpoint.html | 189 ------ docs/sitemap.xml | 69 -- pkgdown/_pkgdown.yml | 12 +- 200 files changed, 24 insertions(+), 38630 deletions(-) delete mode 100644 docs/404.html delete mode 100644 docs/CODE_OF_CONDUCT.html delete mode 100644 docs/CONTRIBUTING.html delete mode 100644 docs/LICENSE-text.html delete mode 100644 docs/LICENSE.html delete mode 100644 docs/apple-touch-icon-120x120.png delete mode 100644 docs/apple-touch-icon-152x152.png delete mode 100644 docs/apple-touch-icon-180x180.png delete mode 100644 docs/apple-touch-icon-60x60.png delete mode 100644 docs/apple-touch-icon-76x76.png delete mode 100644 docs/apple-touch-icon.png delete mode 100644 docs/articles/index.html delete mode 100644 docs/articles/mfl_basics.html delete mode 100644 docs/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/articles/mfl_getendpoint.html delete mode 100644 docs/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/authors.html delete mode 100644 docs/bootstrap-toc.css delete mode 100644 docs/bootstrap-toc.js delete mode 100644 docs/dev/404.html delete mode 100644 docs/dev/CODE_OF_CONDUCT.html delete mode 100644 docs/dev/CONTRIBUTING.html delete mode 100644 docs/dev/LICENSE-text.html delete mode 100644 docs/dev/LICENSE.html delete mode 100644 docs/dev/apple-touch-icon-120x120.png delete mode 100644 docs/dev/apple-touch-icon-152x152.png delete mode 100644 docs/dev/apple-touch-icon-180x180.png delete mode 100644 docs/dev/apple-touch-icon-60x60.png delete mode 100644 docs/dev/apple-touch-icon-76x76.png delete mode 100644 docs/dev/apple-touch-icon.png delete mode 100644 docs/dev/articles/a1_mfl_basics.html delete mode 100644 docs/dev/articles/a1_mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/a1_mfl_basics_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/a2_sleeper_basics.html delete mode 100644 docs/dev/articles/a2_sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/a2_sleeper_basics_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/espn_authentication.html delete mode 100644 docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/espn_basics.html delete mode 100644 docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/espn_getendpoint.html delete mode 100644 docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/ffscrapr_caching.html delete mode 100644 docs/dev/articles/ffscrapr_caching_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/ffscrapr_caching_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/ffscrapr_scoringhistory.html delete mode 100644 docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/fleaflicker_basics.html delete mode 100644 docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/fleaflicker_getendpoint.html delete mode 100644 docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/index.html delete mode 100644 docs/dev/articles/mfl_basics.html delete mode 100644 docs/dev/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/mfl_basics_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/mfl_basics_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/mfl_getendpoint.html delete mode 100644 docs/dev/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/mfl_getendpoint_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/sleeper_basics.html delete mode 100644 docs/dev/articles/sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/sleeper_basics_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/sleeper_basics_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/articles/sleeper_getendpoint.html delete mode 100644 docs/dev/articles/sleeper_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js delete mode 100644 docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.3/header-attrs.js delete mode 100644 docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js delete mode 100644 docs/dev/authors.html delete mode 100644 docs/dev/bootstrap-toc.css delete mode 100644 docs/dev/bootstrap-toc.js delete mode 100644 docs/dev/docsearch.css delete mode 100644 docs/dev/docsearch.js delete mode 100644 docs/dev/docsearch.json delete mode 100644 docs/dev/extra.css delete mode 100644 docs/dev/favicon-16x16.png delete mode 100644 docs/dev/favicon-32x32.png delete mode 100644 docs/dev/favicon.ico delete mode 100644 docs/dev/index.html delete mode 100644 docs/dev/link.svg delete mode 100644 docs/dev/logo.png delete mode 100644 docs/dev/logo.svg delete mode 100644 docs/dev/news/index.html delete mode 100644 docs/dev/pkgdown.css delete mode 100644 docs/dev/pkgdown.js delete mode 100644 docs/dev/pkgdown.yml delete mode 100644 docs/dev/reference/Rplot001.png delete mode 100644 docs/dev/reference/dot-add_allplay.html delete mode 100644 docs/dev/reference/dot-espn_activity_map.html delete mode 100644 docs/dev/reference/dot-espn_lineupslot_map.html delete mode 100644 docs/dev/reference/dot-espn_pos_map.html delete mode 100644 docs/dev/reference/dot-espn_stat_map.html delete mode 100644 docs/dev/reference/dot-espn_team_map.html delete mode 100644 docs/dev/reference/dot-ff_clear_cache.html delete mode 100644 docs/dev/reference/dot-ffscrapr_clear_cache.html delete mode 100644 docs/dev/reference/dot-fn_choose_season.html delete mode 100644 docs/dev/reference/dot-fn_drop_nulls.html delete mode 100644 docs/dev/reference/dot-fn_set_ratelimit.html delete mode 100644 docs/dev/reference/dot-fn_set_useragent.html delete mode 100644 docs/dev/reference/dot-mfl_logincookie.html delete mode 100644 docs/dev/reference/dot-retry_get.html delete mode 100644 docs/dev/reference/dot-retry_post.html delete mode 100644 docs/dev/reference/dot-sleeper_matchup.html delete mode 100644 docs/dev/reference/dot-sleeper_userid.html delete mode 100644 docs/dev/reference/dp_cleannames.html delete mode 100644 docs/dev/reference/dp_name_mapping.html delete mode 100644 docs/dev/reference/dp_playerids.html delete mode 100644 docs/dev/reference/dp_values.html delete mode 100644 docs/dev/reference/espn_connect.html delete mode 100644 docs/dev/reference/espn_getendpoint.html delete mode 100644 docs/dev/reference/espn_getendpoint_raw.html delete mode 100644 docs/dev/reference/espn_players.html delete mode 100644 docs/dev/reference/espn_potentialpoints.html delete mode 100644 docs/dev/reference/ff_connect.html delete mode 100644 docs/dev/reference/ff_draft.html delete mode 100644 docs/dev/reference/ff_draftpicks.html delete mode 100644 docs/dev/reference/ff_franchises.html delete mode 100644 docs/dev/reference/ff_league.html delete mode 100644 docs/dev/reference/ff_playerscores.html delete mode 100644 docs/dev/reference/ff_rosters.html delete mode 100644 docs/dev/reference/ff_schedule.html delete mode 100644 docs/dev/reference/ff_scoring.html delete mode 100644 docs/dev/reference/ff_scoringhistory.html delete mode 100644 docs/dev/reference/ff_standings.html delete mode 100644 docs/dev/reference/ff_starter_positions.html delete mode 100644 docs/dev/reference/ff_starters.html delete mode 100644 docs/dev/reference/ff_transactions.html delete mode 100644 docs/dev/reference/ff_userleagues.html delete mode 100644 docs/dev/reference/ffscrapr-package.html delete mode 100644 docs/dev/reference/figures/ffscrapr.svg delete mode 100644 docs/dev/reference/figures/logo-no-gradient.png delete mode 100644 docs/dev/reference/figures/logo-no-hexfill.png delete mode 100644 docs/dev/reference/figures/logo.png delete mode 100644 docs/dev/reference/figures/logo.svg delete mode 100644 docs/dev/reference/fleaflicker_connect.html delete mode 100644 docs/dev/reference/fleaflicker_getendpoint.html delete mode 100644 docs/dev/reference/fleaflicker_players.html delete mode 100644 docs/dev/reference/fleaflicker_userleagues.html delete mode 100644 docs/dev/reference/forget.html delete mode 100644 docs/dev/reference/index.html delete mode 100644 docs/dev/reference/mfl_allrules.html delete mode 100644 docs/dev/reference/mfl_connect.html delete mode 100644 docs/dev/reference/mfl_getendpoint.html delete mode 100644 docs/dev/reference/mfl_players.html delete mode 100644 docs/dev/reference/nflfastr_rosters.html delete mode 100644 docs/dev/reference/nflfastr_stat_mapping.html delete mode 100644 docs/dev/reference/nflfastr_weekly.html delete mode 100644 docs/dev/reference/parse_raw_rds.html delete mode 100644 docs/dev/reference/pipe.html delete mode 100644 docs/dev/reference/release_bullets.html delete mode 100644 docs/dev/reference/set_unescaped_cookies.html delete mode 100644 docs/dev/reference/sleeper_connect.html delete mode 100644 docs/dev/reference/sleeper_getendpoint.html delete mode 100644 docs/dev/reference/sleeper_players.html delete mode 100644 docs/dev/reference/sleeper_userleagues.html delete mode 100644 docs/dev/sitemap.xml delete mode 100644 docs/docsearch.css delete mode 100644 docs/docsearch.js delete mode 100644 docs/extra.css delete mode 100644 docs/favicon-16x16.png delete mode 100644 docs/favicon-32x32.png delete mode 100644 docs/favicon.ico delete mode 100644 docs/index.html delete mode 100644 docs/link.svg delete mode 100644 docs/logo.png delete mode 100644 docs/news/index.html delete mode 100644 docs/pkgdown.css delete mode 100644 docs/pkgdown.js delete mode 100644 docs/pkgdown.yml delete mode 100644 docs/reference/dp_playerids.html delete mode 100644 docs/reference/dp_values.html delete mode 100644 docs/reference/ff_connect.html delete mode 100644 docs/reference/ff_draft.html delete mode 100644 docs/reference/ff_draftpicks.html delete mode 100644 docs/reference/ff_franchises.html delete mode 100644 docs/reference/ff_league.html delete mode 100644 docs/reference/ff_playerscores.html delete mode 100644 docs/reference/ff_rosters.html delete mode 100644 docs/reference/ff_schedule.html delete mode 100644 docs/reference/ff_scoring.html delete mode 100644 docs/reference/ff_standings.html delete mode 100644 docs/reference/ff_transactions.html delete mode 100644 docs/reference/figures/ffscrapr.svg delete mode 100644 docs/reference/figures/logo.png delete mode 100644 docs/reference/forget.html delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/mfl_connect.html delete mode 100644 docs/reference/mfl_getendpoint.html delete mode 100644 docs/reference/mfl_players.html delete mode 100644 docs/reference/mfl_playerscores.html delete mode 100644 docs/reference/pipe.html delete mode 100644 docs/reference/sleeper_connect.html delete mode 100644 docs/reference/sleeper_getendpoint.html delete mode 100644 docs/sitemap.xml diff --git a/LICENSE b/LICENSE index 3f860ed2..e246d05b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,2 +1,2 @@ -YEAR: 2020 +YEAR: 2021 COPYRIGHT HOLDER: Tan Ho diff --git a/LICENSE.md b/LICENSE.md index 6c94d2fa..a7c0a9e5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ # MIT License -Copyright (c) 2020 Tan Ho +Copyright (c) 2021 Tan Ho Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.Rmd b/README.Rmd index 245d0171..a241fd02 100644 --- a/README.Rmd +++ b/README.Rmd @@ -97,6 +97,13 @@ Platform-specific guides on getting started with ffscrapr are here: There are also some more advanced guides for custom API calls in the [Articles section](https://ffscrapr.dynastyprocess.com/articles/), as well as some guides on [optimizing ffscrapr's performance](https://ffscrapr.dynastyprocess.com/articles/ffscrapr_caching.html). +### Support + +The best places to get help on this package are: + +- the [nflverse discord](https://discord.com/invite/5Er2FBnnQa) (for both this package as well as anything R/NFL related) +- opening [an issue](https://github.com/DynastyProcess/ffscrapr/issues/new/choose) + ### Contributing Many hands make light work! Here are some ways you can contribute to this project: diff --git a/README.md b/README.md index 6541e4ed..c9e92726 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,15 @@ There are also some more advanced guides for custom API calls in the well as some guides on [optimizing ffscrapr’s performance](https://ffscrapr.dynastyprocess.com/articles/ffscrapr_caching.html). +### Support + +The best places to get help on this package are: + +- the [nflverse discord](https://discord.com/invite/5Er2FBnnQa) (for + both this package as well as anything R/NFL related) +- opening [an + issue](https://github.com/DynastyProcess/ffscrapr/issues/new/choose) + ### Contributing Many hands make light work! Here are some ways you can contribute to diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 9ce91bd4..00000000 --- a/docs/404.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - -Page not found (404) • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -Content not found. Please use links in the navbar. - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/CODE_OF_CONDUCT.html b/docs/CODE_OF_CONDUCT.html deleted file mode 100644 index ed88ba86..00000000 --- a/docs/CODE_OF_CONDUCT.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - -Contributor Covenant Code of Conduct • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -
    -

    -Our Pledge

    -

    In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

    -
    -
    -

    -Our Standards

    -

    Examples of behavior that contributes to creating a positive environment include:

    -
      -
    • Using welcoming and inclusive language
    • -
    • Being respectful of differing viewpoints and experiences
    • -
    • Gracefully accepting constructive criticism
    • -
    • Focusing on what is best for the community
    • -
    • Showing empathy towards other community members
    • -
    -

    Examples of unacceptable behavior by participants include:

    -
      -
    • The use of sexualized language or imagery and unwelcome sexual attention or advances
    • -
    • Trolling, insulting/derogatory comments, and personal or political attacks
    • -
    • Public or private harassment
    • -
    • Publishing others’ private information, such as a physical or electronic address, without explicit permission
    • -
    • Other conduct which could reasonably be considered inappropriate in a professional setting
    • -
    -
    -
    -

    -Our Responsibilities

    -

    Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

    -

    Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

    -
    -
    -

    -Scope

    -

    This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

    -
    -
    -

    -Enforcement

    -

    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

    -

    Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

    -
    -
    -

    -Attribution

    -

    This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

    -

    For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq

    -
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/CONTRIBUTING.html b/docs/CONTRIBUTING.html deleted file mode 100644 index 505e792b..00000000 --- a/docs/CONTRIBUTING.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - -Contributing • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -

    Many hands make light work! Here are some ways you can contribute to this project:

    - -
    -

    -Open an issue

    -
      -
    • You can open an issue if you’d like to request a specific function or report a bug/error.
    • -
    -
    -
    -

    -Fixing typos

    -
      -
    • You can fix typos, spelling mistakes, or grammatical errors in the documentation directly using the GitHub web interface, as long as the changes are made in the source file. This generally means you’ll need to edit roxygen2 comments in an .R, not a .Rd file. You can find the .R file that generates the .Rd by reading the comment in the first line.
    • -
    -
    -
    -

    -Bigger changes

    -
      -
    • If you want to make a bigger change, it’s a good idea to first file an issue and make sure someone from the team agrees that it’s needed. If you’ve found a bug, please file an issue that illustrates the bug with a minimal reprex (this will also help you write a unit test, if needed).
    • -
    -
    -
    -

    -Pull request process

    - -
    -
    -

    -Code style

    -
      -
    • New code should follow the tidyverse style guide. You can use the styler package to apply these styles, but please don’t restyle code that has nothing to do with your PR.

    • -
    • We use roxygen2, with Markdown syntax, for documentation.

    • -
    • We use testthat for unit tests. Contributions with test cases included are easier to accept.

    • -
    -
    -
    -

    -Code of Conduct

    -

    Please note that the usethis project is released with a Contributor Code of Conduct. By contributing to this project you agree to abide by its terms.

    -

    These contribution guidelines were inspired by the guidelines from {usethis}

    -
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html deleted file mode 100644 index 93e1b492..00000000 --- a/docs/LICENSE-text.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - -License • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    YEAR: 2020
    -COPYRIGHT HOLDER: Tan Ho
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/LICENSE.html b/docs/LICENSE.html deleted file mode 100644 index ca2c214e..00000000 --- a/docs/LICENSE.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - -MIT License • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -

    Copyright (c) 2020 Tan Ho

    -

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    -

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    -

    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png deleted file mode 100644 index 51870c9e7c48454a4a7c61f5a0b0313f44071c69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12837 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 diff --git a/docs/apple-touch-icon-152x152.png b/docs/apple-touch-icon-152x152.png deleted file mode 100644 index 124e2a0fab56a5640c78e4f09493e3b8d3f4aad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17559 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 z�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 A761SM diff --git a/docs/apple-touch-icon-180x180.png b/docs/apple-touch-icon-180x180.png deleted file mode 100644 index 0cafa67220a6b8ff26cde44cf2ae1735201ab32b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22205 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 G#Qy+n+akOG diff --git a/docs/apple-touch-icon-60x60.png b/docs/apple-touch-icon-60x60.png deleted file mode 100644 index f55c5e02df71d8988e09aaee7fb280b8c29c073f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5424 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 diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png deleted file mode 100644 index d7ddf26669a25edcd0ae27e04853dd15cbf7a1f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22205 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 D3SuIk diff --git a/docs/articles/index.html b/docs/articles/index.html deleted file mode 100644 index 36d68257..00000000 --- a/docs/articles/index.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - -Articles • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    All vignettes

    -

    - -
    -
    mfl_basics
    -
    -
    mfl_getendpoint
    -
    -
    -
    -
    -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/articles/mfl_basics.html b/docs/articles/mfl_basics.html deleted file mode 100644 index ca7ad1d1..00000000 --- a/docs/articles/mfl_basics.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - -mfl_basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    Here’s what a basic dynasty league analysis might look like on MFL!

    -
    suppressPackageStartupMessages({
    -  library(ffscrapr)
    -  library(dplyr)
    -  library(tidyr)
    -})
    -

    Set up the connection to the league:

    -
    ssb <- mfl_connect(season = 2020, league_id = 54040, rate_limit_number = 3, rate_limit_seconds = 6)
    -ssb
    -#> <MFL connection 2020_54040>
    -#> List of 5
    -#>  $ platform   : chr "MFL"
    -#>  $ season     : num 2020
    -#>  $ league_id  : chr "54040"
    -#>  $ APIKEY     : NULL
    -#>  $ auth_cookie: NULL
    -#>  - attr(*, "class")= chr "mfl_conn"
    -

    Cool! Let’s have a deeper look at what this league is like.

    -
    -ssb_summary <- ff_league(ssb)
    -
    -str(ssb_summary)
    -#> tibble [1 x 13] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "54040"
    -#>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    -#>  $ franchise_count: num 14
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi TRUE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2020"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 35
    -#>  $ league_depth   : num 490
    -

    Okay, so it’s the Smash Bros Dynasty League, it’s a 1QB league with 14 teams, best ball scoring, half ppr and point-per-first-down settings.

    -

    Let’s grab the rosters now.

    -
    ssb_rosters <- ff_rosters(ssb)
    -
    -head(ssb_rosters)
    -#> # A tibble: 6 x 11
    -#>   franchise_id franchise_name player_id player_name pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   13129     Fournette,~ RB    JAC    25.5
    -#> 2 0001         Team Pikachu   13189     Engram, Ev~ TE    NYG    25.9
    -#> 3 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    27.7
    -#> 4 0001         Team Pikachu   13290     Cohen, Tar~ RB    CHI    25  
    -#> 5 0001         Team Pikachu   13155     Ross, John  WR    CIN    24.7
    -#> 6 0001         Team Pikachu   13158     Westbrook,~ WR    JAC    26.7
    -#> # ... with 4 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -player_values <- dp_values("values-players.csv")
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>%
    -  select(mfl_id,fantasypros_id)
    -
    -player_values <- player_values %>%
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>%
    -  select(mfl_id,ecr_1qb,ecr_pos,value_1qb)
    -
    -# Drilling down to just 1QB values and IDs, we'll be joining it onto rosters and don't need the extra stuff
    -
    -ssb_values <- ssb_rosters %>%
    -  left_join(player_values, by = c("player_id"="mfl_id")) %>%
    -  arrange(franchise_id,desc(value_1qb))
    -
    -head(ssb_values)
    -#> # A tibble: 6 x 14
    -#>   franchise_id franchise_name player_id player_name pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   14803     Edwards-He~ RB    KCC    21.3
    -#> 2 0001         Team Pikachu   13129     Fournette,~ RB    JAC    25.5
    -#> 3 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    27.7
    -#> 4 0001         Team Pikachu   13189     Engram, Ev~ TE    NYG    25.9
    -#> 5 0001         Team Pikachu   14777     Burrow, Joe QB    CIN    23.6
    -#> 6 0001         Team Pikachu   14838     Shenault, ~ WR    JAC    21.8
    -#> # ... with 7 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>, ecr_1qb <dbl>, ecr_pos <dbl>,
    -#> #   value_1qb <int>
    -

    Let’s do some team summaries now!

    -
    -value_summary <- ssb_values %>%
    -  group_by(franchise_id,franchise_name,pos) %>%
    -  summarise(total_value = sum(value_1qb,na.rm = TRUE)) %>%
    -  ungroup() %>%
    -  group_by(franchise_id,franchise_name) %>%
    -  mutate(team_value = sum(total_value)) %>%
    -  ungroup() %>%
    -  pivot_wider(names_from = pos, values_from = total_value) %>%
    -  arrange(desc(team_value))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -value_summary
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                    <int> <int> <int> <int> <int>
    -#>  1 0004         Team Ice Climbers        42795   570 19867  2037 20321
    -#>  2 0009         Team Link                39268  2777 11193  2207 23091
    -#>  3 0006         Team King Dedede         36999  5991  7793  1745 21470
    -#>  4 0007         Team Kirby               35053  3170 23983  2662  5238
    -#>  5 0014         Team Luigi               34775  2102   432   932 31309
    -#>  6 0010         Team Yoshi               33876  1861  7523  6342 18150
    -#>  7 0003         Team Captain Falcon      33800  2090 10154  6440 15116
    -#>  8 0011         Team Diddy Kong          27650  1856 13312  1424 11058
    -#>  9 0012         Team Mewtwo              27597   987 16856  1290  8464
    -#> 10 0002         Team Simon Belmont       27128   401 10262    86 16379
    -#> 11 0008         Team Fox                 24074  7436 10139   430  6069
    -#> 12 0005         Team Dr. Mario           22195    13  1365  3449 17368
    -#> 13 0013         Team Ness                20099   475 15728  1443  2453
    -#> 14 0001         Team Pikachu             19297  1280 11156  2334  4527
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages.

    -
    value_summary_pct <- value_summary %>%
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>%
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                    <dbl> <dbl> <dbl> <dbl> <dbl>
    -#>  1 0004         Team Ice Climbers        0.101 0.018 0.124 0.062 0.101
    -#>  2 0009         Team Link                0.092 0.09  0.07  0.067 0.115
    -#>  3 0006         Team King Dedede         0.087 0.193 0.049 0.053 0.107
    -#>  4 0007         Team Kirby               0.083 0.102 0.15  0.081 0.026
    -#>  5 0014         Team Luigi               0.082 0.068 0.003 0.028 0.156
    -#>  6 0010         Team Yoshi               0.08  0.06  0.047 0.193 0.09 
    -#>  7 0003         Team Captain Falcon      0.08  0.067 0.064 0.196 0.075
    -#>  8 0011         Team Diddy Kong          0.065 0.06  0.083 0.043 0.055
    -#>  9 0012         Team Mewtwo              0.065 0.032 0.106 0.039 0.042
    -#> 10 0002         Team Simon Belmont       0.064 0.013 0.064 0.003 0.081
    -#> 11 0008         Team Fox                 0.057 0.24  0.063 0.013 0.03 
    -#> 12 0005         Team Dr. Mario           0.052 0     0.009 0.105 0.086
    -#> 13 0013         Team Ness                0.047 0.015 0.098 0.044 0.012
    -#> 14 0001         Team Pikachu             0.045 0.041 0.07  0.071 0.023
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team!

    -
    -age_summary <- ssb_values %>%
    -  group_by(franchise_id,pos) %>%
    -  mutate(position_value = sum(value_1qb,na.rm=TRUE)) %>%
    -  ungroup() %>%
    -  mutate(weighted_age = age*value_1qb/position_value) %>%
    -  group_by(franchise_id,franchise_name,pos) %>%
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>%
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -age_summary
    -#> # A tibble: 14 x 10
    -#> # Groups:   franchise_id, franchise_name [14]
    -#>    franchise_id franchise_name age_QB age_RB age_TE age_WR count_QB count_RB
    -#>    <chr>        <chr>           <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    -#>  1 0001         Team Pikachu     24.3   22.9   25.9   26.3        6        6
    -#>  2 0002         Team Simon Be~   33.9   24.0   24.1   24.2        7       10
    -#>  3 0003         Team Captain ~   24.7   23.7   30.1   26.4        6       11
    -#>  4 0004         Team Ice Clim~   27.5   24.6   26.1   27.9        5        7
    -#>  5 0005         Team Dr. Mario   37.7   19.2   23.9   24.4        3        7
    -#>  6 0006         Team King Ded~   24.8   25.4   25.8   24.8        3       10
    -#>  7 0007         Team Kirby       23.9   24.1   29.4   26.1        3       11
    -#>  8 0008         Team Fox         24.8   26.1   26.0   26.8        3       11
    -#>  9 0009         Team Link        25.8   25.8   27.1   27.4        2        9
    -#> 10 0010         Team Yoshi       28.9   21.4   26.8   24.2        4        4
    -#> 11 0011         Team Diddy Ko~   30.7   25.4   23.7   25.5        2       13
    -#> 12 0012         Team Mewtwo      29.2   24.1   24.4   23.6        4        6
    -#> 13 0013         Team Ness        30.6   23.1   22.9   26.0        5        9
    -#> 14 0014         Team Luigi       32.0   28.2   27.3   26.5        5        9
    -#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - diff --git a/docs/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/articles/mfl_getendpoint.html b/docs/articles/mfl_getendpoint.html deleted file mode 100644 index 2fad8581..00000000 --- a/docs/articles/mfl_getendpoint.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - -mfl_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Creating your own custom MFL API calls

    -
    library(ffscrapr)
    -

    The MFL API is extensive, and I haven’t written out a function for every single one of the endpoints. If there is something you’d like to access, you can use the lower-level “mfl_getendpoint” function to create a GET request and access the data, while still using the authentication and rate-limiting features I’ve already created.

    -

    Here is an example of how you can call one of the endpoints - in this case, let’s try searching for SFBX leagues through the leagueSearch endpoint.

    -

    We’ll start by opening up this page, https://api.myfantasyleague.com/2020/api_info?STATE=test&CCAT=export&TYPE=leagueSearch, which is the “test” page for this particular endpoint. From here, we can see that the only parameter required is “SEARCH”.

    -

    We need a connection object to pass into the mfl_getendpoint function, although in this example we don’t need to give it much since the endpoint doesn’t need a leagueID or username/password or APIKEY.

    -
    conn <- mfl_connect(season = 2020)
    -
    -conn
    -#> <MFL connection 2020_>
    -#> List of 5
    -#>  $ platform   : chr "MFL"
    -#>  $ season     : num 2020
    -#>  $ league_id  : chr(0) 
    -#>  $ APIKEY     : NULL
    -#>  $ auth_cookie: NULL
    -#>  - attr(*, "class")= chr "mfl_conn"
    -

    The parameters of the mfl_getendpoint function are conn, endpoint, and any other optional parameters required by the API.

    -

    The function will automatically insert the league_id, API key, and/or authentication cookies from the connection object, and will request JSON for you - so you do not need to add any of these parameters.

    -

    It is safest to assume that everything is case-sensitive: the endpoint must match the case displayed by MFL (“leagueSearch”) and the SEARCH argument name must be provided in upper-case.

    -
    sfb_search <- mfl_getendpoint(conn,endpoint = "leagueSearch", SEARCH = "sfbx conference")
    -

    The function returns a list with the query that was sent, the response that was received, and the content that was parsed - this helps you debug the result of the function later, by inspecting the query that was sent and the response that was received.

    -

    I like to extract the content with purrr::pluck and then convert it into a tibble and unnest the content from there, but you can use base R subsetting or magrittr::extract2 for the same purpose.

    -
    -search_results <- sfb_search %>%
    -  purrr::pluck("content","leagues","league") %>%
    -  tibble::tibble() %>%
    -  tidyr::unnest_wider(1)
    -
    -head(search_results)
    -#> # A tibble: 6 x 3
    -#>   homeURL                                          name                id   
    -#>   <chr>                                            <chr>               <chr>
    -#> 1 http://www73.myfantasyleague.com/2020/home/13411 #SFBX Conference 12 13411
    -#> 2 http://www73.myfantasyleague.com/2020/home/16428 #SFBX Conference 6  16428
    -#> 3 http://www73.myfantasyleague.com/2020/home/17910 #SFBX Conference 11 17910
    -#> 4 http://www73.myfantasyleague.com/2020/home/26453 #SFBX Conference 8  26453
    -#> 5 http://www73.myfantasyleague.com/2020/home/27495 #SFBX Conference 2  27495
    -#> 6 http://www73.myfantasyleague.com/2020/home/31492 #SFBX Conference 14 31492
    -
    -

    -Another Example: Trade Bait

    -

    Here’s another example, this time with the trade bait endpoint: https://api.myfantasyleague.com/2020/api_info?STATE=test&CCAT=export&TYPE=tradeBait

    -
    -fog <- mfl_connect(season = 2019, league_id = 12608)
    -
    -fog_tradebait <- mfl_getendpoint(fog, "tradeBait", INCLUDE_DRAFT_PICKS = 1) %>%
    -  purrr::pluck("content","tradeBaits","tradeBait") %>%
    -  tibble::tibble() %>%
    -  tidyr::unnest_wider(1) %>%
    -  tidyr::separate_rows("willGiveUp",sep = ",") %>%
    -  dplyr::mutate(timestamp = lubridate::as_datetime(as.numeric(timestamp))) %>%
    -  dplyr::left_join(
    -    ff_franchises(fog) %>% dplyr::select("franchise_id","franchise_name"),
    -    by = c("franchise_id")
    -  ) %>%
    -  dplyr::left_join(
    -    mfl_players() %>% dplyr::select("player_id","player_name","pos","age","team"),
    -    by = c("willGiveUp" = "player_id")
    -  )
    -
    -head(fog_tradebait)
    -#> # A tibble: 6 x 9
    -#>   timestamp           franchise_id willGiveUp inExchangeFor franchise_name
    -#>   <dttm>              <chr>        <chr>      <chr>         <chr>         
    -#> 1 2019-11-23 14:49:15 0001         7394       "anyone need~ @JohnBoschFF  
    -#> 2 2019-11-23 14:49:15 0001         13128      "anyone need~ @JohnBoschFF  
    -#> 3 2020-02-01 05:43:29 0003         13319      ""            The Accountant
    -#> 4 2020-02-01 05:43:29 0003         13139      ""            The Accountant
    -#> 5 2020-02-01 05:43:29 0003         11675      ""            The Accountant
    -#> 6 2020-02-01 15:49:25 0004         12171      ""            Kevin Cutillo 
    -#> # ... with 4 more variables: player_name <chr>, pos <chr>, age <dbl>,
    -#> #   team <chr>
    -
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - diff --git a/docs/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/authors.html b/docs/authors.html deleted file mode 100644 index d90630d9..00000000 --- a/docs/authors.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - -Authors • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
      -
    • -

      Tan Ho. Author, maintainer. -

      -
    • -
    - -
    - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css deleted file mode 100644 index 5a859415..00000000 --- a/docs/bootstrap-toc.css +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ - -/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ - -/* All levels of nav */ -nav[data-toggle='toc'] .nav > li > a { - display: block; - padding: 4px 20px; - font-size: 13px; - font-weight: 500; - color: #767676; -} -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 19px; - color: #563d7c; - text-decoration: none; - background-color: transparent; - border-left: 1px solid #563d7c; -} -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 18px; - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-left: 2px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} -nav[data-toggle='toc'] .nav .nav > li > a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; - font-weight: normal; -} -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 29px; -} -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 28px; - font-weight: 500; -} - -/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ -nav[data-toggle='toc'] .nav > .active > ul { - display: block; -} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js deleted file mode 100644 index 1cdd573b..00000000 --- a/docs/bootstrap-toc.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ -(function() { - 'use strict'; - - window.Toc = { - helpers: { - // return all matching elements in the set, or their descendants - findOrFilter: function($el, selector) { - // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ - // http://stackoverflow.com/a/12731439/358804 - var $descendants = $el.find(selector); - return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); - }, - - generateUniqueIdBase: function(el) { - var text = $(el).text(); - var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); - return anchor || el.tagName.toLowerCase(); - }, - - generateUniqueId: function(el) { - var anchorBase = this.generateUniqueIdBase(el); - for (var i = 0; ; i++) { - var anchor = anchorBase; - if (i > 0) { - // add suffix - anchor += '-' + i; - } - // check if ID already exists - if (!document.getElementById(anchor)) { - return anchor; - } - } - }, - - generateAnchor: function(el) { - if (el.id) { - return el.id; - } else { - var anchor = this.generateUniqueId(el); - el.id = anchor; - return anchor; - } - }, - - createNavList: function() { - return $(''); - }, - - createChildNavList: function($parent) { - var $childList = this.createNavList(); - $parent.append($childList); - return $childList; - }, - - generateNavEl: function(anchor, text) { - var $a = $(''); - $a.attr('href', '#' + anchor); - $a.text(text); - var $li = $('
  • '); - $li.append($a); - return $li; - }, - - generateNavItem: function(headingEl) { - var anchor = this.generateAnchor(headingEl); - var $heading = $(headingEl); - var text = $heading.data('toc-text') || $heading.text(); - return this.generateNavEl(anchor, text); - }, - - // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). - getTopLevel: function($scope) { - for (var i = 1; i <= 6; i++) { - var $headings = this.findOrFilter($scope, 'h' + i); - if ($headings.length > 1) { - return i; - } - } - - return 1; - }, - - // returns the elements for the top level, and the next below it - getHeadings: function($scope, topLevel) { - var topSelector = 'h' + topLevel; - - var secondaryLevel = topLevel + 1; - var secondarySelector = 'h' + secondaryLevel; - - return this.findOrFilter($scope, topSelector + ',' + secondarySelector); - }, - - getNavLevel: function(el) { - return parseInt(el.tagName.charAt(1), 10); - }, - - populateNav: function($topContext, topLevel, $headings) { - var $context = $topContext; - var $prevNav; - - var helpers = this; - $headings.each(function(i, el) { - var $newNav = helpers.generateNavItem(el); - var navLevel = helpers.getNavLevel(el); - - // determine the proper $context - if (navLevel === topLevel) { - // use top level - $context = $topContext; - } else if ($prevNav && $context === $topContext) { - // create a new level of the tree and switch to it - $context = helpers.createChildNavList($prevNav); - } // else use the current $context - - $context.append($newNav); - - $prevNav = $newNav; - }); - }, - - parseOps: function(arg) { - var opts; - if (arg.jquery) { - opts = { - $nav: arg - }; - } else { - opts = arg; - } - opts.$scope = opts.$scope || $(document.body); - return opts; - } - }, - - // accepts a jQuery object, or an options object - init: function(opts) { - opts = this.helpers.parseOps(opts); - - // ensure that the data attribute is in place for styling - opts.$nav.attr('data-toggle', 'toc'); - - var $topContext = this.helpers.createChildNavList(opts.$nav); - var topLevel = this.helpers.getTopLevel(opts.$scope); - var $headings = this.helpers.getHeadings(opts.$scope, topLevel); - this.helpers.populateNav($topContext, topLevel, $headings); - } - }; - - $(function() { - $('nav[data-toggle="toc"]').each(function(i, el) { - var $nav = $(el); - Toc.init($nav); - }); - }); -})(); diff --git a/docs/dev/404.html b/docs/dev/404.html deleted file mode 100644 index a8d0fd50..00000000 --- a/docs/dev/404.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - -Page not found (404) • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -Content not found. Please use links in the navbar. - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/CODE_OF_CONDUCT.html b/docs/dev/CODE_OF_CONDUCT.html deleted file mode 100644 index a92c7ee0..00000000 --- a/docs/dev/CODE_OF_CONDUCT.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - -Contributor Covenant Code of Conduct • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -
    -

    -Our Pledge

    -

    In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

    -
    -
    -

    -Our Standards

    -

    Examples of behavior that contributes to creating a positive environment include:

    -
      -
    • Using welcoming and inclusive language
    • -
    • Being respectful of differing viewpoints and experiences
    • -
    • Gracefully accepting constructive criticism
    • -
    • Focusing on what is best for the community
    • -
    • Showing empathy towards other community members
    • -
    -

    Examples of unacceptable behavior by participants include:

    -
      -
    • The use of sexualized language or imagery and unwelcome sexual attention or advances
    • -
    • Trolling, insulting/derogatory comments, and personal or political attacks
    • -
    • Public or private harassment
    • -
    • Publishing others’ private information, such as a physical or electronic address, without explicit permission
    • -
    • Other conduct which could reasonably be considered inappropriate in a professional setting
    • -
    -
    -
    -

    -Our Responsibilities

    -

    Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

    -

    Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

    -
    -
    -

    -Scope

    -

    This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

    -
    -
    -

    -Enforcement

    -

    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

    -

    Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

    -
    -
    -

    -Attribution

    -

    This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

    -

    For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq

    -
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/CONTRIBUTING.html b/docs/dev/CONTRIBUTING.html deleted file mode 100644 index 04d62051..00000000 --- a/docs/dev/CONTRIBUTING.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - -Contributing • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -

    Many hands make light work! Here are some ways you can contribute to this project:

    - -
    -

    -Open an issue

    -
      -
    • You can open an issue if you’d like to request a specific function or report a bug/error.
    • -
    -
    -
    -

    -Fixing typos

    -
      -
    • You can fix typos, spelling mistakes, or grammatical errors in the documentation directly using the GitHub web interface, as long as the changes are made in the source file. This generally means you’ll need to edit roxygen2 comments in an .R, not a .Rd file. You can find the .R file that generates the .Rd by reading the comment in the first line.
    • -
    -
    -
    -

    -Bigger changes

    -
      -
    • If you want to make a bigger change, it’s a good idea to first file an issue and make sure someone from the team agrees that it’s needed. If you’ve found a bug, please file an issue that illustrates the bug with a minimal reprex (this will also help you write a unit test, if needed).
    • -
    -
    -
    -

    -Project and branch strategy

    -
      -
    • Feature development for this package is organized with GitHub Projects, each of which track towards a minor version release.
    • -
    • Each function/method is tracked as a GitHub Issue, and linked to/closed by Pull Requests.
    • -
    • The main branch contains the code for the current CRAN version of the package.
    • -
    • The dev branch reflects a fully-tested, linted, and documented version of the proposed release.
    • -
    • Staging branches (e.g. fleaflicker, espn) contain reviewed/tested code for each GitHub Project.
    • -
    • Feature branches are built off of the staging branch, add one function/method + documentation + testing, and then is squash-merged back onto the staging branch once developed.
    • -
    • The staging branch is periodically merged onto the dev branch, and the dev branch is merged onto the main branch only when released to CRAN.
    • -
    -
    -
    -

    -Pull request process

    - -
    -
    -

    -Code style

    -
      -
    • New code should follow the tidyverse style guide. You can use the styler package to apply these styles, but please don’t restyle code that has nothing to do with your PR.

    • -
    • We use roxygen2, with Markdown syntax, for documentation.

    • -
    • We use testthat for unit tests. Contributions with test cases included are easier to accept.

    • -
    -
    -
    -

    -Code of Conduct

    -

    Please note that the usethis project is released with a Contributor Code of Conduct. By contributing to this project you agree to abide by its terms.

    -

    These contribution guidelines were inspired by the guidelines from {usethis}

    -
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/LICENSE-text.html b/docs/dev/LICENSE-text.html deleted file mode 100644 index ee89dce7..00000000 --- a/docs/dev/LICENSE-text.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - - -License • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    YEAR: 2020
    -COPYRIGHT HOLDER: Tan Ho
    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/LICENSE.html b/docs/dev/LICENSE.html deleted file mode 100644 index 04a6a2c2..00000000 --- a/docs/dev/LICENSE.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -MIT License • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    - -

    Copyright (c) 2020 Tan Ho

    -

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    -

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    -

    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

    -
    - -
    - - - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/apple-touch-icon-120x120.png b/docs/dev/apple-touch-icon-120x120.png deleted file mode 100644 index 563cfb455a6b4b77f1a709ab811d08b3f779ac87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7100 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 E2UG5Kw*UYD diff --git a/docs/dev/apple-touch-icon-152x152.png b/docs/dev/apple-touch-icon-152x152.png deleted file mode 100644 index c5135d52001267958d4e8dfad8d44b74f7cf84a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9362 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 diff --git a/docs/dev/apple-touch-icon-60x60.png b/docs/dev/apple-touch-icon-60x60.png deleted file mode 100644 index bb591f25f140f61e692fbf4549906a549ec51665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3038 zcmV<43nBE0P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 diff --git a/docs/dev/apple-touch-icon-76x76.png b/docs/dev/apple-touch-icon-76x76.png deleted file mode 100644 index 920c9a0f76c01cba4afb945239283d6da167add2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3833 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 diff --git a/docs/dev/apple-touch-icon.png b/docs/dev/apple-touch-icon.png deleted file mode 100644 index 08d9eb572c5569aacedee03b711319041315447a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11245 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 - - - - - - -Getting Started: MFL Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on MFL.

    -

    We’ll start by loading the packages:

    -
    -  library(ffscrapr)
    -#> memorycache
    -  library(dplyr)
    -#> 
    -#> Attaching package: 'dplyr'
    -#> The following objects are masked from 'package:stats':
    -#> 
    -#>     filter, lag
    -#> The following objects are masked from 'package:base':
    -#> 
    -#>     intersect, setdiff, setequal, union
    -  library(tidyr)
    -
    -

    Set up the connection to the league:

    -
    -ssb <- mfl_connect(season = 2020, 
    -                   league_id = 54040, # from the URL of your league
    -                   rate_limit_number = 3, 
    -                   rate_limit_seconds = 6)
    -ssb
    -#> <MFL connection 2020_54040>
    -#> List of 5
    -#>  $ platform   : chr "MFL"
    -#>  $ season     : num 2020
    -#>  $ league_id  : chr "54040"
    -#>  $ APIKEY     : NULL
    -#>  $ auth_cookie: NULL
    -#>  - attr(*, "class")= chr "mfl_conn"
    -
    -

    I’ve done this with the mfl_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -
    -ssb_summary <- ff_league(ssb)
    -
    -str(ssb_summary)
    -#> tibble [1 x 13] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "54040"
    -#>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    -#>  $ franchise_count: num 14
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi TRUE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2020"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 28
    -#>  $ league_depth   : num 392
    -
    -

    Okay, so it’s the Smash Bros Dynasty League, it’s a 1QB league with 14 teams, best ball scoring, half ppr and point-per-first-down settings.

    -

    Let’s grab the rosters now.

    -
    -ssb_rosters <- ff_rosters(ssb)
    -
    -head(ssb_rosters)
    -#> # A tibble: 6 x 11
    -#>   franchise_id franchise_name player_id player_name pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   13189     Engram, Ev~ TE    NYG    26.2
    -#> 2 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    28  
    -#> 3 0001         Team Pikachu   14085     Pollard, T~ RB    DAL    23.6
    -#> 4 0001         Team Pikachu   13645     Smith, Tre~ WR    NOS    24.9
    -#> 5 0001         Team Pikachu   12110     Brate, Cam~ TE    TBB    29.4
    -#> 6 0001         Team Pikachu   13168     Reynolds, ~ WR    LAR    25.8
    -#> # ... with 4 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>
    -
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -
    -player_values <- dp_values("values-players.csv")
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(mfl_id,fantasypros_id)
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(mfl_id,ecr_1qb,ecr_pos,value_1qb)
    -
    -# Drilling down to just 1QB values and IDs, we'll be joining it onto rosters and don't need the extra stuff
    -
    -ssb_values <- ssb_rosters %>% 
    -  left_join(player_values, by = c("player_id"="mfl_id")) %>% 
    -  arrange(franchise_id,desc(value_1qb))
    -
    -head(ssb_values)
    -#> # A tibble: 6 x 14
    -#>   franchise_id franchise_name player_id player_name pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   14803     Edwards-He~ RB    KCC    21.6
    -#> 2 0001         Team Pikachu   14835     Higgins, T~ WR    CIN    21.8
    -#> 3 0001         Team Pikachu   14777     Burrow, Joe QB    CIN    23.9
    -#> 4 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    28  
    -#> 5 0001         Team Pikachu   14838     Shenault, ~ WR    JAC    22.1
    -#> 6 0001         Team Pikachu   14779     Herbert, J~ QB    LAC    22.7
    -#> # ... with 7 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>, ecr_1qb <dbl>, ecr_pos <dbl>,
    -#> #   value_1qb <int>
    -
    -

    Let’s do some team summaries now!

    -
    -
    -value_summary <- ssb_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_1qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -value_summary
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                    <int> <int> <int> <int> <int>
    -#>  1 0004         Team Ice Climbers        41671   583 20414  2586 18088
    -#>  2 0006         Team King Dedede         38280  5972  5244  1556 25508
    -#>  3 0009         Team Link                38244  2696  9503  4338 21707
    -#>  4 0010         Team Yoshi               35176  2802  8720  6715 16939
    -#>  5 0007         Team Kirby               34387  4111 15331   794 14151
    -#>  6 0003         Team Captain Falcon      33427  1872  9091  5836 16628
    -#>  7 0011         Team Diddy Kong          29432  1468 13640  2362 11962
    -#>  8 0002         Team Simon Belmont       29264   389 10102    51 18722
    -#>  9 0014         Team Luigi               28548  3588  5388  1167 18405
    -#> 10 0005         Team Dr. Mario           26642    60  4055  3480 19047
    -#> 11 0012         Team Mewtwo              25765   805 16638  1644  6678
    -#> 12 0001         Team Pikachu             20597  2918  8584  1498  7597
    -#> 13 0008         Team Fox                 20450  6458  7634   259  6099
    -#> 14 0013         Team Ness                19976   881 14487  2033  2575
    -
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                    <dbl> <dbl> <dbl> <dbl> <dbl>
    -#>  1 0004         Team Ice Climbers        0.099 0.017 0.137 0.075 0.089
    -#>  2 0006         Team King Dedede         0.091 0.173 0.035 0.045 0.125
    -#>  3 0009         Team Link                0.091 0.078 0.064 0.126 0.106
    -#>  4 0010         Team Yoshi               0.083 0.081 0.059 0.196 0.083
    -#>  5 0007         Team Kirby               0.082 0.119 0.103 0.023 0.069
    -#>  6 0003         Team Captain Falcon      0.079 0.054 0.061 0.17  0.081
    -#>  7 0011         Team Diddy Kong          0.07  0.042 0.092 0.069 0.059
    -#>  8 0002         Team Simon Belmont       0.069 0.011 0.068 0.001 0.092
    -#>  9 0014         Team Luigi               0.068 0.104 0.036 0.034 0.09 
    -#> 10 0005         Team Dr. Mario           0.063 0.002 0.027 0.101 0.093
    -#> 11 0012         Team Mewtwo              0.061 0.023 0.112 0.048 0.033
    -#> 12 0001         Team Pikachu             0.049 0.084 0.058 0.044 0.037
    -#> 13 0008         Team Fox                 0.048 0.187 0.051 0.008 0.03 
    -#> 14 0013         Team Ness                0.047 0.025 0.097 0.059 0.013
    -
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team!

    -
    -
    -age_summary <- ssb_values %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_1qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_1qb/position_value) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -age_summary
    -#> # A tibble: 14 x 10
    -#> # Groups:   franchise_id, franchise_name [14]
    -#>    franchise_id franchise_name age_QB age_RB age_TE age_WR count_QB count_RB
    -#>    <chr>        <chr>           <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    -#>  1 0001         Team Pikachu     23.4   22.0   26.0   23.9        3        6
    -#>  2 0002         Team Simon Be~   32.6   24.7   24.4   24.1        8       11
    -#>  3 0003         Team Captain ~   24.6   23.4   30.7   26.5        5        9
    -#>  4 0004         Team Ice Clim~   28.1   24.9   26.0   27.5        5        9
    -#>  5 0005         Team Dr. Mario   29.2   23.1   24.3   24.3        2        7
    -#>  6 0006         Team King Ded~   25.4   25.5   25.8   24.8        3        9
    -#>  7 0007         Team Kirby       24.2   24.4   29.2   27.5        4        9
    -#>  8 0008         Team Fox         25.5   26.4   33.5   27.8        4       10
    -#>  9 0009         Team Link        25.8   26.0   26.8   27.7        4       10
    -#> 10 0010         Team Yoshi       28.4   21.9   27.3   24.7        3        7
    -#> 11 0011         Team Diddy Ko~   31.3   26.1   24.2   24.0        4       11
    -#> 12 0012         Team Mewtwo      28.8   24.0   24.4   24.2        5        7
    -#> 13 0013         Team Ness        31.4   23.3   23.1   26.0        4       10
    -#> 14 0014         Team Luigi       32.3   24.6   25.8   26.4        2        9
    -#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    -
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used three functions: ff_connect, ff_league, and ff_rosters. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - diff --git a/docs/dev/articles/a1_mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/a1_mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/a1_mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/a1_mfl_basics_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/a1_mfl_basics_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/a1_mfl_basics_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/a2_sleeper_basics.html b/docs/dev/articles/a2_sleeper_basics.html deleted file mode 100644 index a54774ee..00000000 --- a/docs/dev/articles/a2_sleeper_basics.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - -Getting Started: Sleeper Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on Sleeper.

    -

    We’ll start by loading the packages:

    -
    -  library(ffscrapr)
    -#> memorycache
    -  library(dplyr)
    -#> 
    -#> Attaching package: 'dplyr'
    -#> The following objects are masked from 'package:stats':
    -#> 
    -#>     filter, lag
    -#> The following objects are masked from 'package:base':
    -#> 
    -#>     intersect, setdiff, setequal, union
    -  library(tidyr)
    -
    -

    In Sleeper, unlike in other platforms, it’s very unlikely that you’ll remember the league ID - both because most people use the mobile app, and because it happens to be an 18 digit number! It’s a little more natural to start analyses from the username, so let’s start there!

    -
    -
    -solarpool_leagues <- sleeper_userleagues("solarpool",2020)
    -
    -head(solarpool_leagues)
    -#> # A tibble: 3 x 4
    -#>   league_name                   league_id        franchise_name franchise_id    
    -#>   <chr>                         <chr>            <chr>          <chr>           
    -#> 1 z_dynastyprocess-test         633501761776197~ solarpool      202892038360801~
    -#> 2 The JanMichaelLarkin Dynasty~ 522458773317046~ solarpool      202892038360801~
    -#> 3 DLP Dynasty League            521379020332068~ DLP::thoriyan  202892038360801~
    -
    -

    Let’s pull the JML league ID from here for analysis, and set up a Sleeper connection object.

    -
    -jml_id <- solarpool_leagues %>% 
    -  filter(league_name == "The JanMichaelLarkin Dynasty League") %>% 
    -  pull(league_id)
    -
    -jml_id # For quick analyses, I'm not above copy-pasting the league ID instead!
    -#> [1] "522458773317046272"
    -
    -jml <- sleeper_connect(season = 2020, league_id = jml_id)
    -
    -jml
    -#> <Sleeper connection 2020_522458773317046272>
    -#> List of 5
    -#>  $ platform : chr "Sleeper"
    -#>  $ season   : num 2020
    -#>  $ user_name: NULL
    -#>  $ league_id: chr "522458773317046272"
    -#>  $ user_id  : NULL
    -#>  - attr(*, "class")= chr "sleeper_conn"
    -
    -

    I’ve done this with the sleeper_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -
    -jml_summary <- ff_league(jml)
    -
    -str(jml_summary)
    -#> tibble [1 x 15] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "522458773317046272"
    -#>  $ league_name    : chr "The JanMichaelLarkin Dynasty League"
    -#>  $ league_type    : chr "dynasty"
    -#>  $ franchise_count: num 12
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2019-2020"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : int 25
    -#>  $ league_depth   : num 300
    -#>  $ prev_league_ids: chr "386236959468675072"
    -
    -

    Okay, so it’s the JanMichaelLarkin Dynasty League, it’s a 1QB league with 12 teams, half ppr scoring, and rosters about 300 players.

    -

    Let’s grab the rosters now.

    -
    -jml_rosters <- ff_rosters(jml)
    -
    -head(jml_rosters)
    -#> # A tibble: 6 x 7
    -#>   franchise_id franchise_name player_id player_name     pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>           <chr> <chr> <dbl>
    -#> 1 1            Fake News      2025      Albert Wilson   WR    MIA    28.4
    -#> 2 1            Fake News      4089      Gerald Everett  TE    LAR    26.4
    -#> 3 1            Fake News      6068      Devine Ozigbo   RB    JAX    24.1
    -#> 4 1            Fake News      4036      Corey Davis     WR    TEN    25.9
    -#> 5 1            Fake News      1339      Zach Ertz       TE    PHI    30  
    -#> 6 1            Fake News      5068      Kerryon Johnson RB    DET    23.4
    -
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -
    -player_values <- dp_values("values-players.csv")
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(sleeper_id,fantasypros_id)
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(sleeper_id,ecr_1qb,ecr_pos,value_1qb)
    -
    -# Drilling down to just 1QB values and IDs, we'll be joining it onto rosters and don't need the extra stuff
    -
    -jml_values <- jml_rosters %>% 
    -  left_join(player_values, by = c("player_id"="sleeper_id")) %>% 
    -  arrange(franchise_id,desc(value_1qb))
    -
    -head(jml_values)
    -#> # A tibble: 6 x 10
    -#>   franchise_id franchise_name player_id player_name pos   team    age ecr_1qb
    -#>   <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>   <dbl>
    -#> 1 1            Fake News      1426      DeAndre Ho~ WR    ARI    28.4     6.7
    -#> 2 1            Fake News      4866      Saquon Bar~ RB    NYG    23.8     7.7
    -#> 3 1            Fake News      4037      Chris Godw~ WR    TB     24.7    15.7
    -#> 4 1            Fake News      4199      Aaron Jones RB    GB     26      28.3
    -#> 5 1            Fake News      4098      Kareem Hunt RB    CLE    25.3    47.7
    -#> 6 1            Fake News      4137      James Conn~ RB    PIT    25.5    71.3
    -#> # ... with 2 more variables: ecr_pos <dbl>, value_1qb <int>
    -
    -

    Let’s do some team summaries now!

    -
    -
    -value_summary <- jml_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_1qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -value_summary
    -#> # A tibble: 12 x 8
    -#>    franchise_id franchise_name    team_value    QB    RB    TE    WR    FB
    -#>    <chr>        <chr>                  <int> <int> <int> <int> <int> <int>
    -#>  1 4            The FANTom Menace      51911  3133 15663  2637 30478    NA
    -#>  2 1            Fake News              47805   654 20073  4097 22981    NA
    -#>  3 3            solarpool              46000  5907 21904  1321 16868    NA
    -#>  4 11           Permian Panthers       43204  4187 11979  5266 21772    NA
    -#>  5 12           jaydk                  39289  1972 15583  4343 17391    NA
    -#>  6 8            Hocka Flocka           35007  1235 19661  2304 11807    NA
    -#>  7 6            sox05syd               33925  3288  4000  7099 19538    NA
    -#>  8 9            ZPMiller97             30612  4122 11320  2585 12585    NA
    -#>  9 5            Barbarians             29758  4391 16191  2713  6463    NA
    -#> 10 7            Flipadelphia05         23353  4078  7371   414 11490    NA
    -#> 11 10           JMLarkin               21571   926   396  1389 18860     0
    -#> 12 2            KingGabe               18830   543  4577   148 13562    NA
    -
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 12 x 8
    -#>    franchise_id franchise_name    team_value    QB    RB    TE    WR    FB
    -#>    <chr>        <chr>                  <dbl> <dbl> <dbl> <dbl> <dbl> <int>
    -#>  1 4            The FANTom Menace      0.123 0.091 0.105 0.077 0.15     NA
    -#>  2 1            Fake News              0.113 0.019 0.135 0.119 0.113    NA
    -#>  3 3            solarpool              0.109 0.172 0.147 0.038 0.083    NA
    -#>  4 11           Permian Panthers       0.103 0.122 0.081 0.153 0.107    NA
    -#>  5 12           jaydk                  0.093 0.057 0.105 0.127 0.085    NA
    -#>  6 8            Hocka Flocka           0.083 0.036 0.132 0.067 0.058    NA
    -#>  7 6            sox05syd               0.081 0.095 0.027 0.207 0.096    NA
    -#>  8 9            ZPMiller97             0.073 0.12  0.076 0.075 0.062    NA
    -#>  9 5            Barbarians             0.071 0.128 0.109 0.079 0.032    NA
    -#> 10 7            Flipadelphia05         0.055 0.118 0.05  0.012 0.056    NA
    -#> 11 10           JMLarkin               0.051 0.027 0.003 0.04  0.093     0
    -#> 12 2            KingGabe               0.045 0.016 0.031 0.004 0.067    NA
    -
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    -
    -
    -age_summary <- jml_values %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_1qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_1qb/position_value,
    -         weighted_age = round(weighted_age, 1)) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -#> `summarise()` regrouping output by 'franchise_id', 'franchise_name' (override with `.groups` argument)
    -
    -age_summary
    -#> # A tibble: 12 x 12
    -#> # Groups:   franchise_id, franchise_name [12]
    -#>    franchise_id franchise_name age_QB age_RB age_TE age_WR age_FB count_QB
    -#>    <chr>        <chr>           <dbl>  <dbl>  <dbl>  <dbl>  <dbl>    <int>
    -#>  1 1            Fake News        33.1   24.8   26     27       NA        3
    -#>  2 10           JMLarkin         29.1   25.8   26.6   25.2      0        3
    -#>  3 11           Permian Panth~   23.8   22.9   31     25.7     NA        3
    -#>  4 12           jaydk            29.7   25.1   25.7   27.5     NA        4
    -#>  5 2            KingGabe         24.4   22     31.3   21.7     NA        5
    -#>  6 3            solarpool        25.4   25.2   26.2   27.8     NA        5
    -#>  7 4            The FANTom Me~   28.6   24     24     26.3     NA        4
    -#>  8 5            Barbarians       24.8   24.3   27.8   26.2     NA        2
    -#>  9 6            sox05syd         24.4   23.4   26.8   24.5     NA        3
    -#> 10 7            Flipadelphia05   32.6   25.4   26.2   26.1     NA        2
    -#> 11 8            Hocka Flocka     29.9   24.3   24.1   23.6     NA        3
    -#> 12 9            ZPMiller97       24.2   24.1   26     24.9     NA        3
    -#> # ... with 4 more variables: count_RB <int>, count_TE <int>, count_WR <int>,
    -#> #   count_FB <int>
    -
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used ~three functions: ff_connect, ff_league, and ff_rosters. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - diff --git a/docs/dev/articles/a2_sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/a2_sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/a2_sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/a2_sleeper_basics_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/a2_sleeper_basics_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/a2_sleeper_basics_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/espn_authentication.html b/docs/dev/articles/espn_authentication.html deleted file mode 100644 index 2ce5e365..00000000 --- a/docs/dev/articles/espn_authentication.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -ESPN: Private Leagues • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    This vignette details how to connect to ESPN private leagues by retreiving the ESPN_S2 and SWID parameters from a live login. This cannot be done programmatically at this time.

    -
    -

    -Instructions

    -
      -
    1. Visit your main league page (i.e. https://fantasy.espn.com/football/team?leagueId=899513&seasonId=2020)
    2. -
    3. Make sure you are logged in.
    4. -
    5. Open Developer Tools (on Chrome/Firefox, right-click anywhere on the page and select Inspect Element)
    6. -
    7. Go to Storage (for Firefox) or Application (for Chrome) and browse the Cookies available for fantasy.espn.com -
    8. -
    9. The values for SWID and ESPN_S2 are the parameters that are used by ffscrapr to connect to your private league. You can right-click and copy the values from here.
    10. -
    -

    The most convenient way to handle these in any project is to store them as environment variables. You can run usethis::edit_r_environ() to add these to your user environment, by adding lines that look like:

    -
    TAN_ESPN_S2="AECt%2F12312Dwd5ktQSzfuG"
    -TAN_SWID="{1E6CC139-}"
    -
    -

    The above values are both truncated (for security purposes) but ESPN_S2 is often over 250 characters long and SWID is about 38 characters long including the curly brackets.

    -

    After adding the above lines to your .Renviron and restarting R, you can access them in an espn_connect call by using Sys.getenv as per below:

    -
    conn <- espn_connect(
    -  season = 2019,
    -  league_id = 899513,
    -  espn_s2 = Sys.getenv("TAN_ESPN_S2"),
    -  swid = Sys.getenv("TAN_SWID")
    -)
    -
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/espn_authentication_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/espn_basics.html b/docs/dev/articles/espn_basics.html deleted file mode 100644 index 14f03c0d..00000000 --- a/docs/dev/articles/espn_basics.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - - - - -ESPN: Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on ESPN, pulling in roster data.

    -

    We’ll start by loading the packages:

    - -

    In ESPN, you can find the league ID by looking in the URL - it’s the number immediately after ?leagueId in this example URL: https://fantasy.espn.com/football/team?leagueId=899513&seasonId=2020

    -

    Let’s set up a connection to this league:

    -
    -sucioboys <- espn_connect(season = 2020, league_id = 899513)
    -
    -sucioboys
    -#> <ESPN connection 2020_899513>
    -#> List of 4
    -#>  $ platform : chr "ESPN"
    -#>  $ season   : chr "2020"
    -#>  $ league_id: chr "899513"
    -#>  $ cookies  : NULL
    -#>  - attr(*, "class")= chr "espn_conn"
    -

    I’ve done this with the espn_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -sucioboys_summary <- ff_league(sucioboys)
    -#> Using request.R from "ffscrapr"
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -str(sucioboys_summary)
    -#> tibble [1 x 16] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "899513"
    -#>  $ league_name    : chr "Sucio Boys"
    -#>  $ season         : int 2020
    -#>  $ league_type    : chr "keeper"
    -#>  $ franchise_count: int 10
    -#>  $ qb_type        : chr "2QB/SF"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2020"
    -#>  $ qb_count       : chr "1-2"
    -#>  $ roster_size    : int 24
    -#>  $ league_depth   : num 240
    -#>  $ keeper_count   : int 22
    -

    Okay, so it’s the Sucio Boys league, it’s a 2QB league with 12 teams, half ppr scoring, and rosters about 240 players.

    -

    Let’s grab the rosters now.

    -
    -sucioboys_rosters <- ff_rosters(sucioboys)
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -head(sucioboys_rosters) # quick snapshot of rosters
    -#> # A tibble: 6 x 10
    -#>   franchise_id franchise_name player_id player_name     team  pos   eligible_pos
    -#>          <int> <chr>              <int> <chr>           <chr> <chr> <list>      
    -#> 1            1 The Early GGod   4036348 Michael Gallup  DAL   WR    <chr [7]>   
    -#> 2            1 The Early GGod   4036131 Noah Fant       DEN   TE    <chr [6]>   
    -#> 3            1 The Early GGod    -16003 Bears D/ST      CHI   DST   <chr [3]>   
    -#> 4            1 The Early GGod     15920 Latavius Murray NOS   RB    <chr [6]>   
    -#> 5            1 The Early GGod   3055899 Harrison Butker KCC   K     <chr [3]>   
    -#> 6            1 The Early GGod   4241372 Marquise Brown  BAL   WR    <chr [7]>   
    -#> # ... with 3 more variables: status <chr>, acquisition_type <chr>,
    -#> #   acquisition_date <dttm>
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -player_values <- dp_values("values-players.csv")
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(espn_id,fantasypros_id) %>% 
    -  filter(!is.na(espn_id),!is.na(fantasypros_id))
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# We'll be joining it onto rosters, so we can trim down the values dataframe
    -# to just IDs, age, and values
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(espn_id,age,ecr_2qb,ecr_pos,value_2qb)
    -
    -# we can join the roster's player_ids on the values' espn_id, with a bit of a type conversion first
    -sucioboys_values <- sucioboys_rosters %>% 
    -  mutate(player_id = as.character(player_id)) %>% 
    -  left_join(player_values, by = c("player_id"="espn_id")) %>% 
    -  arrange(franchise_id,desc(value_2qb))
    -
    -head(sucioboys_values)
    -#> # A tibble: 6 x 14
    -#>   franchise_id franchise_name player_id player_name     team  pos   eligible_pos
    -#>          <int> <chr>          <chr>     <chr>           <chr> <chr> <list>      
    -#> 1            1 The Early GGod 4242335   Jonathan Taylor IND   RB    <chr [7]>   
    -#> 2            1 The Early GGod 4241985   J.K. Dobbins    BAL   RB    <chr [7]>   
    -#> 3            1 The Early GGod 2976316   Michael Thomas  NOS   WR    <chr [7]>   
    -#> 4            1 The Early GGod 4241479   Tua Tagovailoa  MIA   QB    <chr [5]>   
    -#> 5            1 The Early GGod 4040715   Jalen Hurts     PHI   QB    <chr [5]>   
    -#> 6            1 The Early GGod 4239993   Tee Higgins     CIN   WR    <chr [8]>   
    -#> # ... with 7 more variables: status <chr>, acquisition_type <chr>,
    -#> #   acquisition_date <dttm>, age <dbl>, ecr_2qb <dbl>, ecr_pos <dbl>,
    -#> #   value_2qb <int>
    -

    Let’s do some team summaries now!

    -
    -value_summary <- sucioboys_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_2qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value)) %>% 
    -  select(franchise_id,franchise_name,team_value,QB,RB,WR,TE)
    -
    -value_summary
    -#> # A tibble: 10 x 7
    -#>    franchise_id franchise_name                team_value    QB    RB    WR    TE
    -#>           <int> <chr>                              <int> <int> <int> <int> <int>
    -#>  1            5 "The Juggernaut"                   51211  7661 20007 17334  6209
    -#>  2            6 "OBJ's Personal Porta Potty"       47172 19545 23252  1394  2981
    -#>  3            2 "Coom  Dumpster"                   46885 16317  4032 24880  1656
    -#>  4            7 "Tony El Tigre"                    43408 14142 17399  4988  6879
    -#>  5            4 "I'm Also Sad "                    42807  2951 17737 17570  4549
    -#>  6            1 "The Early GGod"                   39982 11452 14925 10705  2900
    -#>  7            3 "PAKI STANS"                       39137 12951 11897 12607  1682
    -#>  8            9 "RAFI CUNADO"                      36116 10172 11676 13015  1253
    -#>  9           10 "Austin <U+0001F410>Drew Loc~      25240 10278   414 14444   104
    -#> 10            8 "Big Coomers"                      20671  7894  1336 11281   160
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 10 x 7
    -#>    franchise_id franchise_name                team_value    QB    RB    WR    TE
    -#>           <int> <chr>                              <dbl> <dbl> <dbl> <dbl> <dbl>
    -#>  1            5 "The Juggernaut"                   0.13  0.068 0.163 0.135 0.219
    -#>  2            6 "OBJ's Personal Porta Potty"       0.12  0.172 0.19  0.011 0.105
    -#>  3            2 "Coom  Dumpster"                   0.119 0.144 0.033 0.194 0.058
    -#>  4            7 "Tony El Tigre"                    0.111 0.125 0.142 0.039 0.242
    -#>  5            4 "I'm Also Sad "                    0.109 0.026 0.145 0.137 0.16 
    -#>  6            1 "The Early GGod"                   0.102 0.101 0.122 0.083 0.102
    -#>  7            3 "PAKI STANS"                       0.1   0.114 0.097 0.098 0.059
    -#>  8            9 "RAFI CUNADO"                      0.092 0.09  0.095 0.102 0.044
    -#>  9           10 "Austin <U+0001F410>Drew Loc~      0.064 0.091 0.003 0.113 0.004
    -#> 10            8 "Big Coomers"                      0.053 0.07  0.011 0.088 0.006
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    -
    -age_summary <- sucioboys_values %>% 
    -  filter(pos %in% c("QB","RB","WR","TE")) %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_2qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_2qb/position_value,
    -         weighted_age = round(weighted_age, 1)) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -
    -age_summary
    -#> # A tibble: 10 x 10
    -#> # Groups:   franchise_id, franchise_name [10]
    -#>    franchise_id franchise_name     age_QB age_RB age_TE age_WR count_QB count_RB
    -#>           <int> <chr>               <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    -#>  1            1 "The Early GGod"     23.7   22.3   24.7   25.8        4        6
    -#>  2            2 "Coom  Dumpster"     28.4   26.5   26.8   25.7        4        7
    -#>  3            3 "PAKI STANS"         28.3   24.9   23.6   25.7        3        6
    -#>  4            4 "I'm Also Sad "      35.8   24.6   28.4   27.1        2        5
    -#>  5            5 "The Juggernaut"     24.5   24.2   31.3   25.2        3        8
    -#>  6            6 "OBJ's Personal P~   24.5   24.4   25     24.3        3        6
    -#>  7            7 "Tony El Tigre"      24.5   24.7   27.5   26.2        3        5
    -#>  8            8 "Big Coomers"        23.8   27     28.7   27.2        3        7
    -#>  9            9 "RAFI CUNADO"        34.6   25.5   26     24.1        3        5
    -#> 10           10 "Austin <U+0001F4~   31.4   27.8   31.8   24.9        3        5
    -#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used only a few functions: ff_connect, ff_league, ff_rosters, and dp_values. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/espn_basics_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/espn_getendpoint.html b/docs/dev/articles/espn_getendpoint.html deleted file mode 100644 index f39fd01c..00000000 --- a/docs/dev/articles/espn_getendpoint.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - - - - -ESPN: Get Endpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -ESPN API - An Adventure Into Uncharted Territory

    - -

    Accessing the ESPN Fantasy API is a bit of an adventure into an undocumented abyss. This vignette will give you a bit of a rundown on how to use espn_getendpoint and the lower-level espn_getendpoint_raw, talk about the x-fantasy-filter, and detail some of the known view parameters that could be helpful.

    -
    -
    -

    -Known Endpoints

    -

    The ESPN Fantasy API is typically accessed from two endpoints:

    -
    https://fantasy.espn.com/apis/v3/games/ffl/seasons/{season}/segments/0/leagues/{league_id} # for 2018 onward
    -https://fantasy.espn.com/apis/v3/games/ffl/leagueHistory/{league_id}?seasonId={season} # for 2017 or earlier
    -

    Here’s a non-exhaustive list of view endpoints that I know of:

    -
      -
    • mTeam
    • -
    • mMatchup
    • -
    • mRoster
    • -
    • mSettings
    • -
    • mBoxscore
    • -
    • mMatchupScore
    • -
    • kona_player_info
    • -
    • player_wl
    • -
    • mSchedule
    • -
    • mScoreboard
    • -
    -

    Please note that calling various combinations of these views at once can often return different results than calling them separately.

    -

    A good way to stumble on these endpoints is to load Developer Tools in your browser, go to the Network tab, and then interact with the fantasy.espn.com site to see what API requests the main page is making.

    -

    Alternatively, you can consult the source code of other API packages (including those in other languages) which might give you a bit of a better idea of what’s possible!

    -
    -
    -

    -Using espn_getendpoint

    -

    ESPN’s API is mostly structured as making requests of different views against the main league endpoint.

    -

    For example, https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail

    -

    will pull up draft details for the 2020 league ID 899513. espn_getendpoint helps facilitate this request by allowing you to instead write:

    -
    -conn <- espn_connect(season = 2020, league_id = 899513)
    -
    -draft_details <- espn_getendpoint(conn, view = "mDraftDetail")
    -
    -draft_details
    -#> <ESPN - GET https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail>
    -#> List of 8
    -#>  $ draftDetail    :List of 4
    -#>  $ gameId         : int 1
    -#>  $ id             : int 899513
    -#>  $ scoringPeriodId: int 18
    -#>  $ seasonId       : int 2020
    -#>  $ segmentId      : int 0
    -#>  $ settings       :List of 1
    -#>  $ status         :List of 21
    -

    This will automatically pass in the league ID, season, and authentication cookies (if used) from the conn object and place it into the request.

    -

    You can also use the lower-level equivalent, espn_getendpoint_raw, which does not build the URL from the conn object but still uses the conn object to pass along any authentication cookies:

    -
    -draft_details_raw <- espn_getendpoint_raw(
    -  conn,
    -  "https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail")
    -
    -draft_details_raw
    -#> <ESPN - GET https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=mDraftDetail>
    -#> List of 8
    -#>  $ draftDetail    :List of 4
    -#>  $ gameId         : int 1
    -#>  $ id             : int 899513
    -#>  $ scoringPeriodId: int 18
    -#>  $ seasonId       : int 2020
    -#>  $ segmentId      : int 0
    -#>  $ settings       :List of 1
    -#>  $ status         :List of 21
    -

    These are equivalent requests. One reason to use the “raw” version is to be able to pass multiple view parameters such as view=mDraftDetail&view=mSettings as the query, which is not possible with the main endpoint function because it only accepts one option for the view http query.

    -
    -
    -

    -X-Fantasy-Filter

    -

    Many of the endpoints are also affected by a JSON header, X-Fantasy-Filter, which can filter/sort/limit (or remove limits) from the API response. Here is an example of how to build up a valid JSON x-fantasy-filter, sourced from the code for ff_playerscores:

    -
    -
    -xff <- list(players = list(
    -  limit = 5,
    -  sortPercOwned = 
    -    list(sortAsc = FALSE,
    -         sortPriority = 1),
    -  filterStatsForTopScoringPeriodIDs = 
    -    list(value = 2,
    -         additionalValue = c(paste0("00", conn$season)))
    -  )) %>%
    -  jsonlite::toJSON(auto_unbox = TRUE)
    -
    -xff
    -#> {"players":{"limit":5,"sortPercOwned":{"sortAsc":false,"sortPriority":1},"filterStatsForTopScoringPeriodIDs":{"value":2,"additionalValue":"002020"}}}
    -

    This JSON limits the total responses to 5, filters the “statIDs” returned to just the ones prefixed by “00”, and sorts the whole thing by percent owned, descending.

    -

    I’m not exactly clear on what all of the options for x-fantasy-filter are, but you can use it to emulate what’s happening in the request on fantasy.espn.com.

    -

    Both the espn_getendpoint and espn_getendpoint_raw functions can accept x-fantasy-filters. espn_getendpoint has an x_fantasy_filterargument that takes the JSON object created above, while espn_getendpoint_raw requires that the object is converted into an HTTP header first.

    -

    Examples here:

    -
    -player_scores <- espn_getendpoint(conn, view = "kona_player_info", x_fantasy_filter = xff)
    -
    -player_scores_2 <- espn_getendpoint_raw(
    -  conn,
    -  "https://fantasy.espn.com/apis/v3/games/ffl/seasons/2020/segments/0/leagues/899513?view=kona_player_info",
    -  httr::add_headers(`X-Fantasy-Filter` = xff))
    -
    -
    -

    -Other ESPN API resources

    -

    Kiernan Nichols’s fflr R package is an R package available on CRAN that is built specifically for ESPN API access. As of this writing (2021-03-03) it only supports public leagues, and has a few style differences as a light-weight/lower-dependency package.

    -

    Many of the API endpoints are being researched in other languages and you might be able to draw inspiration on what’s possible by checking them out:

    -
      -
    • Christian Wendt’s espn-api Python package was incredibly helpful in discovering the known and documented API endpoints.

    • -
    • Mike Kreiser’s ESPN-Fantasy-Football-API is a well-documented JS client.

    • -
    • Steven Morse also has several great blog posts on using the API, mostly accessed via Python.

    • -
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/espn_getendpoint_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/ffscrapr_caching.html b/docs/dev/articles/ffscrapr_caching.html deleted file mode 100644 index 65d8f494..00000000 --- a/docs/dev/articles/ffscrapr_caching.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -ffscrapr: Managing Cache • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Caching: It’s Responsible Web Etiquette!

    -

    One of the many packages that inspired ffscrapr is Dmytro Perepolkin’s polite package, which sets out some pillars of responsible web etiquette, including introducing yourself, taking slowly, and never asking twice for the same thing.

    -

    ffscrapr gives you convenient routes to support these:

    -
      -
    • You can set a user_agent string with any connection to help identify yourself to the API platform (MFL actually gives you a higher rate limit if you register with them as an API Client!)

    • -
    • You can set rate_limit options to help manage the load on the API (and to comply with any restrictions that APIs have set out)

    • -
    • Behind the scenes, ffscrapr is saving the results of expensive (i.e. slow, data-heavy) and stable (i.e. not likely to change rapidly) queries so that a) it can return things faster to you and b) minimize server load.

    • -
    -

    This vignette explains and helps you manage this caching.

    -
    -
    -

    -What is being cached? How long is it being cached for?

    -

    ffscrapr’s core functions often loop over the same, stable endpoints to help return the data for each function - things like “player names/positions/teams”, “franchise IDs/names”, and “league scoring rules” are all used frequently. ffscrapr incorporates memoise package to help with this functionality, and (as of this writing) saves the results of these functions:

    - -

    You can find an updated list of cached functions in the zzz.R source code page.

    -
    -
    -

    -Where is it being cached?

    -

    By default, ffscrapr will save the results of each function call (i.e. function + arguments) into memory.

    -

    If you would like to have your cache stored on your local filesystem, you can adjust this behaviour by adding the following line to your (or your project) .Rprofile, or by adding it BEFORE you library/load the package.

    -
    -options(ffscrapr.cache = "filesystem")
    -

    This will instruct ffscrapr to store the cache on your machine, as dictated by the typical cache location for your operating system. You can see where this is by running the following line of code:

    -
    -rappdirs::user_cache_dir("ffscrapr")
    -
    -
    -

    -How can I clear the cache?

    -

    You can use the following function to clear the cache (whether it is in memory or on your filesystem):

    -
    -.ffscrapr_clear_cache()
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/ffscrapr_caching_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/ffscrapr_caching_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/ffscrapr_caching_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/ffscrapr_caching_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/ffscrapr_scoringhistory.html b/docs/dev/articles/ffscrapr_scoringhistory.html deleted file mode 100644 index 0e8d05f3..00000000 --- a/docs/dev/articles/ffscrapr_scoringhistory.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - -ffscrapr: ff_scoringhistory Limitations • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Limitations of ff_scoringhistory

    -

    For all sites:

    -
      -
    • Official NFL lateral scoring may be different than MFL scoring
    • -
    • Special team TDs are not broken down into punt returns, kick returns, and FG returns in nflfastR load_player_stats so the kick return scoring was applied to all special team TDs
    • -
    • No support for IDPs, team defenses, kickers, coaches, fumbles, return yards, offensive fumble recoveries
    • -
    • Support for eccentric rules (bonuses for long plays, conditional rules) will be added on a request basis
    • -
    -

    For Fleaflicker: - Does Fleaflicker allow for ranged scoring rules like MFL? (assume no)

    -

    For Sleeper: - Does Sleeper allow for ranged scoring rules like MFL? (assume no) - Does Sleeper allow for positional scoring rules? (assume no)

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/ffscrapr_scoringhistory_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/fleaflicker_basics.html b/docs/dev/articles/fleaflicker_basics.html deleted file mode 100644 index d8596446..00000000 --- a/docs/dev/articles/fleaflicker_basics.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - - - -Fleaflicker: Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on Fleaflicker.

    -

    We’ll start by loading the packages:

    - -

    In Fleaflicker, you can find the league ID by looking in the URL - it’s the number immediately after /league/ in this example URL: https://www.fleaflicker.com/nfl/leagues/312861.

    -

    Let’s set up a connection to this league:

    -
    -aaa <- fleaflicker_connect(season = 2020, league_id = 312861)
    -
    -aaa
    -#> <Fleaflicker connection 2020_312861>
    -#> List of 4
    -#>  $ platform  : chr "Fleaflicker"
    -#>  $ season    : chr "2020"
    -#>  $ user_email: NULL
    -#>  $ league_id : chr "312861"
    -#>  - attr(*, "class")= chr "flea_conn"
    -

    I’ve done this with the fleaflicker_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -
    -aaa_summary <- ff_league(aaa)
    -#> Using request.R from "ffscrapr"
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -str(aaa_summary)
    -#> tibble [1 x 15] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "312861"
    -#>  $ league_name    : chr "Avid Auctioneers Alliance"
    -#>  $ season         : int 2020
    -#>  $ league_type    : chr "dynasty"
    -#>  $ franchise_count: num 12
    -#>  $ qb_type        : chr "2QB/SF"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, PP1D"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ qb_count       : chr "1-2"
    -#>  $ roster_size    : int 28
    -#>  $ league_depth   : num 336
    -#>  $ keeper_count   : int 28
    -

    Okay, so it’s the Avid Auctioneers Alliance, it’s a 2QB league with 12 teams, half ppr scoring, and rosters about 340 players.

    -

    Let’s grab the rosters now.

    -
    -aaa_rosters <- ff_rosters(aaa)
    -
    -head(aaa_rosters)
    -#> # A tibble: 6 x 7
    -#>   franchise_id franchise_name player_id player_name  pos   team  sportradar_id  
    -#>          <int> <chr>              <int> <chr>        <chr> <chr> <chr>          
    -#> 1      1578553 Running Bear       12032 Carson Wentz QB    PHI   e9a5c16b-4472-~
    -#> 2      1578553 Running Bear        7378 Cam Newton   QB    NE    214e55e4-a089-~
    -#> 3      1578553 Running Bear       15622 Joshua Kell~ RB    LAC   62542e04-3c44-~
    -#> 4      1578553 Running Bear       13358 Matt Breida  RB    MIA   6249d2c0-75dc-~
    -#> 5      1578553 Running Bear        7369 A.J. Green   WR    CIN   c9701373-23f6-~
    -#> 6      1578553 Running Bear       13782 Anthony Mil~ WR    CHI   bfaedf99-7618-~
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -player_values <- dp_values("values-players.csv")
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(sportradar_id,fantasypros_id) %>% 
    -  filter(!is.na(sportradar_id),!is.na(fantasypros_id))
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# We'll be joining it onto rosters, so we can trim down the values dataframe
    -# to just IDs, age, and values
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(sportradar_id,age,ecr_2qb,ecr_pos,value_2qb)
    -
    -# ff_rosters() will return the sportradar_id, which we can then match to our player values!
    -
    -aaa_values <- aaa_rosters %>% 
    -  left_join(player_values, by = c("sportradar_id"="sportradar_id")) %>% 
    -  arrange(franchise_id,desc(value_2qb))
    -
    -head(aaa_values)
    -#> # A tibble: 6 x 11
    -#>   franchise_id franchise_name player_id player_name  pos   team  sportradar_id  
    -#>          <int> <chr>              <int> <chr>        <chr> <chr> <chr>          
    -#> 1      1578553 Running Bear       12159 Dak Prescott QB    DAL   86197778-8d4b-~
    -#> 2      1578553 Running Bear       12926 Chris Godwin WR    TB    baa61bb5-f8d0-~
    -#> 3      1578553 Running Bear       12032 Carson Wentz QB    PHI   e9a5c16b-4472-~
    -#> 4      1578553 Running Bear       13325 Austin Ekel~ RB    LAC   e5b8c439-a48a-~
    -#> 5      1578553 Running Bear       15531 Brandon Aiy~ WR    SF    c90471cc-fa60-~
    -#> 6      1578553 Running Bear        9338 Robert Woods WR    LAR   618bedee-9259-~
    -#> # ... with 4 more variables: age <dbl>, ecr_2qb <dbl>, ecr_pos <dbl>,
    -#> #   value_2qb <int>
    -

    Let’s do some team summaries now!

    -
    -value_summary <- aaa_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_2qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value)) %>% 
    -  select(franchise_id,franchise_name,team_value,QB,RB,WR,TE)
    -
    -value_summary
    -#> # A tibble: 12 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    WR    TE
    -#>           <int> <chr>                    <int> <int> <int> <int> <int>
    -#>  1      1581803 ZachFarni's Team         45658 10299 19968 15334    57
    -#>  2      1581722 syd12nyjets's Team       39773 14666  4596 19094  1417
    -#>  3      1581719 Jmuthers's Team          36800  8073 10710 10055  7962
    -#>  4      1581721 Mjenkyns2004's Team      35061 19338  3680 11598   445
    -#>  5      1582416 Ray Jay Team             34369  6201 11128  9012  8028
    -#>  6      1581753 fede_mndz's Team         34022  3071 16590 13803   558
    -#>  7      1581988 The DK Crew              34020  9167  6627 15292  2834
    -#>  8      1582423 The Verblanders          33492 10661 11273 11186   372
    -#>  9      1581720 brosene's Team           33432 12479 12380  6184  2389
    -#> 10      1581718 AlexG5386's Team         32997  8185 15644  4575  4593
    -#> 11      1581726 SCJaguars's Team         27219  3397 15703  8041    78
    -#> 12      1578553 Running Bear             23630 10533  3585  8257  1255
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 12 x 7
    -#>    franchise_id franchise_name      team_value    QB    RB    WR    TE
    -#>           <int> <chr>                    <dbl> <dbl> <dbl> <dbl> <dbl>
    -#>  1      1581803 ZachFarni's Team         0.111 0.089 0.151 0.116 0.002
    -#>  2      1581722 syd12nyjets's Team       0.097 0.126 0.035 0.144 0.047
    -#>  3      1581719 Jmuthers's Team          0.09  0.07  0.081 0.076 0.266
    -#>  4      1581721 Mjenkyns2004's Team      0.085 0.167 0.028 0.088 0.015
    -#>  5      1582416 Ray Jay Team             0.084 0.053 0.084 0.068 0.268
    -#>  6      1581753 fede_mndz's Team         0.083 0.026 0.126 0.104 0.019
    -#>  7      1581988 The DK Crew              0.083 0.079 0.05  0.115 0.095
    -#>  8      1582423 The Verblanders          0.082 0.092 0.085 0.084 0.012
    -#>  9      1581720 brosene's Team           0.081 0.108 0.094 0.047 0.08 
    -#> 10      1581718 AlexG5386's Team         0.08  0.071 0.119 0.035 0.153
    -#> 11      1581726 SCJaguars's Team         0.066 0.029 0.119 0.061 0.003
    -#> 12      1578553 Running Bear             0.058 0.091 0.027 0.062 0.042
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    -
    -age_summary <- aaa_values %>% 
    -  filter(pos %in% c("QB","RB","WR","TE")) %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_2qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_2qb/position_value,
    -         weighted_age = round(weighted_age, 1)) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -
    -age_summary
    -#> # A tibble: 12 x 10
    -#> # Groups:   franchise_id, franchise_name [12]
    -#>    franchise_id franchise_name     age_QB age_RB age_TE age_WR count_QB count_RB
    -#>           <int> <chr>               <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    -#>  1      1578553 Running Bear         27.7   25.8   26.2   25.4        6        6
    -#>  2      1581718 AlexG5386's Team     30.7   24.9   28.4   26.4        3       12
    -#>  3      1581719 Jmuthers's Team      24.9   24.4   26.6   28.8        5        8
    -#>  4      1581720 brosene's Team       29.7   25.6   24.7   26.4        6       10
    -#>  5      1581721 Mjenkyns2004's Te~   25.8   24     26.8   26.6        5        9
    -#>  6      1581722 syd12nyjets's Team   24.8   22.4   24.4   22.2        5        7
    -#>  7      1581726 SCJaguars's Team     23.8   24.9   33     24.3        5        7
    -#>  8      1581753 fede_mndz's Team     35.7   24.7   24.5   27.9        6       12
    -#>  9      1581803 ZachFarni's Team     28.2   21.9   25.8   24.2        5        9
    -#> 10      1581988 The DK Crew          27     22.6   24.9   25          4        6
    -#> 11      1582416 Ray Jay Team         29.6   26.4   30.2   27          4        8
    -#> 12      1582423 The Verblanders      24.3   25.3   26.1   27.3        4        8
    -#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used only a few functions: ff_connect, ff_league, ff_rosters, and dp_values. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/fleaflicker_basics_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/fleaflicker_getendpoint.html b/docs/dev/articles/fleaflicker_getendpoint.html deleted file mode 100644 index e9528143..00000000 --- a/docs/dev/articles/fleaflicker_getendpoint.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - -Fleaflicker: Get Endpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Creating custom Fleaflicker API calls

    - -

    The Fleaflicker API is fairly extensive. If there is something you’d like to access that’s beyond the current scope of ffscrapr, you can use the lower-level “fleaflicker_getendpoint” function to create a GET request and access the data, while still using the authentication and rate-limiting features I’ve already created.

    -

    Here is an example of how you can call one of the endpoints - in this case, let’s zoom in on the Fetch League Scoreboard endpoint, which is used inside a few different ffscrapr functions and summarised in a few ways.

    -

    We’ll start by opening up this page, https://www.fleaflicker.com/api-docs/index.html#operation--FetchLeagueScoreboard-get, which is the documentation page for this particular endpoint.

    -

    From here, we can see that Fleaflicker’s documentation says the endpoint and parameters are:

    -
    GET /FetchLeagueScoreboard
    -
    -Parameters:
    -
    -- sport: string NFL, MLB, NBA, NHL NFL
    -(in query)
    -
    -- league_id: integer (int32)
    -(in query)
    -
    -- season: integer (int32)
    -(in query)
    -
    -- scoring_period: integer (int32)
    -(in query)
    -

    The fleaflicker_getendpoint function already has the base url encoded, so all we’ll need to do is pass in the endpoint without the /, and pass the HTTP parameters in as arguments to the function (these are case sensitive!)

    -
    -sport <- "NFL"
    -league_id <- 206154
    -season <- 2020
    -week <- 5
    -
    -response_scoreboard <- fleaflicker_getendpoint("FetchLeagueScoreboard",
    -                                               sport = sport, 
    -                                               league_id = league_id, 
    -                                               season = season, 
    -                                               scoring_period = week)
    -#> Using request.R from "ffscrapr"
    -
    -str(response_scoreboard, max.level = 1)
    -#> List of 3
    -#>  $ content :List of 3
    -#>  $ query   : chr "https://www.fleaflicker.com/api/FetchLeagueScoreboard?sport=NFL&league_id=206154&season=2020&scoring_period=5"
    -#>  $ response:List of 9
    -#>   ..- attr(*, "class")= chr "response"
    -#>  - attr(*, "class")= chr "fleaflicker_api"
    -

    Along with the parsed content, the function also returns the query and the response that was sent by the server. These are helpful for debugging, but we can turn the content into a dataframe with some careful application of the tidyverse.

    -
    -df_scoreboard <- response_scoreboard %>% 
    -  purrr::pluck("content","games") %>% 
    -  tibble::tibble() %>% 
    -  tidyr::unnest_wider(1) %>% 
    -  dplyr::mutate_at(c("away","home"),purrr::map_chr,purrr::pluck,"franchise_name"="name") %>% 
    -  dplyr::mutate_at(c("homeScore","awayScore"),purrr::map_dbl,purrr::pluck,"score","value")
    -
    -head(df_scoreboard)
    -#> # A tibble: 6 x 8
    -#>   id     away     home    awayScore homeScore homeResult awayResult isFinalScore
    -#>   <chr>  <chr>    <chr>       <dbl>     <dbl> <chr>      <chr>      <lgl>       
    -#> 1 46301~ Winterf~ Top Ci~      207.      162. LOSE       WIN        TRUE        
    -#> 2 46301~ Goldenr~ Winter~      145.      157. WIN        LOSE       TRUE        
    -#> 3 46301~ Wintert~ Clutch~      153.      192. WIN        LOSE       TRUE        
    -#> 4 46301~ Manitob~ Bamend~      182.      183. WIN        LOSE       TRUE        
    -#> 5 46301~ Springf~ Shangh~      176.      129. LOSE       WIN        TRUE        
    -#> 6 46301~ Boomtow~ Philad~      199.      200. WIN        LOSE       TRUE
    -

    From here, we’ll be able to feed these IDs into the FetchLeagueBoxscore endpoint https://www.fleaflicker.com/api-docs/index.html#operation--FetchLeagueScoreboard-get as the fantasy_game_id - and from here you’ll be able to get to player-level points and actual stat data for each fantasy game!

    -
    -# same variables as previous endpoint call!
    -onegame_lineups <- fleaflicker_getendpoint(
    -  "FetchLeagueBoxscore",
    -  sport = sport, 
    -  league_id = league_id, 
    -  # example for one call, but you can call this in a map or loop! 
    -  fantasy_game_id = df_scoreboard$id[[1]], 
    -  scoring_period = week) %>% 
    -  purrr::pluck('content','lineups') %>% 
    -  tibble::tibble() %>% 
    -  tidyr::unnest_wider(1) %>% 
    -  tidyr::unnest_longer('slots') %>% 
    -  tidyr::unnest_wider('slots') %>% 
    -  tidyr::pivot_longer(c("home","away"),names_to = "franchise",values_to = "player") %>% 
    -  tidyr::unnest_wider('player')
    -
    -str(onegame_lineups,max.level = 2)
    -#> tibble [98 x 16] (S3: tbl_df/tbl/data.frame)
    -#>  $ group               : chr [1:98] "START" "START" "START" "START" ...
    -#>  $ position            :List of 98
    -#>  $ positionColor       :List of 98
    -#>  $ franchise           : chr [1:98] "home" "away" "home" "away" ...
    -#>  $ proPlayer           :List of 98
    -#>  $ requestedGames      :List of 98
    -#>  $ viewingActualPoints :List of 98
    -#>  $ viewingActualStats  :List of 98
    -#>  $ requestedGamesPeriod:List of 98
    -#>  $ viewingFormat       : chr [1:98] "TOTAL" "TOTAL" "TOTAL" "TOTAL" ...
    -#>  $ viewingRange        :List of 98
    -#>  $ owner               :List of 98
    -#>  $ displayGroup        : chr [1:98] "PASSER" "PASSER" "RUSHER" "RUSHER" ...
    -#>  $ rankFantasy         :List of 98
    -#>  $ rankDraft           :List of 98
    -#>  $ lastX               :List of 98
    -

    From here, you can keep unravelling - including the “viewingActualPoints” and “viewingActualStats” columns!

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/fleaflicker_getendpoint_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/index.html b/docs/dev/articles/index.html deleted file mode 100644 index 7a1931e4..00000000 --- a/docs/dev/articles/index.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - -Articles • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Getting Started

    -

    - -
    -
    MFL: Basics
    -
    -
    Sleeper: Basics
    -
    -
    Fleaflicker: Basics
    -
    -
    ESPN: Basics
    -
    -
    ESPN: Private Leagues
    -
    -
    -
    - -
    -

    Performance

    -

    - -
    -
    ffscrapr: Managing Cache
    -
    -
    -
    - -
    -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/articles/mfl_basics.html b/docs/dev/articles/mfl_basics.html deleted file mode 100644 index 6ae2dc5b..00000000 --- a/docs/dev/articles/mfl_basics.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - -MFL: Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on MFL.

    -

    We’ll start by loading the packages:

    -
    -  library(ffscrapr)
    -  library(dplyr)
    -#> 
    -#> Attaching package: 'dplyr'
    -#> The following objects are masked from 'package:stats':
    -#> 
    -#>     filter, lag
    -#> The following objects are masked from 'package:base':
    -#> 
    -#>     intersect, setdiff, setequal, union
    -  library(tidyr)
    -

    Set up the connection to the league:

    -
    -ssb <- mfl_connect(season = 2020, 
    -                   league_id = 54040, # from the URL of your league
    -                   rate_limit_number = 3, 
    -                   rate_limit_seconds = 6)
    -ssb
    -#> <MFL connection 2020_54040>
    -#> List of 5
    -#>  $ platform   : chr "MFL"
    -#>  $ season     : num 2020
    -#>  $ league_id  : chr "54040"
    -#>  $ APIKEY     : NULL
    -#>  $ auth_cookie: NULL
    -#>  - attr(*, "class")= chr "mfl_conn"
    -

    I’ve done this with the mfl_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -ssb_summary <- ff_league(ssb)
    -#> Using request.R from "ffscrapr"
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -str(ssb_summary)
    -#> tibble [1 x 14] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "54040"
    -#>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    -#>  $ season         : int 2020
    -#>  $ franchise_count: num 14
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2021"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 33
    -#>  $ league_depth   : num 462
    -

    Okay, so it’s the Smash Bros Dynasty League, it’s a 1QB league with 14 teams, best ball scoring, half ppr and point-per-first-down settings.

    -

    Let’s grab the rosters now.

    -
    -ssb_rosters <- ff_rosters(ssb)
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -head(ssb_rosters)
    -#> # A tibble: 6 x 11
    -#>   franchise_id franchise_name player_id player_name            pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>                  <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   13189     Engram, Evan           TE    NYG    26.8
    -#> 2 0001         Team Pikachu   11680     Landry, Jarvis         WR    CLE    28.5
    -#> 3 0001         Team Pikachu   13645     Smith, Tre'Quan        WR    NOS    25.4
    -#> 4 0001         Team Pikachu   12110     Brate, Cameron         TE    TBB    29.9
    -#> 5 0001         Team Pikachu   13168     Reynolds, Josh         WR    LAR    26.3
    -#> 6 0001         Team Pikachu   13793     Valdes-Scantling, Mar~ WR    GBP    26.7
    -#> # ... with 4 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -player_values <- dp_values("values-players.csv")
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(mfl_id,fantasypros_id)
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(mfl_id,ecr_1qb,ecr_pos,value_1qb)
    -
    -# Drilling down to just 1QB values and IDs, we'll be joining it onto rosters and don't need the extra stuff
    -
    -ssb_values <- ssb_rosters %>% 
    -  left_join(player_values, by = c("player_id"="mfl_id")) %>% 
    -  arrange(franchise_id,desc(value_1qb))
    -
    -head(ssb_values)
    -#> # A tibble: 6 x 14
    -#>   franchise_id franchise_name player_id player_name            pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>                  <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   14803     Edwards-Helaire, Clyde RB    KCC    22.2
    -#> 2 0001         Team Pikachu   14835     Higgins, Tee           WR    CIN    22.4
    -#> 3 0001         Team Pikachu   14779     Herbert, Justin        QB    LAC    23.2
    -#> 4 0001         Team Pikachu   14777     Burrow, Joe            QB    CIN    24.5
    -#> 5 0001         Team Pikachu   14838     Shenault, Laviska      WR    JAC    22.7
    -#> 6 0001         Team Pikachu   11680     Landry, Jarvis         WR    CLE    28.5
    -#> # ... with 7 more variables: roster_status <chr>, drafted <chr>,
    -#> #   draft_year <chr>, draft_round <chr>, ecr_1qb <dbl>, ecr_pos <dbl>,
    -#> #   value_1qb <int>
    -

    Let’s do some team summaries now!

    -
    -value_summary <- ssb_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_1qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value))
    -
    -value_summary
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name     team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                   <int> <int> <int> <int> <int>
    -#>  1 0010         Team Yoshi              43137  4230 16375  8288 14244
    -#>  2 0009         Team Link               39922  3344 11766  6445 18367
    -#>  3 0004         Team Ice Climbers       38018   132 19446  3414 15026
    -#>  4 0006         Team King Dedede        36417  6066  3894  1436 25021
    -#>  5 0003         Team Donkey Kong        34697  1843  7569  7425 17860
    -#>  6 0007         Team Kirby              30252  3843 16002   474  9933
    -#>  7 0005         Team Dr. Mario          28969    36  7290  3304 18339
    -#>  8 0011         Team Diddy Kong         28452   818 13559  2514 11561
    -#>  9 0002         Team Simon Belmont      27776    12 12296    14 15454
    -#> 10 0012         Team Mewtwo             25089   468 18246  1338  5037
    -#> 11 0013         Team Ness               21949  1108 16966  1958  1917
    -#> 12 0014         Team Luigi              21267  1967  4430  1013 13857
    -#> 13 0001         Team Pikachu            17637  3450  6079   884  7224
    -#> 14 0008         Team Bowser             14357  4739  5226    39  4353
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 14 x 7
    -#>    franchise_id franchise_name     team_value    QB    RB    TE    WR
    -#>    <chr>        <chr>                   <dbl> <dbl> <dbl> <dbl> <dbl>
    -#>  1 0010         Team Yoshi              0.106 0.132 0.103 0.215 0.08 
    -#>  2 0009         Team Link               0.098 0.104 0.074 0.167 0.103
    -#>  3 0004         Team Ice Climbers       0.093 0.004 0.122 0.089 0.084
    -#>  4 0006         Team King Dedede        0.089 0.189 0.024 0.037 0.14 
    -#>  5 0003         Team Donkey Kong        0.085 0.057 0.048 0.193 0.1  
    -#>  6 0007         Team Kirby              0.074 0.12  0.101 0.012 0.056
    -#>  7 0005         Team Dr. Mario          0.071 0.001 0.046 0.086 0.103
    -#>  8 0011         Team Diddy Kong         0.07  0.026 0.085 0.065 0.065
    -#>  9 0002         Team Simon Belmont      0.068 0     0.077 0     0.087
    -#> 10 0012         Team Mewtwo             0.062 0.015 0.115 0.035 0.028
    -#> 11 0013         Team Ness               0.054 0.035 0.107 0.051 0.011
    -#> 12 0014         Team Luigi              0.052 0.061 0.028 0.026 0.078
    -#> 13 0001         Team Pikachu            0.043 0.108 0.038 0.023 0.041
    -#> 14 0008         Team Bowser             0.035 0.148 0.033 0.001 0.024
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team!

    -
    -age_summary <- ssb_values %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_1qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_1qb/position_value) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -
    -age_summary
    -#> # A tibble: 14 x 10
    -#> # Groups:   franchise_id, franchise_name [14]
    -#>    franchise_id franchise_name     age_QB age_RB age_TE age_WR count_QB count_RB
    -#>    <chr>        <chr>               <dbl>  <dbl>  <dbl>  <dbl>    <int>    <int>
    -#>  1 0001         Team Pikachu         23.8   22.9   26.4   23.5        4        8
    -#>  2 0002         Team Simon Belmont   23.1   25.2   24.9   24.4        8       11
    -#>  3 0003         Team Donkey Kong     25.3   23.6   31.6   26.9        5        8
    -#>  4 0004         Team Ice Climbers    29.5   25.5   26.6   27.4        5        9
    -#>  5 0005         Team Dr. Mario       32.3   23.2   24.9   24.7        2        7
    -#>  6 0006         Team King Dedede     25.8   26.1   26.5   25.0        3       10
    -#>  7 0007         Team Kirby           24.1   25.1   29.1   28.4        4        9
    -#>  8 0008         Team Bowser          26.2   26.9   33.7   28.3        4       11
    -#>  9 0009         Team Link            26.3   26.3   28.3   28.3        3       11
    -#> 10 0010         Team Yoshi           28.3   22.3   27.8   25.9        2        6
    -#> 11 0011         Team Diddy Kong      31.9   26.7   24.2   23.8        4       12
    -#> 12 0012         Team Mewtwo          31.7   24.3   24.8   24.1        5        7
    -#> 13 0013         Team Ness            32.4   23.6   23.6   26.2        5        9
    -#> 14 0014         Team Luigi           32.6   25.0   23.5   27.0        3       10
    -#> # ... with 2 more variables: count_TE <int>, count_WR <int>
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used three functions: ff_connect, ff_league, and ff_rosters. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/mfl_basics_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/mfl_basics_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/mfl_basics_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/mfl_basics_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/mfl_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/mfl_basics_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/mfl_basics_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/mfl_getendpoint.html b/docs/dev/articles/mfl_getendpoint.html deleted file mode 100644 index 4d47b345..00000000 --- a/docs/dev/articles/mfl_getendpoint.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - -MFL: Get Endpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Creating custom MFL API calls

    - -

    The MFL API is extensive. If there is something you’d like to access beyond the current scope of ffscrapr, you can use the lower-level “mfl_getendpoint” function to create a GET request and access the data, while still using the authentication and rate-limiting features I’ve already created.

    -

    Here is an example of how you can call one of the endpoints - in this case, let’s try searching for SFBX leagues through the leagueSearch endpoint.

    -

    We’ll start by opening up this page, https://api.myfantasyleague.com/2020/api_info?STATE=test&CCAT=export&TYPE=leagueSearch, which is the “test” page for this particular endpoint. From here, we can see that the only parameter required is “SEARCH”.

    -

    We need a connection object to pass into the mfl_getendpoint function, although in this example we don’t need to give it much since the endpoint doesn’t need a leagueID or username/password or APIKEY.

    -
    -conn <- mfl_connect(season = 2020)
    -
    -conn
    -#> <MFL connection 2020_>
    -#> List of 5
    -#>  $ platform   : chr "MFL"
    -#>  $ season     : num 2020
    -#>  $ league_id  : chr(0) 
    -#>  $ APIKEY     : NULL
    -#>  $ auth_cookie: NULL
    -#>  - attr(*, "class")= chr "mfl_conn"
    -

    The parameters of the mfl_getendpoint function are conn, endpoint, and any other optional parameters required by the API.

    -

    The function will automatically insert the league_id, API key, and/or authentication cookies from the connection object, and will request JSON for you - so you do not need to add any of these parameters.

    -

    It is safest to assume that everything is case-sensitive: the endpoint must match the case displayed by MFL (“leagueSearch”) and the SEARCH argument name must be provided in upper-case.

    -
    -sfb_search <- mfl_getendpoint(conn,endpoint = "leagueSearch", SEARCH = "sfbx conference")
    -#> Using request.R from "ffscrapr"
    -
    -str(sfb_search, max.level = 1)
    -#> List of 3
    -#>  $ content :List of 3
    -#>  $ query   : chr "https://api.myfantasyleague.com/2020/export?TYPE=leagueSearch&SEARCH=sfbx%20conference&JSON=1"
    -#>  $ response:List of 9
    -#>   ..- attr(*, "class")= chr "response"
    -#>  - attr(*, "class")= chr "mfl_api"
    -

    The function returns a list with the query that was sent, the response that was received, and the content that was parsed - this helps you debug the result of the function later, by inspecting the query that was sent and the response that was received.

    -

    I like to extract the content with purrr::pluck and then convert it into a tibble and unnest the content from there, but you can use base R subsetting or magrittr::extract2 for the same purpose.

    -
    -search_results <- sfb_search %>% 
    -  purrr::pluck("content","leagues","league") %>% 
    -  tibble::tibble() %>% 
    -  tidyr::unnest_wider(1)
    -
    -head(search_results)
    -#> # A tibble: 6 x 3
    -#>   homeURL                                          name                id   
    -#>   <chr>                                            <chr>               <chr>
    -#> 1 http://www73.myfantasyleague.com/2020/home/13411 #SFBX Conference 12 13411
    -#> 2 http://www73.myfantasyleague.com/2020/home/16428 #SFBX Conference 6  16428
    -#> 3 http://www73.myfantasyleague.com/2020/home/17910 #SFBX Conference 11 17910
    -#> 4 http://www73.myfantasyleague.com/2020/home/26453 #SFBX Conference 8  26453
    -#> 5 http://www73.myfantasyleague.com/2020/home/27495 #SFBX Conference 2  27495
    -#> 6 http://www73.myfantasyleague.com/2020/home/31492 #SFBX Conference 14 31492
    -
    -
    -

    -Another Example: Trade Bait

    -

    Here’s another example, this time with the trade bait endpoint: https://api.myfantasyleague.com/2020/api_info?STATE=test&CCAT=export&TYPE=tradeBait

    -
    -fog <- mfl_connect(season = 2019, league_id = 12608)
    -
    -fog_tradebait <- mfl_getendpoint(fog, "tradeBait", INCLUDE_DRAFT_PICKS = 1) %>% 
    -  purrr::pluck("content","tradeBaits","tradeBait") %>% 
    -  tibble::tibble() %>% 
    -  tidyr::unnest_wider(1) %>% 
    -  tidyr::separate_rows("willGiveUp",sep = ",") %>% 
    -  dplyr::mutate(timestamp = lubridate::as_datetime(as.numeric(timestamp))) %>% 
    -  dplyr::left_join(
    -    ff_franchises(fog) %>% dplyr::select("franchise_id","franchise_name"),
    -    by = c("franchise_id")
    -  ) %>% 
    -  dplyr::left_join(
    -    mfl_players(fog) %>% dplyr::select("player_id","player_name","pos","age","team"),
    -    by = c("willGiveUp" = "player_id")
    -  )
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -head(fog_tradebait)
    -#> # A tibble: 6 x 9
    -#>   timestamp           franchise_id willGiveUp inExchangeFor       franchise_name
    -#>   <dttm>              <chr>        <chr>      <chr>               <chr>         
    -#> 1 2019-11-23 14:49:15 0001         7394       "anyone need a QB?" @JohnBoschFF  
    -#> 2 2019-11-23 14:49:15 0001         13128      "anyone need a QB?" @JohnBoschFF  
    -#> 3 2020-02-01 05:43:29 0003         13319      ""                  The Accountant
    -#> 4 2020-02-01 05:43:29 0003         13139      ""                  The Accountant
    -#> 5 2020-02-01 05:43:29 0003         11675      ""                  The Accountant
    -#> 6 2020-02-01 15:49:25 0004         12171      ""                  Kevin Cutillo 
    -#> # ... with 4 more variables: player_name <chr>, pos <chr>, age <dbl>,
    -#> #   team <chr>
    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/mfl_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/mfl_getendpoint_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/sleeper_basics.html b/docs/dev/articles/sleeper_basics.html deleted file mode 100644 index ece2f1d5..00000000 --- a/docs/dev/articles/sleeper_basics.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - - - - -Sleeper: Basics • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -

    In this vignette, I’ll walk through how to get started with a basic dynasty value analysis on Sleeper.

    -

    We’ll start by loading the packages:

    - -

    In Sleeper, unlike in other platforms, it’s very unlikely that you’ll remember the league ID - both because most people use the mobile app, and because it happens to be an 18 digit number! It’s a little more natural to start analyses from the username, so let’s start there!

    -
    -solarpool_leagues <- sleeper_userleagues("solarpool",2020)
    -#> Using request.R from "ffscrapr"
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -head(solarpool_leagues)
    -#> # A tibble: 3 x 4
    -#>   league_name                   league_id        franchise_name franchise_id    
    -#>   <chr>                         <chr>            <chr>          <chr>           
    -#> 1 z_dynastyprocess-test         633501761776197~ solarpool      202892038360801~
    -#> 2 The JanMichaelLarkin Dynasty~ 522458773317046~ solarpool      202892038360801~
    -#> 3 DLP Dynasty League            521379020332068~ DLP::thoriyan  202892038360801~
    -

    Let’s pull the JML league ID from here for analysis, and set up a Sleeper connection object.

    -
    -jml_id <- solarpool_leagues %>% 
    -  filter(league_name == "The JanMichaelLarkin Dynasty League") %>% 
    -  pull(league_id)
    -
    -jml_id # For quick analyses, I'm not above copy-pasting the league ID instead!
    -#> [1] "522458773317046272"
    -
    -jml <- sleeper_connect(season = 2020, league_id = jml_id)
    -
    -jml
    -#> <Sleeper connection 2020_522458773317046272>
    -#> List of 5
    -#>  $ platform : chr "Sleeper"
    -#>  $ season   : num 2020
    -#>  $ user_name: NULL
    -#>  $ league_id: chr "522458773317046272"
    -#>  $ user_id  : NULL
    -#>  - attr(*, "class")= chr "sleeper_conn"
    -

    I’ve done this with the sleeper_connect() function, although you can also do this from the ff_connect() call - they are equivalent. Most if not all of the remaining functions after this point are prefixed with “ff_”.

    -

    Cool! Let’s have a quick look at what this league is like.

    -
    -jml_summary <- ff_league(jml)
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -str(jml_summary)
    -#> tibble [1 x 16] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "522458773317046272"
    -#>  $ league_name    : chr "The JanMichaelLarkin Dynasty League"
    -#>  $ season         : int 2020
    -#>  $ league_type    : chr "dynasty"
    -#>  $ franchise_count: num 12
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2019-2020"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : int 25
    -#>  $ league_depth   : num 300
    -#>  $ prev_league_ids: chr "386236959468675072"
    -

    Okay, so it’s the JanMichaelLarkin Dynasty League, it’s a 1QB league with 12 teams, half ppr scoring, and rosters about 300 players.

    -

    Let’s grab the rosters now.

    -
    -jml_rosters <- ff_rosters(jml)
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -head(jml_rosters)
    -#> # A tibble: 6 x 7
    -#>   franchise_id franchise_name player_id player_name     pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>           <chr> <chr> <dbl>
    -#> 1 1            Fake News      1110      T.Y. Hilton     WR    IND    31.6
    -#> 2 1            Fake News      1339      Zach Ertz       TE    PHI    30.6
    -#> 3 1            Fake News      1426      DeAndre Hopkins WR    ARI    29  
    -#> 4 1            Fake News      1825      Jarvis Landry   WR    CLE    28.5
    -#> 5 1            Fake News      2025      Albert Wilson   WR    MIA    28.9
    -#> 6 1            Fake News      2197      Brandin Cooks   WR    HOU    27.7
    -
    -

    -Values

    -

    Cool! Let’s pull in some additional context by adding DynastyProcess player values.

    -
    -player_values <- dp_values("values-players.csv")
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -# The values are stored by fantasypros ID since that's where the data comes from. 
    -# To join it to our rosters, we'll need playerID mappings.
    -
    -player_ids <- dp_playerids() %>% 
    -  select(sleeper_id,fantasypros_id)
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -player_values <- player_values %>% 
    -  left_join(player_ids, by = c("fp_id" = "fantasypros_id")) %>% 
    -  select(sleeper_id,ecr_1qb,ecr_pos,value_1qb)
    -
    -# Drilling down to just 1QB values and IDs, we'll be joining it onto rosters and don't need the extra stuff
    -
    -jml_values <- jml_rosters %>% 
    -  left_join(player_values, by = c("player_id"="sleeper_id")) %>% 
    -  arrange(franchise_id,desc(value_1qb))
    -
    -head(jml_values)
    -#> # A tibble: 6 x 10
    -#>   franchise_id franchise_name player_id player_name    pos   team    age ecr_1qb
    -#>   <chr>        <chr>          <chr>     <chr>          <chr> <chr> <dbl>   <dbl>
    -#> 1 1            Fake News      4866      Saquon Barkley RB    NYG    24.3     3.2
    -#> 2 1            Fake News      1426      DeAndre Hopki~ WR    ARI    29      17.2
    -#> 3 1            Fake News      4199      Aaron Jones    RB    GB     26.5    21.5
    -#> 4 1            Fake News      4037      Chris Godwin   WR    TB     25.3    31.7
    -#> 5 1            Fake News      4017      Deshaun Watson QB    HOU    25.7    52.2
    -#> 6 1            Fake News      4098      Kareem Hunt    RB    CLE    25.8    57  
    -#> # ... with 2 more variables: ecr_pos <dbl>, value_1qb <int>
    -

    Let’s do some team summaries now!

    -
    -value_summary <- jml_values %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(total_value = sum(value_1qb,na.rm = TRUE)) %>%
    -  ungroup() %>% 
    -  group_by(franchise_id,franchise_name) %>% 
    -  mutate(team_value = sum(total_value)) %>% 
    -  ungroup() %>% 
    -  pivot_wider(names_from = pos, values_from = total_value) %>% 
    -  arrange(desc(team_value))
    -
    -value_summary
    -#> # A tibble: 12 x 8
    -#>    franchise_id franchise_name    team_value    QB    RB    TE    WR    FB
    -#>    <chr>        <chr>                  <int> <int> <int> <int> <int> <int>
    -#>  1 3            solarpool              47413  7134 23965   722 15592    NA
    -#>  2 11           Permian Panthers       44224  3268 13604  7280 20072    NA
    -#>  3 4            The FANTom Menace      44217  2884  9596  2377 29360    NA
    -#>  4 1            Fake News              43470  3457 20135  3454 16424    NA
    -#>  5 8            Hocka Flocka           38742  1450 21482  2352 13458    NA
    -#>  6 12           jaydk                  36636  1885 18415  3518 12818    NA
    -#>  7 5            Barbarians             33947  3207 19473  5680  5587    NA
    -#>  8 6            sox05syd               31538  3458  4917  8830 14333    NA
    -#>  9 9            ZPMiller97             27327  2414 12715  2141 10057    NA
    -#> 10 7            Flipadelphia05         22434  2316  7814  1181 11123    NA
    -#> 11 2            KingGabe               21067   101  6726    17 14223    NA
    -#> 12 10           JMLarkin               16745   449   109   962 15225     0
    -

    So with that, we’ve got a team summary of values! I like applying some context, so let’s turn these into percentages - this helps normalise it to your league environment.

    -
    -value_summary_pct <- value_summary %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),~.x/sum(.x)) %>% 
    -  mutate_at(c("team_value","QB","RB","WR","TE"),round, 3)
    -
    -value_summary_pct
    -#> # A tibble: 12 x 8
    -#>    franchise_id franchise_name    team_value    QB    RB    TE    WR    FB
    -#>    <chr>        <chr>                  <dbl> <dbl> <dbl> <dbl> <dbl> <int>
    -#>  1 3            solarpool              0.116 0.223 0.151 0.019 0.087    NA
    -#>  2 11           Permian Panthers       0.108 0.102 0.086 0.189 0.113    NA
    -#>  3 4            The FANTom Menace      0.108 0.09  0.06  0.062 0.165    NA
    -#>  4 1            Fake News              0.107 0.108 0.127 0.09  0.092    NA
    -#>  5 8            Hocka Flocka           0.095 0.045 0.135 0.061 0.075    NA
    -#>  6 12           jaydk                  0.09  0.059 0.116 0.091 0.072    NA
    -#>  7 5            Barbarians             0.083 0.1   0.123 0.147 0.031    NA
    -#>  8 6            sox05syd               0.077 0.108 0.031 0.229 0.08     NA
    -#>  9 9            ZPMiller97             0.067 0.075 0.08  0.056 0.056    NA
    -#> 10 7            Flipadelphia05         0.055 0.072 0.049 0.031 0.062    NA
    -#> 11 2            KingGabe               0.052 0.003 0.042 0     0.08     NA
    -#> 12 10           JMLarkin               0.041 0.014 0.001 0.025 0.085     0
    -

    Armed with a value summary like this, we can see team strengths and weaknesses pretty quickly, and figure out who might be interested in your positional surpluses and who might have a surplus at a position you want to look at.

    -
    -
    -

    -Age

    -

    Another question you might ask: what is the average age of any given team?

    -

    I like looking at average age by position, but weighted by dynasty value. This helps give a better idea of age for each team - including who might be looking to offload an older veteran!

    -
    -age_summary <- jml_values %>% 
    -  group_by(franchise_id,pos) %>% 
    -  mutate(position_value = sum(value_1qb,na.rm=TRUE)) %>% 
    -  ungroup() %>% 
    -  mutate(weighted_age = age*value_1qb/position_value,
    -         weighted_age = round(weighted_age, 1)) %>% 
    -  group_by(franchise_id,franchise_name,pos) %>% 
    -  summarise(count = n(),
    -            age = sum(weighted_age,na.rm = TRUE)) %>% 
    -  pivot_wider(names_from = pos,
    -              values_from = c(age,count))
    -
    -age_summary
    -#> # A tibble: 12 x 12
    -#> # Groups:   franchise_id, franchise_name [12]
    -#>    franchise_id franchise_name    age_QB age_RB age_TE age_WR age_FB count_QB
    -#>    <chr>        <chr>              <dbl>  <dbl>  <dbl>  <dbl>  <dbl>    <int>
    -#>  1 1            Fake News           26.5   25.3   26     27.7     NA        3
    -#>  2 10           JMLarkin            28.4   27.5   26     25.4      0        3
    -#>  3 11           Permian Panthers    24.2   23.2   31.5   25.8     NA        4
    -#>  4 12           jaydk               31.8   25.6   25.9   28.0     NA        4
    -#>  5 2            KingGabe            27     22.5   26.7   22.3     NA        5
    -#>  6 3            solarpool           25.5   25.5   26.5   27.7     NA        5
    -#>  7 4            The FANTom Menace   28.4   24.7   24.4   26.8     NA        5
    -#>  8 5            Barbarians          25.2   24.4   28.5   26.9     NA        3
    -#>  9 6            sox05syd            23.8   23.9   27.3   25.4     NA        3
    -#> 10 7            Flipadelphia05      33     25.1   27.4   26.6     NA        2
    -#> 11 8            Hocka Flocka        31.5   24.2   23.9   23.7     NA        3
    -#> 12 9            ZPMiller97          24.6   23.9   26.6   24.9     NA        3
    -#> # ... with 4 more variables: count_RB <int>, count_TE <int>, count_WR <int>,
    -#> #   count_FB <int>
    -
    -
    -

    -Next steps

    -

    In this vignette, I’ve used ~three functions: ff_connect, ff_league, and ff_rosters. Now that you’ve gotten this far, why not check out some of the other possibilities?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/sleeper_basics_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/sleeper_basics_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/sleeper_basics_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/sleeper_basics_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/sleeper_basics_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/sleeper_basics_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/sleeper_basics_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/sleeper_getendpoint.html b/docs/dev/articles/sleeper_getendpoint.html deleted file mode 100644 index cd80046d..00000000 --- a/docs/dev/articles/sleeper_getendpoint.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - -Sleeper: Get Endpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - - - - -
    -

    -Creating custom Sleeper API calls

    - -

    The Sleeper API is pretty extensive. If there is something you’d like to access that’s beyond the current scope of ffscrapr, you can use the lower-level “sleeper_getendpoint” function to create a GET request and access the data, while still using the authentication and rate-limiting features I’ve already created.

    -

    Here is an example of how you can call one of the endpoints - in this case, let’s pull Sleeper’s trending players data!

    -

    We’ll start by opening up this page, https://docs.sleeper.app/#trending-players, which is the documentation page for this particular endpoint. From here, we can see that Sleeper’s documentation says the endpoint is:

    -

    https://api.sleeper.app/v1/players/<sport>/trending/<type>?lookback_hours=<hours>&limit=<int>

    -

    On first glance, you can see that it takes two parameters within the endpoint call itself (sport and type) and we can further adjust the query with HTTP parameters lookback_hours and limit. The sleeper_getendpoint function already has the https://api.sleeper.app/v1/ part encoded, so all we’ll need to do is pass in the remaining part of the URL as the endpoint, and pass the HTTP parameters in as arguments to the function (these are case sensitive!)

    -

    We can use the glue package to parameterise this, although you can also use base R’s paste function just as easily.

    -
    -
    -type <- "add"
    -
    -query <- glue::glue('players/nfl/trending/{type}')
    -
    -query
    -#> players/nfl/trending/add
    -
    -response_trending <- sleeper_getendpoint(query,lookback_hours = 48, limit = 10)
    -#> Using request.R from "ffscrapr"
    -
    -str(response_trending, max.level = 1)
    -#> List of 3
    -#>  $ content :List of 10
    -#>  $ query   : chr "https://api.sleeper.app/v1/players/nfl/trending/add?lookback_hours=48&limit=10"
    -#>  $ response:List of 9
    -#>   ..- attr(*, "class")= chr "response"
    -#>  - attr(*, "class")= chr "sleeper_api"
    -

    Along with the parsed content, the function also returns the query and the response that was sent by the server. These are helpful for debugging, but we can turn the content into a dataframe with some careful application of the tidyverse.

    -
    -
    -df_trending <- response_trending %>% 
    -  purrr::pluck("content") %>% 
    -  dplyr::bind_rows()
    -
    -head(df_trending)
    -#> # A tibble: 6 x 2
    -#>   player_id  count
    -#>   <chr>      <int>
    -#> 1 4187      270285
    -#> 2 6156      142272
    -#> 3 1169      129162
    -#> 4 5100       84788
    -#> 5 4381       64578
    -#> 6 333        62680
    -

    This isn’t very helpful without knowing who these players are, so let’s pull the players endpoint in as well - this one has a convenient function!

    -
    -
    -players <- sleeper_players() %>% 
    -  select(player_id, player_name, pos, team, age)
    -#> No encoding supplied: defaulting to UTF-8.
    -
    -trending <- df_trending %>% 
    -  left_join(players, by = "player_id")
    -
    -trending
    -#> # A tibble: 10 x 6
    -#>    player_id  count player_name       pos   team    age
    -#>    <chr>      <int> <chr>             <chr> <chr> <dbl>
    -#>  1 4187      270285 Brian Hill        RB    TEN    25.6
    -#>  2 6156      142272 Benny Snell       RB    PIT    23.3
    -#>  3 1169      129162 Robert Griffin    QB    BAL    31.3
    -#>  4 5100       84788 Jordan Wilkins    RB    IND    26.9
    -#>  5 4381       64578 Taysom Hill       QB    NO     30.8
    -#>  6 333        62680 Ryan Fitzpatrick  QB    WAS    38.5
    -#>  7 NYG        57945 <NA>              DEF   NYG    NA  
    -#>  8 4147       52537 Samaje Perine     RB    CIN    25.7
    -#>  9 3976       50102 Mitchell Trubisky QB    BUF    26.8
    -#> 10 943        45866 Kyle Rudolph      TE    NYG    31.6
    -

    There - this means something to us now! As of this writing (2020-11-10), Kalen Ballage was the most added player. Haven’t we been bitten by this before?

    -
    -
    - - - -
    - - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/articles/sleeper_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/sleeper_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js deleted file mode 100644 index ca349fd6..00000000 --- a/docs/dev/articles/sleeper_getendpoint_files/accessible-code-block-0.0.1/empty-anchor.js +++ /dev/null @@ -1,15 +0,0 @@ -// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> -// v0.0.1 -// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. - -document.addEventListener('DOMContentLoaded', function() { - const codeList = document.getElementsByClassName("sourceCode"); - for (var i = 0; i < codeList.length; i++) { - var linkList = codeList[i].getElementsByTagName('a'); - for (var j = 0; j < linkList.length; j++) { - if (linkList[j].innerHTML === "") { - linkList[j].setAttribute('aria-hidden', 'true'); - } - } - } -}); diff --git a/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.3/header-attrs.js b/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.3/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.3/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js b/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/dev/articles/sleeper_getendpoint_files/header-attrs-2.7/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/dev/authors.html b/docs/dev/authors.html deleted file mode 100644 index 63c8bd40..00000000 --- a/docs/dev/authors.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - - -Authors • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
      -
    • -

      Tan Ho. Author, maintainer. -

      -
    • -
    • -

      Tony ElHabr. Contributor. -

      -
    • -
    • -

      Joe Sydlowski. Contributor. -

      -
    • -
    - -
    - -
    - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/bootstrap-toc.css b/docs/dev/bootstrap-toc.css deleted file mode 100644 index 5a859415..00000000 --- a/docs/dev/bootstrap-toc.css +++ /dev/null @@ -1,60 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ - -/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ - -/* All levels of nav */ -nav[data-toggle='toc'] .nav > li > a { - display: block; - padding: 4px 20px; - font-size: 13px; - font-weight: 500; - color: #767676; -} -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 19px; - color: #563d7c; - text-decoration: none; - background-color: transparent; - border-left: 1px solid #563d7c; -} -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 18px; - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-left: 2px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} -nav[data-toggle='toc'] .nav .nav > li > a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; - font-weight: normal; -} -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 29px; -} -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 28px; - font-weight: 500; -} - -/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ -nav[data-toggle='toc'] .nav > .active > ul { - display: block; -} diff --git a/docs/dev/bootstrap-toc.js b/docs/dev/bootstrap-toc.js deleted file mode 100644 index 1cdd573b..00000000 --- a/docs/dev/bootstrap-toc.js +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) - * Copyright 2015 Aidan Feldman - * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ -(function() { - 'use strict'; - - window.Toc = { - helpers: { - // return all matching elements in the set, or their descendants - findOrFilter: function($el, selector) { - // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ - // http://stackoverflow.com/a/12731439/358804 - var $descendants = $el.find(selector); - return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); - }, - - generateUniqueIdBase: function(el) { - var text = $(el).text(); - var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); - return anchor || el.tagName.toLowerCase(); - }, - - generateUniqueId: function(el) { - var anchorBase = this.generateUniqueIdBase(el); - for (var i = 0; ; i++) { - var anchor = anchorBase; - if (i > 0) { - // add suffix - anchor += '-' + i; - } - // check if ID already exists - if (!document.getElementById(anchor)) { - return anchor; - } - } - }, - - generateAnchor: function(el) { - if (el.id) { - return el.id; - } else { - var anchor = this.generateUniqueId(el); - el.id = anchor; - return anchor; - } - }, - - createNavList: function() { - return $(''); - }, - - createChildNavList: function($parent) { - var $childList = this.createNavList(); - $parent.append($childList); - return $childList; - }, - - generateNavEl: function(anchor, text) { - var $a = $(''); - $a.attr('href', '#' + anchor); - $a.text(text); - var $li = $('
  • '); - $li.append($a); - return $li; - }, - - generateNavItem: function(headingEl) { - var anchor = this.generateAnchor(headingEl); - var $heading = $(headingEl); - var text = $heading.data('toc-text') || $heading.text(); - return this.generateNavEl(anchor, text); - }, - - // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). - getTopLevel: function($scope) { - for (var i = 1; i <= 6; i++) { - var $headings = this.findOrFilter($scope, 'h' + i); - if ($headings.length > 1) { - return i; - } - } - - return 1; - }, - - // returns the elements for the top level, and the next below it - getHeadings: function($scope, topLevel) { - var topSelector = 'h' + topLevel; - - var secondaryLevel = topLevel + 1; - var secondarySelector = 'h' + secondaryLevel; - - return this.findOrFilter($scope, topSelector + ',' + secondarySelector); - }, - - getNavLevel: function(el) { - return parseInt(el.tagName.charAt(1), 10); - }, - - populateNav: function($topContext, topLevel, $headings) { - var $context = $topContext; - var $prevNav; - - var helpers = this; - $headings.each(function(i, el) { - var $newNav = helpers.generateNavItem(el); - var navLevel = helpers.getNavLevel(el); - - // determine the proper $context - if (navLevel === topLevel) { - // use top level - $context = $topContext; - } else if ($prevNav && $context === $topContext) { - // create a new level of the tree and switch to it - $context = helpers.createChildNavList($prevNav); - } // else use the current $context - - $context.append($newNav); - - $prevNav = $newNav; - }); - }, - - parseOps: function(arg) { - var opts; - if (arg.jquery) { - opts = { - $nav: arg - }; - } else { - opts = arg; - } - opts.$scope = opts.$scope || $(document.body); - return opts; - } - }, - - // accepts a jQuery object, or an options object - init: function(opts) { - opts = this.helpers.parseOps(opts); - - // ensure that the data attribute is in place for styling - opts.$nav.attr('data-toggle', 'toc'); - - var $topContext = this.helpers.createChildNavList(opts.$nav); - var topLevel = this.helpers.getTopLevel(opts.$scope); - var $headings = this.helpers.getHeadings(opts.$scope, topLevel); - this.helpers.populateNav($topContext, topLevel, $headings); - } - }; - - $(function() { - $('nav[data-toggle="toc"]').each(function(i, el) { - var $nav = $(el); - Toc.init($nav); - }); - }); -})(); diff --git a/docs/dev/docsearch.css b/docs/dev/docsearch.css deleted file mode 100644 index e5f1fe1d..00000000 --- a/docs/dev/docsearch.css +++ /dev/null @@ -1,148 +0,0 @@ -/* Docsearch -------------------------------------------------------------- */ -/* - Source: https://github.com/algolia/docsearch/ - License: MIT -*/ - -.algolia-autocomplete { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.algolia-autocomplete .ds-dropdown-menu { - width: 100%; - min-width: none; - max-width: none; - padding: .75rem 0; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); -} - -@media (min-width:768px) { - .algolia-autocomplete .ds-dropdown-menu { - width: 175% - } -} - -.algolia-autocomplete .ds-dropdown-menu::before { - display: none -} - -.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { - padding: 0; - background-color: rgb(255,255,255); - border: 0; - max-height: 80vh; -} - -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { - margin-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion { - padding: 0; - overflow: visible -} - -.algolia-autocomplete .algolia-docsearch-suggestion--category-header { - padding: .125rem 1rem; - margin-top: 0; - font-size: 1.3em; - font-weight: 500; - color: #00008B; - border-bottom: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { - float: none; - padding-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { - float: none; - width: auto; - padding: 0; - text-align: left -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content { - float: none; - width: auto; - padding: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content::before { - display: none -} - -.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { - padding-top: .75rem; - margin-top: .75rem; - border-top: 1px solid rgba(0, 0, 0, .1) -} - -.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { - display: block; - padding: .1rem 1rem; - margin-bottom: 0.1; - font-size: 1.0em; - font-weight: 400 - /* display: none */ -} - -.algolia-autocomplete .algolia-docsearch-suggestion--title { - display: block; - padding: .25rem 1rem; - margin-bottom: 0; - font-size: 0.9em; - font-weight: 400 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--text { - padding: 0 1rem .5rem; - margin-top: -.25rem; - font-size: 0.8em; - font-weight: 400; - line-height: 1.25 -} - -.algolia-autocomplete .algolia-docsearch-footer { - width: 110px; - height: 20px; - z-index: 3; - margin-top: 10.66667px; - float: right; - font-size: 0; - line-height: 0; -} - -.algolia-autocomplete .algolia-docsearch-footer--logo { - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position: 50%; - background-size: 100%; - overflow: hidden; - text-indent: -9000px; - width: 100%; - height: 100%; - display: block; - transform: translate(-8px); -} - -.algolia-autocomplete .algolia-docsearch-suggestion--highlight { - color: #FF8C00; - background: rgba(232, 189, 54, 0.1) -} - - -.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { - box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) -} - -.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { - background-color: rgba(192, 192, 192, .15) -} diff --git a/docs/dev/docsearch.js b/docs/dev/docsearch.js deleted file mode 100644 index b35504cd..00000000 --- a/docs/dev/docsearch.js +++ /dev/null @@ -1,85 +0,0 @@ -$(function() { - - // register a handler to move the focus to the search bar - // upon pressing shift + "/" (i.e. "?") - $(document).on('keydown', function(e) { - if (e.shiftKey && e.keyCode == 191) { - e.preventDefault(); - $("#search-input").focus(); - } - }); - - $(document).ready(function() { - // do keyword highlighting - /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ - var mark = function() { - - var referrer = document.URL ; - var paramKey = "q" ; - - if (referrer.indexOf("?") !== -1) { - var qs = referrer.substr(referrer.indexOf('?') + 1); - var qs_noanchor = qs.split('#')[0]; - var qsa = qs_noanchor.split('&'); - var keyword = ""; - - for (var i = 0; i < qsa.length; i++) { - var currentParam = qsa[i].split('='); - - if (currentParam.length !== 2) { - continue; - } - - if (currentParam[0] == paramKey) { - keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); - } - } - - if (keyword !== "") { - $(".contents").unmark({ - done: function() { - $(".contents").mark(keyword); - } - }); - } - } - }; - - mark(); - }); -}); - -/* Search term highlighting ------------------------------*/ - -function matchedWords(hit) { - var words = []; - - var hierarchy = hit._highlightResult.hierarchy; - // loop to fetch from lvl0, lvl1, etc. - for (var idx in hierarchy) { - words = words.concat(hierarchy[idx].matchedWords); - } - - var content = hit._highlightResult.content; - if (content) { - words = words.concat(content.matchedWords); - } - - // return unique words - var words_uniq = [...new Set(words)]; - return words_uniq; -} - -function updateHitURL(hit) { - - var words = matchedWords(hit); - var url = ""; - - if (hit.anchor) { - url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; - } else { - url = hit.url + '?q=' + escape(words.join(" ")); - } - - return url; -} diff --git a/docs/dev/docsearch.json b/docs/dev/docsearch.json deleted file mode 100644 index 153eb393..00000000 --- a/docs/dev/docsearch.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "index_name": "dynastyprocess", - "start_urls": [ - { - "url": "ffscrapr.dynastyprocess.com/index.html", - "selectors_key": "homepage", - "tags": [ - "homepage" - ] - }, - { - "url": "ffscrapr.dynastyprocess.com/reference", - "selectors_key": "reference", - "tags": [ - "reference" - ] - }, - { - "url": "ffscrapr.dynastyprocess.com/articles", - "selectors_key": "articles", - "tags": [ - "articles" - ] - } - ], - "stop_urls": [ - "/reference/$", - "/reference/index.html", - "/articles/$", - "/articles/index.html" - ], - "sitemap_urls": [ - "ffscrapr.dynastyprocess.com/sitemap.xml" - ], - "selectors": { - "homepage": { - "lvl0": { - "selector": ".contents h1", - "default_value": "ffscrapr Home page" - }, - "lvl1": { - "selector": ".contents h2" - }, - "lvl2": { - "selector": ".contents h3", - "default_value": "Context" - }, - "lvl3": ".ref-arguments td, .ref-description", - "text": ".contents p, .contents li, .contents .pre" - }, - "reference": { - "lvl0": { - "selector": ".contents h1" - }, - "lvl1": { - "selector": ".contents .name", - "default_value": "Argument" - }, - "lvl2": { - "selector": ".ref-arguments th", - "default_value": "Description" - }, - "lvl3": ".ref-arguments td, .ref-description", - "text": ".contents p, .contents li" - }, - "articles": { - "lvl0": { - "selector": ".contents h1" - }, - "lvl1": { - "selector": ".contents .name" - }, - "lvl2": { - "selector": ".contents h2, .contents h3", - "default_value": "Context" - }, - "text": ".contents p, .contents li" - } - }, - "selectors_exclude": [ - ".dont-index" - ], - "min_indexed_level": 2, - "custom_settings": { - "separatorsToIndex": "_", - "attributesToRetrieve": [ - "hierarchy", - "content", - "anchor", - "url", - "url_without_anchor" - ] - } -} - diff --git a/docs/dev/extra.css b/docs/dev/extra.css deleted file mode 100644 index 1433b08c..00000000 --- a/docs/dev/extra.css +++ /dev/null @@ -1,29 +0,0 @@ -@import 'https://fonts.googleapis.com/css?family=Fira+Mono:400,700|family=IBM+Plex+Sans:400,700'; - - -body{ - font-family: 'IBM Plex Sans', sans-serif; -} - -h1 { - font-family: 'Fira Mono', sans-serif; - font-weight: 700; -} - -h2,h3 { - font-family: 'IBM Plex Sans', sans-serif; - font-weight: 700; -} - -pre, code { - font-family: 'Fira Mono', monospace; -} - -.navbar-link { - font-weight: 700; - font-family: 'Fira Mono', sans-serif; -} - -h4.author,h4.date { - padding-top:0px; - margin-top:0px;} diff --git a/docs/dev/favicon-16x16.png b/docs/dev/favicon-16x16.png deleted file mode 100644 index 81ad39e7150039fd064b24c470c9a9e70168737b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>-}ete8{V|Q%ti}Q5Q%8**Eyr_ls!s z$?JsZ7=~#ZoEKCtSJA6b(K{`qk*H~qq^X|_L>l@@8hVKu`jskrp*jYk+6FC(y6*Z$ ze!7On#>Pg*#wNzbK$fYoaj=eIxVC|fp^=%9v9+O5oR&d>njX*`XMH0B6JrY_W1uZr z>iQY#`o6k`h9)NZCdSSNM)_)bK=F9SvUhY`G-dMIvPx$|V>f*xA3ehWT|*B& zLw7yH?)thrH!e?YYjrR%vNANXGBUC;HYqF2UpQ};x4XN6k&%U&+5i9lk92eH0S2O4 zNsu2XLKqm>Jdb!W8P0yosM7hYOI5V=_P>8gKYwQY0fV3a{ypO}jbsO^V@&dPcga#s zn#u>{u$OrHy0SlI<7DCzXIiTaj3$Olo-U3d5|@(`7?|9`%*x96!ra(65*|Hy^eiy= z@xy12QkaTnR{s3Kdd1Yl)bt7~OKZhU$re|aqg%F^HaJAP$Aq}daC8a^_m7VbX4Xkj zP(7%io1Br7leCI4EJaQGtb%TOT3TLWW@;`&NSZRg(1xv>%L_uvi^>X1i^CbXXH->G zRc8Ns@$=VD?WV06Y%FZ7(k(4*t?mtHCKv{E_jL7jhIV)Rd$7z>R7}mAH)YD4DN`oR zn)Ys$3S-d>qZ^5{BxhO1mZv!hMV{HQiD+7a0o`NYT8glbfGSez?Yxog(LIbEF zyecH3Bq*_5p`a)~Ei)%op`@}PRUxyWB$Jc1ICAEQ%n|m}4IT@;^cY@=3zmFxGMx&vg2B_( K&t;ucLK6VqhbAuM7ANk~8tkS&OyRzfpWP*Jcd zvItrPr{V%4qcE+C6c`AiVKHFsI2Em>Qm1I?6kF^K{na16^WHh%`R-ZnIro-FN`tK^ zP80}&tU^P?GN2j8f29eK;^vBepjPY-kOV+b`w7dx6sE>aWr$1yLB-w>RHB8TML?Cj zhM)ozf@b9qB&vZR`<(jjs0|QARzya`1ObO}8|Ih|^Vw?eNo%Ga;AIK$zu#k9BY0xX z?5DCG+c0%@tchiF*p3BAfOWRa2^*uss4cVA$+yMH*T~y2L0SMn!W$00AV0u>xwF>i z_F5kR01p_D`5w)f2RMKbPy$GRjpi~5wyIs(^>jEMMtKC0?86n}1V$KFmN(ZQ!;3sQ zTTmP)i2a@%tvj-ni=T93OAt(oVAmadx5MaqoCrkmat6ZT5dkP(;{sQ?vJ-t#Kaht< zaCt-p0}*raTrW-o9p3BBtzfW4IB~*_eZd(%ybd|!fiyY8n^AlZlY7nu<`YCT8_i&H zLpj)aI*jAEzrSdkR8r~2KH~ykcJ%FBZm`T9*@WWY#C3G|xEmWKKrLQDL4LA43Bxdj z5BIbSJV0f&+xy(G_t}KuDJjAf&K1W$9INH@?sHaet~C-G5~&*#gcBEQg< zYBh(2LgB}cAJfPcE#Q#})G}!_(8gsJ+80K~>gLEK&+=ClUL?nTPnVVooorPP|E9?9 zE-v0P4Y>Y$AiLr1d4$wRZgG>8{tBW<$>G7`p?95vSHLh=hf0FXUz%BvDGt?kn=HWg zhfr}q%=%%ad<*&58+v_x!kc5O3?!=1n%j8J(T!`pnJP#p1-L8nEyKet^A)yHnA$5s z_oH34EN)WJ)g_pW(^umiy1}rT_?ekCw7EALJwvX{ZoSOl4v?dJ`z|-PU7UTM_CjT8 zDiu^d+%r2AcC1a_nvu3Az32A2X7{j!#LiplEw0J>iLt``!oVssICnm0Oo*zIQGDV3 z{6c$Y`*)Dw%&znOTUU9veEZoFNfU72-J#4-wpd#Wty%7VqU!G9W>oRw6o=;t&$ zD$UvcttOQkNHT2wL)#Z0Qx{2FKcy}6_A+l~Jk_=_CYU3B8z1yf_X?@W(Q*4KuSy&e zG?Ki%yFLq0MCF!emF1`Jh>R!-N{Qunl-5pn7r&b>OFNl(T%s94u4c{c2%%&m{-U1l z1H~WoC41GBpBvF!{fv)vkW$|wt=sff{;RgtH-1SSJ?EdjL{}5EFCLVP@DX z{4A2xp0}o&JUnq_d+YS4*W0^Rv`=2!c~|kGWn`!90_9>>eb;2BiDpjTkvi}&(Yf&L zRFAR|@#Gx*BrE!xs{2bO=7nyegMB@BS2RPkXRoUcy*KIAopuO(O{3}qu^zDse|Ix zDup^lq|8eJ3c^twLr?*N`o*BQ2t!3U4@OZDibhQ_Cs7yR=#xRBrjP-u`;d@WF3`VVF; BE+hZ| diff --git a/docs/dev/favicon.ico b/docs/dev/favicon.ico deleted file mode 100644 index ec6ec640fe9a2360caa61f2342741a3e435d62f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 VU&ekB_q`vpsv}|@)@2*E{XYxary>9V diff --git a/docs/dev/index.html b/docs/dev/index.html deleted file mode 100644 index 4b8deb40..00000000 --- a/docs/dev/index.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - -ffscrapr • an R package for Fantasy Football APIs • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    -
    - -

    An R Client for Fantasy Football League APIs

    - - - -

    Helps access various Fantasy Football APIs (currently MFL, Sleeper, Fleaflicker, and ESPN - eventually Yahoo, potentially others) by handling authentication/rate-limiting/caching, forming appropriate calls, and returning tidy dataframes which can be easily connected to other data sources.

    -
    -

    -Installation

    -

    Version 1.4.2 is now on CRAN 🎉 and can be installed with:

    -
    -install.packages("ffscrapr")
    -# or from GitHub release with the remotes package via:
    -# install.packages("remotes")
    -remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.2")
    -

    Install the development version from GitHub with:

    -
    -remotes::install_github("dynastyprocess/ffscrapr", ref = "dev")
    -

    The dev version has a separate documentation site here.

    -
    -
    -

    -Usage

    -

    All ffscrapr functions start with a connection object created by ff_connect(), which stores connection, authentication, and other user-defined parameters. This object is used by all other functions to help return the correct data.

    -
    -library(ffscrapr)
    -ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020)
    -
    -# Get a summary of league settings
    -ff_league(ssb) %>% str()
    -#> tibble [1 x 14] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "54040"
    -#>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    -#>  $ season         : int 2020
    -#>  $ franchise_count: num 14
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi FALSE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2021"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 33
    -#>  $ league_depth   : num 462
    -
    -# Get rosters
    -ff_rosters(ssb)
    -#> # A tibble: 442 x 11
    -#>   franchise_id franchise_name player_id player_name     pos   team    age
    -#>   <chr>        <chr>          <chr>     <chr>           <chr> <chr> <dbl>
    -#> 1 0001         Team Pikachu   13189     Engram, Evan    TE    NYG    26.8
    -#> 2 0001         Team Pikachu   11680     Landry, Jarvis  WR    CLE    28.5
    -#> 3 0001         Team Pikachu   13645     Smith, Tre'Quan WR    NOS    25.4
    -#> 4 0001         Team Pikachu   12110     Brate, Cameron  TE    TBB    29.9
    -#> 5 0001         Team Pikachu   13168     Reynolds, Josh  WR    LAR    26.3
    -#> # ... with 437 more rows, and 4 more variables: roster_status <chr>,
    -#> #   drafted <chr>, draft_year <chr>, draft_round <chr>
    -
    -# Get transactions
    -ff_transactions(ssb)
    -#> # A tibble: 152 x 12
    -#>   timestamp           type       type_desc franchise_id franchise_name   
    -#>   <dttm>              <chr>      <chr>     <chr>        <chr>            
    -#> 1 2020-07-09 17:25:20 FREE_AGENT dropped   0004         Team Ice Climbers
    -#> 2 2020-07-09 17:25:20 FREE_AGENT dropped   0004         Team Ice Climbers
    -#> 3 2020-06-16 01:56:49 TAXI       promoted  0014         Team Luigi       
    -#> 4 2020-06-16 01:56:49 TAXI       demoted   0014         Team Luigi       
    -#> 5 2020-06-12 23:51:44 FREE_AGENT dropped   0010         Team Yoshi       
    -#> # ... with 147 more rows, and 7 more variables: player_id <chr>,
    -#> #   player_name <chr>, pos <chr>, team <chr>, bbid_spent <dbl>,
    -#> #   trade_partner <chr>, comments <chr>
    -

    Platform-specific guides on getting started with ffscrapr are here:

    - -

    There are also some more advanced guides for custom API calls in the Articles section, as well as some guides on optimizing ffscrapr’s performance.

    -
    -
    -

    -Contributing

    -

    Many hands make light work! Here are some ways you can contribute to this project:

    - -
    -
    -

    -Terms of Use

    -

    The R code for this package is released as open source under the MIT license.

    -

    The APIs and data accessed by this package belong to their respective owners, and are governed by their terms of use.

    -
    -
    -
    - - -
    - - -
    - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - diff --git a/docs/dev/link.svg b/docs/dev/link.svg deleted file mode 100644 index 88ad8276..00000000 --- a/docs/dev/link.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/docs/dev/logo.png b/docs/dev/logo.png deleted file mode 100644 index baee2970beb5640cadfb741dfaaea1b7d2b54eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175341 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 z 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 diff --git a/docs/dev/logo.svg b/docs/dev/logo.svg deleted file mode 100644 index c25272b8..00000000 --- a/docs/dev/logo.svg +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html deleted file mode 100644 index cf4f6774..00000000 --- a/docs/dev/news/index.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - - - -Changelog • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    -ffscrapr (development version) Unreleased -

    -
    -

    -Minor changes

    -
      -
    • -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) (v1.4.2.01)
    • -
    • Added helper script in dev/ for switching between test cache versions. (v1.4.2.02)
    • -
    • -ff_schedule() for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03)
    • -
    • -ff_draft() for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04)
    • -
    • -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. (v1.4.2.05)
    • -
    • -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. (v1.4.2.06)
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.4.2 2021-05-10 -

    -

    The main goal of v1.4.2 is to patch some minor bugs.

    -
    -

    -Minor changes

    -
      -
    • -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)
    • -
    • Roxygen configured to use markdown (with the roxygen2md package) - hopefully fixes the lifecycle badge issues?
    • -
    • -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 correctly
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.4.1 2021-04-18 -

    -

    The 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.

    -
    -

    -New features

    -
      -
    • -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().
    • -
    -
    -
    -

    -Minor changes

    -
      -
    • Added release_questions to help remind me to maintain test infrastructure
    • -
    • -mfl_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)
    • -
    • Redirected nflfastr download functions to the new nflverse/ repository locations. (Resolves #268)
    • -
    • -.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)
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.4.0 2021-04-13 -

    -

    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!)

    -
    -

    -New Features

    -
      -
    • -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!
    • -
    -
    -
    -

    -Breaking Changes

    -
      -
    • -ff_scoring for ESPN loses the “override_pos” which only had a value of 16 for D/ST specific rules
    • -
    • -ff_scoring rules for ESPN and Sleeper have been expanded from one line per rule to one line per position per rule
    • -
    -
    -
    -

    -Minor Changes

    -
      -
    • Force mfl_playerscores to use season + league specific players call where possible (#239)
    • -
    • Reduce minimum rows for flea_rosters test to 200, which fixes an API check issue (#242)
    • -
    • Switching memoise backend to cachem package, fixes CRAN check issue where digest is no longer imported by memoise. Cachem also apparently more performant! (#244)
    • -
    • -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)
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.3.0 2021-03-07 -

    -

    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.

    -
    -

    -Breaking Changes

    -
      -
    • -custom_players arguments are deprecated for MFL - it will now return them by default.
    • -
    -
    -
    -

    -ESPN Details

    -

    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 authenticated
    • -
    • Username and password features - ESPN used to have a way to authenticate via username/password, but this has been recently made more difficult. It is an area that can be revisited if/when the Python package manages it, but at this time will only be accessible with the SWID/ESPN_S2 keys.
    • -
    -
    -
    -

    -New Functions

    -
      -
    • -dp_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 is
    • -
    -
    -
    -

    -Minor patches

    -
      -
    • Converted GET requests to use httr::RETRY instead - this adds some robustness for server-side issues. As suggested by Maelle Salmon’s blog post on not reinventing the wheel.
    • -
    • Added some type conversions and renaming for snake_case consistency to mfl_rosters and mfl_playerscores
    • -
    • Fixed bug in MFL’s ff_playerscores() function so that it correctly pulls older names. (Resolves #196)
    • -
    • Refactored all tests to move test cache files to a separate/non-package location (https://github.com/dynastyprocess/ffscrapr-tests) - so that it is not included in CRAN’s package sizing
    • -
    • Fixed bugs in MFL’s ff_starters() function - bad default arg, bad players call. (Fixes #202)
    • -
    • Resolve MFL’s playerscores to handle vectorized request (Fixes #206)
    • -
    • Resolve bugs related to .fn_choose_season for tests (Fixes #217, #219)
    • -
    • Resolved bug in MFL’s ff_rosters() by adding a week parameter (Fixes #215)
    • -
    • Coerced ff_transactions() bid_amount into a numeric (Fixes #210)
    • -
    • Removed bye franchises from ff_starters() (Fixes #212)
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.2.2 2021-02-08 -

    -

    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.

    -
    -

    -Minor patches

    -
      -
    • Refactored dp_values() and dp_playerids() functions to use httr backend for compat with httptest, preventing CRAN errors.
    • -
    • Added inst-level redactor for httptest.
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.2.1 2020-12-16 -

    -
    -

    -Minor patches

    -
      -
    • Caching vignette outputs in tests/testthat to making vignette-rebuilding less internet reliant
    • -
    • Changing the league_id output of sleeper_userleagues to be a character column (because of cran no-longdouble support)
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.2.0 2020-11-27 -

    -

    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.

    -
    -

    -BREAKING CHANGES

    -
      -
    • -sleeper_getendpoint() now behaves more like the other getendpoint functions - first argument is the endpoint and any further args are passed as query parameters.
    • -
    -
    -
    -

    -Other tweaks to existing platforms/methods

    -
      -
    • Small copyedits to existing vignettes.
    • -
    • Added filesystem cache capabilities and a vignette to detailing how to use it.
    • -
    -
    -
    -

    -Fleaflicker notes

    -

    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.
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.1.0 2020-11-16 -

    -

    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().

    -
    -

    -New generic functions

    -

    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.
    • -
    -
    -
    -

    -Sleeper notes

    -

    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 “/”.
    • -
    • Added generic and method for 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.
    • -
    • Added two vignettes, showing “Getting Started” as well as one for custom API calls
    • -
    -
    -
    -

    -MFL changes

    - -
    -
    -

    -Other release tweaks in 1.1.0

    -
      -
    • Now uses {checkmate} for testing.
    • -
    • Silently swallowing up unused args in mfl_connect and sleeper_connect.
    • -
    • Uses describeIn instead of rdname for method documentation.
    • -
    • Wrap all documentation examples in donttest - ratelimiting AND running in under 5 seconds each is pretty challenging!
    • -
    -
    -
    -
    -
    -

    -ffscrapr 1.0.0 2020-08-17 -

    -

    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 ratelimiting
    • -
    • -mfl_getendpoint as a low-level function for making GET requests from MFL
    • -
    • -ff_draft gets draft results
    • -
    • -ff_draftpicks gets current and future draft picks that have not yet been selected
    • -
    • -ff_franchises gets franchise-level identifiers and divisions
    • -
    • -ff_league gets league-level summaries of rules, players, and franchises
    • -
    • -ff_playerscores gets playerweek-level scores
    • -
    • -ff_rosters gets franchise-level rosters complete with naming
    • -
    • -ff_schedule gets weekly fantasy schedules
    • -
    • -ff_scoring gets scoring rules
    • -
    • -ff_standings gets league-level season summaries
    • -
    • -ff_transactions gets a list of all transactions and cleans them into a data frame.
    • -
    -
    -
    - - - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/pkgdown.css b/docs/dev/pkgdown.css deleted file mode 100644 index 1273238d..00000000 --- a/docs/dev/pkgdown.css +++ /dev/null @@ -1,367 +0,0 @@ -/* Sticky footer */ - -/** - * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ - * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css - * - * .Site -> body > .container - * .Site-content -> body > .container .row - * .footer -> footer - * - * Key idea seems to be to ensure that .container and __all its parents__ - * have height set to 100% - * - */ - -html, body { - height: 100%; -} - -body { - position: relative; -} - -body > .container { - display: flex; - height: 100%; - flex-direction: column; -} - -body > .container .row { - flex: 1 0 auto; -} - -footer { - margin-top: 45px; - padding: 35px 0 36px; - border-top: 1px solid #e5e5e5; - color: #666; - display: flex; - flex-shrink: 0; -} -footer p { - margin-bottom: 0; -} -footer div { - flex: 1; -} -footer .pkgdown { - text-align: right; -} -footer p { - margin-bottom: 0; -} - -img.icon { - float: right; -} - -img { - max-width: 100%; -} - -/* Fix bug in bootstrap (only seen in firefox) */ -summary { - display: list-item; -} - -/* Typographic tweaking ---------------------------------*/ - -.contents .page-header { - margin-top: calc(-60px + 1em); -} - -dd { - margin-left: 3em; -} - -/* Section anchors ---------------------------------*/ - -a.anchor { - margin-left: -30px; - display:inline-block; - width: 30px; - height: 30px; - visibility: hidden; - - background-image: url(./link.svg); - background-repeat: no-repeat; - background-size: 20px 20px; - background-position: center center; -} - -.hasAnchor:hover a.anchor { - visibility: visible; -} - -@media (max-width: 767px) { - .hasAnchor:hover a.anchor { - visibility: hidden; - } -} - - -/* Fixes for fixed navbar --------------------------*/ - -.contents h1, .contents h2, .contents h3, .contents h4 { - padding-top: 60px; - margin-top: -40px; -} - -/* Navbar submenu --------------------------*/ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover>.dropdown-menu { - display: block; -} - -.dropdown-submenu>a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover>a:after { - border-left-color: #ffffff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left>.dropdown-menu { - left: -100%; - margin-left: 10px; - border-radius: 6px 0 6px 6px; -} - -/* Sidebar --------------------------*/ - -#pkgdown-sidebar { - margin-top: 30px; - position: -webkit-sticky; - position: sticky; - top: 70px; -} - -#pkgdown-sidebar h2 { - font-size: 1.5em; - margin-top: 1em; -} - -#pkgdown-sidebar h2:first-child { - margin-top: 0; -} - -#pkgdown-sidebar .list-unstyled li { - margin-bottom: 0.5em; -} - -/* bootstrap-toc tweaks ------------------------------------------------------*/ - -/* All levels of nav */ - -nav[data-toggle='toc'] .nav > li > a { - padding: 4px 20px 4px 6px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; -} - -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 5px; - color: inherit; - border-left: 1px solid #878787; -} - -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 5px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; - border-left: 2px solid #878787; -} - -/* Nav: second level (shown on .active) */ - -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} - -nav[data-toggle='toc'] .nav .nav > li > a { - padding-left: 16px; - font-size: 1.35rem; -} - -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 15px; -} - -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 15px; - font-weight: 500; - font-size: 1.35rem; -} - -/* orcid ------------------------------------------------------------------- */ - -.orcid { - font-size: 16px; - color: #A6CE39; - /* margins are required by official ORCID trademark and display guidelines */ - margin-left:4px; - margin-right:4px; - vertical-align: middle; -} - -/* Reference index & topics ----------------------------------------------- */ - -.ref-index th {font-weight: normal;} - -.ref-index td {vertical-align: top; min-width: 100px} -.ref-index .icon {width: 40px;} -.ref-index .alias {width: 40%;} -.ref-index-icons .alias {width: calc(40% - 40px);} -.ref-index .title {width: 60%;} - -.ref-arguments th {text-align: right; padding-right: 10px;} -.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} -.ref-arguments .name {width: 20%;} -.ref-arguments .desc {width: 80%;} - -/* Nice scrolling for wide elements --------------------------------------- */ - -table { - display: block; - overflow: auto; -} - -/* Syntax highlighting ---------------------------------------------------- */ - -pre { - word-wrap: normal; - word-break: normal; - border: 1px solid #eee; -} - -pre, code { - background-color: #f8f8f8; - color: #333; -} - -pre code { - overflow: auto; - word-wrap: normal; - white-space: pre; -} - -pre .img { - margin: 5px 0; -} - -pre .img img { - background-color: #fff; - display: block; - height: auto; -} - -code a, pre a { - color: #375f84; -} - -a.sourceLine:hover { - text-decoration: none; -} - -.fl {color: #1514b5;} -.fu {color: #000000;} /* function */ -.ch,.st {color: #036a07;} /* string */ -.kw {color: #264D66;} /* keyword */ -.co {color: #888888;} /* comment */ - -.message { color: black; font-weight: bolder;} -.error { color: orange; font-weight: bolder;} -.warning { color: #6A0366; font-weight: bolder;} - -/* Clipboard --------------------------*/ - -.hasCopyButton { - position: relative; -} - -.btn-copy-ex { - position: absolute; - right: 0; - top: 0; - visibility: hidden; -} - -.hasCopyButton:hover button.btn-copy-ex { - visibility: visible; -} - -/* headroom.js ------------------------ */ - -.headroom { - will-change: transform; - transition: transform 200ms linear; -} -.headroom--pinned { - transform: translateY(0%); -} -.headroom--unpinned { - transform: translateY(-100%); -} - -/* mark.js ----------------------------*/ - -mark { - background-color: rgba(255, 255, 51, 0.5); - border-bottom: 2px solid rgba(255, 153, 51, 0.3); - padding: 1px; -} - -/* vertical spacing after htmlwidgets */ -.html-widget { - margin-bottom: 10px; -} - -/* fontawesome ------------------------ */ - -.fab { - font-family: "Font Awesome 5 Brands" !important; -} - -/* don't display links in code chunks when printing */ -/* source: https://stackoverflow.com/a/10781533 */ -@media print { - code a:link:after, code a:visited:after { - content: ""; - } -} diff --git a/docs/dev/pkgdown.js b/docs/dev/pkgdown.js deleted file mode 100644 index 7e7048fa..00000000 --- a/docs/dev/pkgdown.js +++ /dev/null @@ -1,108 +0,0 @@ -/* http://gregfranko.com/blog/jquery-best-practices/ */ -(function($) { - $(function() { - - $('.navbar-fixed-top').headroom(); - - $('body').css('padding-top', $('.navbar').height() + 10); - $(window).resize(function(){ - $('body').css('padding-top', $('.navbar').height() + 10); - }); - - $('[data-toggle="tooltip"]').tooltip(); - - var cur_path = paths(location.pathname); - var links = $("#navbar ul li a"); - var max_length = -1; - var pos = -1; - for (var i = 0; i < links.length; i++) { - if (links[i].getAttribute("href") === "#") - continue; - // Ignore external links - if (links[i].host !== location.host) - continue; - - var nav_path = paths(links[i].pathname); - - var length = prefix_length(nav_path, cur_path); - if (length > max_length) { - max_length = length; - pos = i; - } - } - - // Add class to parent
  • , and enclosing
  • if in dropdown - if (pos >= 0) { - var menu_anchor = $(links[pos]); - menu_anchor.parent().addClass("active"); - menu_anchor.closest("li.dropdown").addClass("active"); - } - }); - - function paths(pathname) { - var pieces = pathname.split("/"); - pieces.shift(); // always starts with / - - var end = pieces[pieces.length - 1]; - if (end === "index.html" || end === "") - pieces.pop(); - return(pieces); - } - - // Returns -1 if not found - function prefix_length(needle, haystack) { - if (needle.length > haystack.length) - return(-1); - - // Special case for length-0 haystack, since for loop won't run - if (haystack.length === 0) { - return(needle.length === 0 ? 0 : -1); - } - - for (var i = 0; i < haystack.length; i++) { - if (needle[i] != haystack[i]) - return(i); - } - - return(haystack.length); - } - - /* Clipboard --------------------------*/ - - function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-original-title'); - element.setAttribute('data-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-original-title', tooltipOriginalTitle); - } - - if(ClipboardJS.isSupported()) { - $(document).ready(function() { - var copyButton = ""; - - $(".examples, div.sourceCode").addClass("hasCopyButton"); - - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); - - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); - - // Initialize clipboard: - var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent; - } - }); - - clipboardBtnCopies.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); - - clipboardBtnCopies.on('error', function() { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); - }); - }); - } -})(window.jQuery || window.$) diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml deleted file mode 100644 index b16ffb26..00000000 --- a/docs/dev/pkgdown.yml +++ /dev/null @@ -1,20 +0,0 @@ -pandoc: 2.11.2 -pkgdown: 1.6.1 -pkgdown_sha: ~ -articles: - espn_authentication: espn_authentication.html - espn_basics: espn_basics.html - espn_getendpoint: espn_getendpoint.html - ffscrapr_caching: ffscrapr_caching.html - ffscrapr_scoringhistory: ffscrapr_scoringhistory.html - fleaflicker_basics: fleaflicker_basics.html - fleaflicker_getendpoint: fleaflicker_getendpoint.html - mfl_basics: mfl_basics.html - mfl_getendpoint: mfl_getendpoint.html - sleeper_basics: sleeper_basics.html - sleeper_getendpoint: sleeper_getendpoint.html -last_built: 2021-06-09T16:07Z -urls: - reference: ffscrapr.dynastyprocess.com/reference - article: ffscrapr.dynastyprocess.com/articles - diff --git a/docs/dev/reference/Rplot001.png b/docs/dev/reference/Rplot001.png deleted file mode 100644 index 17a358060aed2a86950757bbd25c6f92c08c458f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=9Be?5+AI5}0x7m6Z+90U4Fo@(ch>_c&H|6f zVg?3oArNM~bhqvg0|WD9PZ!6KiaBo&GBN^{G%5UFpXcEKVvd5*5Eu=C0SJK)8A6*F U7`aXvEC5;V>FVdQ&MBb@00SN#Z2$lO diff --git a/docs/dev/reference/dot-add_allplay.html b/docs/dev/reference/dot-add_allplay.html deleted file mode 100644 index af246a5d..00000000 --- a/docs/dev/reference/dot-add_allplay.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - -Add allplay from a standardised schedule output — .add_allplay • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Add allplay from a standardised schedule output

    -
    - -
    .add_allplay(schedule)
    - -

    Arguments

    -
  • - - - - - -
    schedule
      -
    • an output from ff_schedule

    • -
    - - - - - - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    - - - - - - - - - - - - diff --git a/docs/dev/reference/dot-espn_activity_map.html b/docs/dev/reference/dot-espn_activity_map.html deleted file mode 100644 index ba66a759..00000000 --- a/docs/dev/reference/dot-espn_activity_map.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - -ESPN Activity/Transaction Mapping — .espn_activity_map • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    ESPN Activity/Transaction Mapping

    -
    - -
    .espn_activity_map()
    - - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-espn_lineupslot_map.html b/docs/dev/reference/dot-espn_lineupslot_map.html deleted file mode 100644 index eec7e162..00000000 --- a/docs/dev/reference/dot-espn_lineupslot_map.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - -ESPN Lineup Slot map — .espn_lineupslot_map • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This is for the starting lineup specifically - primary positions is accessible via .espn_pos_map

    -
    - -
    .espn_lineupslot_map()
    - - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-espn_pos_map.html b/docs/dev/reference/dot-espn_pos_map.html deleted file mode 100644 index 9b1146ac..00000000 --- a/docs/dev/reference/dot-espn_pos_map.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - -ESPN Primary Position map — .espn_pos_map • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Decoded by hand - if you have an IDP ESPN league please open a GitHub issue -and pass along the league info so we can expand this.

    -
    - -
    .espn_pos_map()
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-espn_stat_map.html b/docs/dev/reference/dot-espn_stat_map.html deleted file mode 100644 index 702a48d3..00000000 --- a/docs/dev/reference/dot-espn_stat_map.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - -ESPN Stat ID map — .espn_stat_map • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    ESPN Stat ID map

    -
    - -
    .espn_stat_map()
    - - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-espn_team_map.html b/docs/dev/reference/dot-espn_team_map.html deleted file mode 100644 index 9be2ba20..00000000 --- a/docs/dev/reference/dot-espn_team_map.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - -ESPN Team ID map — .espn_team_map • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Opinionatedly conforming to DynastyProcess standards, which match to MyFantasyLeague. -Abbreviations are consistently three letters.

    -
    - -
    .espn_team_map()
    - - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-ff_clear_cache.html b/docs/dev/reference/dot-ff_clear_cache.html deleted file mode 100644 index 4d3a3817..00000000 --- a/docs/dev/reference/dot-ff_clear_cache.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -Empty Function Cache — .ff_clear_cache • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function will reset the cache for any and all ffscrapr cached functions.

    -
    - -
    .ff_clear_cache()
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-ffscrapr_clear_cache.html b/docs/dev/reference/dot-ffscrapr_clear_cache.html deleted file mode 100644 index e610d52e..00000000 --- a/docs/dev/reference/dot-ffscrapr_clear_cache.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - -Empty Function Cache — .ffscrapr_clear_cache • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function will reset the cache for any and all of these functions.

    -
    - -
    .ffscrapr_clear_cache()
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/dev/reference/dot-fn_choose_season.html b/docs/dev/reference/dot-fn_choose_season.html deleted file mode 100644 index 9802ce92..00000000 --- a/docs/dev/reference/dot-fn_choose_season.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -Choose current season — .fn_choose_season • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A helper function to return the current year if March or later, otherwise assume previous year

    -
    - -
    .fn_choose_season(date = NULL)
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-fn_drop_nulls.html b/docs/dev/reference/dot-fn_drop_nulls.html deleted file mode 100644 index 714ba16a..00000000 --- a/docs/dev/reference/dot-fn_drop_nulls.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -Drop nulls from a list/vector — .fn_drop_nulls • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Drop nulls from a list/vector

    -
    - -
    .fn_drop_nulls(x)
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-fn_set_ratelimit.html b/docs/dev/reference/dot-fn_set_ratelimit.html deleted file mode 100644 index d4df5f19..00000000 --- a/docs/dev/reference/dot-fn_set_ratelimit.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - - - -Set rate limit — .fn_set_ratelimit • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A helper function that creates a new copy of the httr::GET function and stores it -in the .ffscrapr_env hidden object

    -
    - -
    .fn_set_ratelimit(toggle = TRUE, platform, rate_number, rate_seconds)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    toggle

    a logical to turn on rate_limiting if TRUE and off if FALSE

    rate_number

    number of calls per rate_seconds

    rate_seconds

    number of seconds

    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-fn_set_useragent.html b/docs/dev/reference/dot-fn_set_useragent.html deleted file mode 100644 index abdcad6d..00000000 --- a/docs/dev/reference/dot-fn_set_useragent.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - -Set user agent — .fn_set_useragent • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Self-identifying is mostly about being polite, although MFL has a program to give verified clients more bandwidth! -See: https://www03.myfantasyleague.com/2020/csetup?C=APICLI

    -
    - -
    .fn_set_useragent(user_agent)
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-mfl_logincookie.html b/docs/dev/reference/dot-mfl_logincookie.html deleted file mode 100644 index 36c9f812..00000000 --- a/docs/dev/reference/dot-mfl_logincookie.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - -Get MFL Login Cookie — .mfl_logincookie • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Gets login cookie for MFL based on user_name/password -Docs: https://api.myfantasyleague.com/2020/api_info#login_info

    -
    - -
    .mfl_logincookie(user_name, password, season)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    user_name

    MFL user_name (as string)

    password

    MFL password (as string)

    season

    Season

    - -

    Value

    - -

    a login cookie, which should be included as a parameter in an httr GET request

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-retry_get.html b/docs/dev/reference/dot-retry_get.html deleted file mode 100644 index 778c8f5e..00000000 --- a/docs/dev/reference/dot-retry_get.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - -Create RETRY version of GET — .retry_get • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This wrapper on httr retries the httr::GET function based on best-practice heuristics

    -
    - -
    .retry_get(...)
    - -

    Arguments

    - - - - - - -
    ...

    arguments passed to httr::GET

    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-retry_post.html b/docs/dev/reference/dot-retry_post.html deleted file mode 100644 index 3d8c6e6f..00000000 --- a/docs/dev/reference/dot-retry_post.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - -Create RETRY version of POST — .retry_post • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This wrapper on httr retries the httr::POST function based on best-practice heuristics.

    -
    - -
    .retry_post(...)
    - -

    Arguments

    - - - - - - -
    ...

    arguments passed to httr::POST

    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-sleeper_matchup.html b/docs/dev/reference/dot-sleeper_matchup.html deleted file mode 100644 index 33fd63d4..00000000 --- a/docs/dev/reference/dot-sleeper_matchup.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -individual sleeper matchup — .sleeper_matchup • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    individual sleeper matchup

    -
    - -
    .sleeper_matchup(week, conn, last_scored_week)
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dot-sleeper_userid.html b/docs/dev/reference/dot-sleeper_userid.html deleted file mode 100644 index ba9da8eb..00000000 --- a/docs/dev/reference/dot-sleeper_userid.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - -Get Sleeper User ID — .sleeper_userid • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Docs: https://docs.sleeper.app

    -
    - -
    .sleeper_userid(user_name)
    - -

    Arguments

    - - - - - - -
    user_name

    Sleeper username

    - -

    Value

    - -

    sleeper userID

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dp_cleannames.html b/docs/dev/reference/dp_cleannames.html deleted file mode 100644 index 914d06ff..00000000 --- a/docs/dev/reference/dp_cleannames.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - -Clean Names — dp_cleannames • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Applies some name-cleaning heuristics to facilitate joins. These heuristics may include:

      -
    • removing periods and apostrophes

    • -
    • removing common suffixes, such as Jr, Sr, II, III, IV

    • -
    • converting to lowercase

    • -
    • using dp_name_mapping to do common name substitutions, such as Mitch Trubisky to Mitchell Trubisky

    • -
    - -
    - -
    dp_cleannames(
    -  player_name,
    -  lowercase = FALSE,
    -  convert_lastfirst = FALSE,
    -  use_name_database = TRUE
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    player_name

    a character (or character vector)

    lowercase

    defaults to FALSE - if TRUE, converts to lowercase

    convert_lastfirst

    converts names from "Last, First" to "First Last" (i.e. MFL style)

    use_name_database

    uses internal name database to do common substitutions (Mitchell Trubisky to Mitch Trubisky etc)

    - -

    Value

    - -

    a character vector of cleaned names

    -

    See also

    - -

    dp_name_mapping

    - -

    Examples

    -
    # \donttest{ -dp_cleannames(c("A.J. Green", "Odell Beckham Jr.", "Le'Veon Bell Sr.")) -
    #> [1] "AJ Green" "Odell Beckham" "LeVeon Bell"
    -dp_cleannames(c("Trubisky, Mitch", "Atwell, Chatarius", "Elliott, Zeke", "Elijah Moore"), - convert_lastfirst = TRUE, - use_name_database = TRUE) -
    #> [1] "Mitchell Trubisky" "Tutu Atwell" "Ezekiel Elliott" -#> [4] "Elijah Moore"
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dp_name_mapping.html b/docs/dev/reference/dp_name_mapping.html deleted file mode 100644 index 0154328b..00000000 --- a/docs/dev/reference/dp_name_mapping.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - -Alternate name mappings — dp_name_mapping • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A named character vector mapping common alternate names

    -
    - -
    dp_name_mapping
    - - -

    Format

    - -

    A named character vector

    -
    name attribute

    The "alternate" name.

    -
    value attribute

    The "correct" name.

    - -
    - - -

    Examples

    -
    # \donttest{ -dp_name_mapping[c("Chatarius Atwell", "Robert Kelley")] -
    #> Chatarius Atwell Robert Kelley -#> "Tutu Atwell" "Rob Kelley"
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dp_playerids.html b/docs/dev/reference/dp_playerids.html deleted file mode 100644 index 8048b476..00000000 --- a/docs/dev/reference/dp_playerids.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - -Import latest DynastyProcess player IDs — dp_playerids • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of the latest DynastyProcess player IDs csv

    -
    - -
    dp_playerids()
    - - -

    Value

    - -

    a tibble of player IDs

    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -dp_playerids() -
    #> # A tibble: 10,512 x 31 -#> mfl_id sportradar_id fantasypros_id gsis_id pff_id sleeper_id nfl_id espn_id -#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 15237 aaa8b42c-4d87~ 19780 NA NA 7523 NA NA -#> 2 15238 cf15be8f-9117~ 19781 NA NA 7591 NA NA -#> 3 15239 17bb63b1-1b0e~ 22679 NA NA 7538 NA NA -#> 4 15240 676a508c-c65f~ 20082 NA NA 7610 NA NA -#> 5 15241 1fd00ec3-b758~ 20156 NA NA 7527 NA NA -#> 6 15242 13038760-a019~ 19800 NA NA 7605 NA NA -#> 7 15243 631e6ad5-0a97~ 19383 NA NA 7581 NA NA -#> 8 15244 NA NA NA NA NA NA NA -#> 9 15245 22fd9495-1745~ 19785 NA NA 7555 NA NA -#> 10 15246 0d3113f7-2a82~ 20159 NA NA 7589 NA NA -#> # ... with 10,502 more rows, and 23 more variables: yahoo_id <chr>, -#> # fleaflicker_id <chr>, cbs_id <chr>, rotowire_id <chr>, rotoworld_id <chr>, -#> # ktc_id <chr>, pfr_id <chr>, cfbref_id <chr>, stats_id <chr>, -#> # stats_global_id <chr>, fantasy_data_id <chr>, name <chr>, merge_name <chr>, -#> # position <chr>, team <chr>, birthdate <chr>, age <dbl>, draft_year <int>, -#> # draft_round <int>, draft_pick <int>, draft_ovr <int>, -#> # twitter_username <chr>, db_season <int>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/dp_values.html b/docs/dev/reference/dp_values.html deleted file mode 100644 index d29499ed..00000000 --- a/docs/dev/reference/dp_values.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - -Import latest DynastyProcess values — dp_values • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of the latest DynastyProcess dynasty trade values sheets

    -
    - -
    dp_values(file = c("values.csv", "values-players.csv", "values-picks.csv"))
    - -

    Arguments

    - - - - - - -
    file

    one of c("values.csv","values-players.csv","values-picks.csv")

    - -

    Value

    - -

    a tibble of trade values from DynastyProcess

    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -dp_values() -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/espn_connect.html b/docs/dev/reference/espn_connect.html deleted file mode 100644 index 1ca044da..00000000 --- a/docs/dev/reference/espn_connect.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - -Connect to ESPN League — espn_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and a user ID if available.

    -
    - -
    espn_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  swid = NULL,
    -  espn_s2 = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on Fleaflicker - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID

    swid

    SWID parameter for accessing private leagues - see vignette for details

    espn_s2

    ESPN_S2 parameter for accessing private leagues - see vignette for details

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is under 1000 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    other arguments (for other methods, for R compat)

    - -

    Value

    - -

    a list that stores ESPN connection objects

    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect( - season = 2018, - league_id = 1178049, - espn_s2 = Sys.getenv("TAN_ESPN_S2"), - swid = Sys.getenv("TAN_SWID") -) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/espn_getendpoint.html b/docs/dev/reference/espn_getendpoint.html deleted file mode 100644 index ca0b49e0..00000000 --- a/docs/dev/reference/espn_getendpoint.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - -GET ESPN fantasy league endpoint — espn_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function is used to call the ESPN Fantasy API for league-based endpoints.

    -
    - -
    espn_getendpoint(conn, ..., x_fantasy_filter = NULL)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a connection object created by espn_connect or ff_connect()

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    x_fantasy_filter

    a JSON-encoded character string that specifies a filter for the data

    - -

    Value

    - -

    A list object containing the query, response, and parsed content.

    -

    Details

    - -

    The ESPN Fantasy API is undocumented and this should be used by advanced users -familiar with the API.

    -

    It chooses the correct league endpoint based on the year (eg leagueHistory -for <2018), checks the x_fantasy_filter for valid JSON input, builds a url -with any optional query parameters, and executes the request with authentication -and rate limiting.

    -

    HTTP query parameters (i.e. arguments to ...) are Case Sensitive.

    -

    Please see the vignette for more on usage.

    -

    See also

    - -

    vignette("espn_getendpoint")

    -

    espn_getendpoint_raw

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/espn_getendpoint_raw.html b/docs/dev/reference/espn_getendpoint_raw.html deleted file mode 100644 index ea33ea34..00000000 --- a/docs/dev/reference/espn_getendpoint_raw.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - - -GET ESPN endpoint (raw) — espn_getendpoint_raw • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function is the lower-level function that powers the API call: -it takes a URL and headers and executes the http request with rate-limiting -and authentication. It checks for JSON return and any warnings/errors, -parses the json, and returns an espn_api object with the parsed content, -the raw response, and the actual query.

    -
    - -
    espn_getendpoint_raw(conn, url_query, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a connection object created by ff_connect or equivalent - used for authentication

    url_query

    a fully-formed URL to call

    ...

    any headers or other httr request objects to pass along

    - -

    Value

    - -

    object of class espn_api with parsed content, request, and response

    -

    See also

    - -

    espn_getendpoint() - a higher level wrapper that checks JSON and prepares the url query

    -

    vignette("espn_getendpoint")

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/espn_players.html b/docs/dev/reference/espn_players.html deleted file mode 100644 index 1bbcdbf5..00000000 --- a/docs/dev/reference/espn_players.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - -ESPN players library — espn_players • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A cached table of ESPN NFL players. Will store in memory for each session! -(via memoise in zzz.R)

    -
    - -
    espn_players(conn = NULL, season = NULL)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    a connection object created by espn_connect or ff_connect()

    season

    a season to fetch

    - -

    Value

    - -

    a dataframe containing all ~2000+ active players in the ESPN database

    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 1178049) - -player_list <- espn_players(conn, season = 2020) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/espn_potentialpoints.html b/docs/dev/reference/espn_potentialpoints.html deleted file mode 100644 index 5b0c257e..00000000 --- a/docs/dev/reference/espn_potentialpoints.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - -ESPN Potential Points — espn_potentialpoints • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function calculates the optimal starters for a given week, using some lineup heuristics.

    -
    - -
    espn_potentialpoints(conn, weeks = 1:17)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    weeks

    a numeric vector for determining which weeks to calculate

    - -

    Value

    - -

    a tibble with the best lineup for each team and whether they were started or not

    - -

    Examples

    -
    # \donttest{ - -conn <- espn_connect(season = 2020, league_id = 899513) -espn_potentialpoints(conn, weeks = 1:3) -
    #> # A tibble: 666 x 11 -#> week franchise_id franchise_name franchise_score optimal_slot actual_slot -#> <int> <int> <chr> <dbl> <chr> <chr> -#> 1 1 1 The Early GGod 102. QB OP -#> 2 1 1 The Early GGod 102. RB BE -#> 3 1 1 The Early GGod 102. RB RB -#> 4 1 1 The Early GGod 102. WR BE -#> 5 1 1 The Early GGod 102. WR BE -#> 6 1 1 The Early GGod 102. TE BE -#> 7 1 1 The Early GGod 102. OP WR -#> 8 1 1 The Early GGod 102. DST DST -#> 9 1 1 The Early GGod 102. K K -#> 10 1 1 The Early GGod 102. RB/WR/TE BE -#> # ... with 656 more rows, and 5 more variables: player_score <dbl>, -#> # player_name <chr>, player_pos <chr>, team <chr>, player_id <int>
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_connect.html b/docs/dev/reference/ff_connect.html deleted file mode 100644 index b20f8dd4..00000000 --- a/docs/dev/reference/ff_connect.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - -Connect to a League — ff_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and gets a login-cookie if available - it does so by passing arguments to the appropriate league-based handler.

    -
    - -
    ff_connect(platform = "mfl", league_id = NULL, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    platform

    one of MFL or Sleeper (Fleaflicker, ESPN, Yahoo in approximate priority order going forward)

    league_id

    league_id (currently assuming one league at a time)

    ...

    other parameters passed to the connect function for each specific platform.

    - -

    Value

    - -

    a connection object to be used with ff_* functions

    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -ff_connect(platform = "mfl", season = 2019, league_id = 54040, rate_limit = FALSE) -
    #> <MFL connection 2019_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2019 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_draft.html b/docs/dev/reference/ff_draft.html deleted file mode 100644 index b74ea019..00000000 --- a/docs/dev/reference/ff_draft.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - - - - - -Get Draft Results — ff_draft • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function gets a tidy dataframe of draft results for the current year. -Can handle MFL devy drafts or startup drafts by specifying the custom_players argument

    -
    - -
    ff_draft(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_draft(conn, ...)
    -
    -# S3 method for flea_conn
    -ff_draft(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_draft(conn, custom_players = deprecated(), ...)
    -
    -# S3 method for sleeper_conn
    -ff_draft(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    args for other methods

    custom_players

    [Deprecated] - now returns custom players by default

    - -

    Value

    - -

    A tidy dataframe of draft results

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns the current year's draft/auction, including details on keepers

    • -
    • flea_conn: Fleaflicker: returns a table of drafts for the current year

    • -
    • mfl_conn: MFL: returns a table of drafts for the current year - can handle devy/startup-rookie-picks by specifying custom_players (slower!)

    • -
    • sleeper_conn: Sleeper: returns a dataframe of all drafts and draft selections, if available.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 899513) -ff_draft(conn) -
    #> # A tibble: 220 x 21 -#> round pick overall franchise_id franchise_name user_nickname player_id -#> <int> <int> <int> <int> <chr> <chr> <int> -#> 1 1 1 1 9 "RAFI CUNADO" Brandon11598 3120348 -#> 2 1 2 2 5 "The Juggernaut" longhorn0010 4047646 -#> 3 1 3 3 1 "The Early GGod" dachosenJuan~ 2977644 -#> 4 1 4 4 4 "I'm Also Sad " Ciavalen5th 3121422 -#> 5 1 5 5 8 "Big Coomers" Zarkoa -16033 -#> 6 1 6 6 3 "PAKI STANS" erodriguezk 3122840 -#> 7 1 7 7 2 "Coom Dumpster" mfespinosaIV 16800 -#> 8 1 8 8 6 "OBJ's Personal Por~ drake iz yoda 15683 -#> 9 1 9 9 10 "Austin \U0001f410D~ espn14856151 14880 -#> 10 1 10 10 7 "Tony El Tigre" anthon8821581 2573079 -#> # ... with 210 more rows, and 14 more variables: player_name <chr>, pos <chr>, -#> # team <chr>, bid_amount <int>, nominating_team_id <int>, is_keeper <lgl>, -#> # can_keeper <lgl>, autodraft_type <int>, complete_date <dttm>, -#> # in_progress <lgl>, pick_id <int>, drafted <lgl>, lineupSlotId <int>, -#> # tradeLocked <lgl>
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 206154) -ff_draft(conn) -
    #> # A tibble: 80 x 9 -#> round pick overall franchise_id franchise_name player_id player_name pos -#> <int> <int> <int> <int> <chr> <int> <chr> <chr> -#> 1 1 1 1 1373970 Bamenda Herd 15539 Clyde Edwar~ RB -#> 2 1 2 2 1374252 Central City C~ 15604 Jonathan Ta~ RB -#> 3 1 3 3 1373991 Top City Terro~ 15523 CeeDee Lamb WR -#> 4 1 4 4 1374315 Shanghai Commu~ 15555 J.K. Dobbins RB -#> 5 1 5 5 1374271 Clutch City Ba~ 15601 D'Andre Swi~ RB -#> 6 1 6 6 1374271 Clutch City Ba~ 15563 Cam Akers RB -#> 7 1 7 7 1373883 Manitoba Marmo~ 15540 Justin Jeff~ WR -#> 8 1 8 8 1373973 Red River Land~ 15544 Jerry Jeudy WR -#> 9 1 9 9 1374271 Clutch City Ba~ 15537 Chase Young EDR -#> 10 1 10 10 1373535 Winterthur Ang~ 15620 Ke'Shawn Va~ RB -#> # ... with 70 more rows, and 1 more variable: team <chr>
    # } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_draft(ssb_conn) -
    #> # A tibble: 90 x 11 -#> timestamp round pick overall franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <int> <chr> <chr> <chr> -#> 1 2021-02-08 18:52:22 01 01 1 0014 Team Luigi 11244 -#> 2 2021-02-08 19:20:07 01 02 2 0003 Team Donkey K~ 14073 -#> 3 2021-02-08 20:01:16 01 03 3 0008 Team Bowser 11678 -#> 4 2021-02-08 20:01:30 02 01 4 0008 Team Bowser 13131 -#> 5 2021-02-08 20:12:30 02 02 5 0003 Team Donkey K~ 11671 -#> 6 2021-02-09 02:55:39 02 03 6 0012 Team Mewtwo 13593 -#> 7 2021-02-09 03:09:50 03 01 7 0014 Team Luigi 0829 -#> 8 2021-02-09 03:12:44 03 02 8 0003 Team Donkey K~ 11222 -#> 9 2021-02-09 03:22:50 03 03 9 0008 Team Bowser 14208 -#> 10 2021-02-09 03:23:01 04 01 10 0008 Team Bowser 13156 -#> # ... with 80 more rows, and 4 more variables: player_name <chr>, pos <chr>, -#> # age <dbl>, team <chr>
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_draft(jml_conn) -
    #> # A tibble: 48 x 13 -#> draft_id status type season round pick franchise_id franchise_name -#> <chr> <chr> <chr> <chr> <int> <int> <int> <chr> -#> 1 5224587733212~ complete line~ 2020 1 1 4 The FANTom Men~ -#> 2 5224587733212~ complete line~ 2020 1 2 5 Barbarians -#> 3 5224587733212~ complete line~ 2020 1 3 11 Permian Panthe~ -#> 4 5224587733212~ complete line~ 2020 1 4 2 KingGabe -#> 5 5224587733212~ complete line~ 2020 1 5 8 Hocka Flocka -#> 6 5224587733212~ complete line~ 2020 1 6 2 KingGabe -#> 7 5224587733212~ complete line~ 2020 1 7 2 KingGabe -#> 8 5224587733212~ complete line~ 2020 1 8 2 KingGabe -#> 9 5224587733212~ complete line~ 2020 1 9 6 sox05syd -#> 10 5224587733212~ complete line~ 2020 1 10 9 ZPMiller97 -#> # ... with 38 more rows, and 5 more variables: player_id <chr>, -#> # player_name <chr>, pos <chr>, age <dbl>, team <chr>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_draftpicks.html b/docs/dev/reference/ff_draftpicks.html deleted file mode 100644 index 69e0b85a..00000000 --- a/docs/dev/reference/ff_draftpicks.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - -Get Draft Picks — ff_draftpicks • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Returns all draft picks (current and future) that belong to a specific franchise and have not yet been converted into players (i.e. selected.)

    -
    - -
    ff_draftpicks(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_draftpicks(conn, ...)
    -
    -# S3 method for flea_conn
    -ff_draftpicks(conn, franchise_id = NULL, ...)
    -
    -# S3 method for mfl_conn
    -ff_draftpicks(conn, ...)
    -
    -# S3 method for sleeper_conn
    -ff_draftpicks(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    franchise_id

    A list of franchise IDs to pull, if NULL will return all franchise IDs

    - -

    Value

    - -

    Returns a dataframe with current and future draft picks for each franchise

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: does not support future/draft pick trades - for draft results, please use ff_draft.

    • -
    • flea_conn: Fleaflicker: retrieves current and future draft picks, potentially for a specified team.

    • -
    • mfl_conn: MFL: returns current and future picks

    • -
    • sleeper_conn: Sleeper: retrieves current and future draft picks

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect( - season = 2018, - league_id = 1178049, - espn_s2 = Sys.getenv("TAN_ESPN_S2"), - swid = Sys.getenv("TAN_SWID") -) - -ff_draftpicks(conn) -
    #> Warning: ESPN does not support draft pick trades. For draft results, please use ff_draft()
    #> NULL
    # } - -# \donttest{ -conn <- fleaflicker_connect(2020, 206154) -ff_draftpicks(conn, franchise_id = 1373475) -# } - -# \donttest{ -dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_draftpicks(conn = dlf_conn) -
    #> # A tibble: 80 x 5 -#> season franchise_id franchise_name round original_franchise_id -#> <dbl> <chr> <chr> <dbl> <chr> -#> 1 2021 0001 @dibari22 1 0001 -#> 2 2021 0001 @dibari22 2 0001 -#> 3 2021 0001 @dibari22 3 0001 -#> 4 2021 0001 @dibari22 5 0001 -#> 5 2021 0001 @dibari22 2 0009 -#> 6 2021 0002 OPEN 1 0002 -#> 7 2021 0002 OPEN 2 0002 -#> 8 2021 0002 OPEN 3 0002 -#> 9 2021 0002 OPEN 4 0002 -#> 10 2021 0002 OPEN 5 0002 -#> # ... with 70 more rows
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_draftpicks(jml_conn) -
    #> # A tibble: 144 x 5 -#> season franchise_id franchise_name round original_franchise_id -#> <chr> <int> <chr> <int> <int> -#> 1 2021 1 Fake News 3 1 -#> 2 2021 1 Fake News 4 1 -#> 3 2022 1 Fake News 2 1 -#> 4 2022 1 Fake News 3 1 -#> 5 2022 1 Fake News 4 1 -#> 6 2023 1 Fake News 1 1 -#> 7 2023 1 Fake News 2 1 -#> 8 2023 1 Fake News 3 1 -#> 9 2023 1 Fake News 4 1 -#> 10 2021 2 KingGabe 1 2 -#> # ... with 134 more rows
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_franchises.html b/docs/dev/reference/ff_franchises.html deleted file mode 100644 index 011c68c4..00000000 --- a/docs/dev/reference/ff_franchises.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - - -Get League Franchises — ff_franchises • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Return franchise-level data (including divisions, usernames, etc) - available data may vary slightly based on platform.

    -
    - -
    ff_franchises(conn)
    -
    -# S3 method for espn_conn
    -ff_franchises(conn)
    -
    -# S3 method for flea_conn
    -ff_franchises(conn)
    -
    -# S3 method for mfl_conn
    -ff_franchises(conn)
    -
    -# S3 method for sleeper_conn
    -ff_franchises(conn)
    - -

    Arguments

    - - - - - - -
    conn

    a conn object created by ff_connect()

    - -

    Value

    - -

    A tidy dataframe of franchises, complete with IDs

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns franchise and division information.

    • -
    • flea_conn: Fleaflicker: returns franchise and division information.

    • -
    • mfl_conn: MFL: returns franchise and division information.

    • -
    • sleeper_conn: Sleeper: retrieves a list of franchise information, including user IDs and co-owner IDs.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 1178049) - -ff_franchises(conn) -
    #> # A tibble: 14 x 8 -#> franchise_id franchise_name franchise_abbrev logo waiver_order user_id -#> <int> <chr> <chr> <chr> <int> <chr> -#> 1 1 Rushin' Collus~ RC https://~ 3 {6CE354~ -#> 2 2 Gurleys Gone W~ GGW https://~ 6 {74ADB5~ -#> 3 3 The Name's Mage Mage http://i~ 12 {141C9C~ -#> 4 4 dlp:: thoriyan thor https://~ 5 {1E6BB1~ -#> 5 5 No Ultrasmurfs~ ALH http://m~ 9 {E88F51~ -#> 6 6 Dak Street Boys DSB https://~ 11 {441A52~ -#> 7 7 Kung-Fu Kenny KDOT https://~ 10 {C60506~ -#> 8 8 Sticky Simians LEL https://~ 4 {599F7D~ -#> 9 9 The Wright Stu~ TWS NA 8 {F831BD~ -#> 10 10 Too Many Cooks COOK https://~ 7 {C9AE3C~ -#> 11 11 Team Typhon TYPH https://~ 14 {070C02~ -#> 12 12 Homicidal Hicks HH http://3~ 1 {CBF269~ -#> 13 13 Baby You Can D~ POKE http://v~ 13 {A5DC83~ -#> 14 14 Boralus Booty BB https://~ 2 {1778DE~ -#> # ... with 2 more variables: user_name <chr>, user_nickname <chr>
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 206154) -ff_franchises(conn) -
    #> # A tibble: 16 x 10 -#> division_id division_name franchise_id franchise_name franchise_logo -#> <int> <chr> <int> <chr> <chr> -#> 1 606681 JDL North 1371776 Winter Hill Blac~ https://s3.amazonaw~ -#> 2 606681 JDL North 1373973 Red River Land T~ https://s3.amazonaw~ -#> 3 606681 JDL North 1373501 Midgard Gallows https://s3.amazonaw~ -#> 4 606681 JDL North 1373991 Top City Terrors https://s3.amazonaw~ -#> 5 606682 JDL East 1374255 Mushroom City Ka~ https://s3.amazonaw~ -#> 6 606682 JDL East 1373475 Winterfell Dire ~ https://s3.amazonaw~ -#> 7 606682 JDL East 1373480 Goldenrod City N~ https://s3.amazonaw~ -#> 8 606682 JDL East 1374252 Central City Cru~ https://s3.amazonaw~ -#> 9 606683 JDL South 1373970 Bamenda Herd https://s3.amazonaw~ -#> 10 606683 JDL South 1374271 Clutch City Ball~ https://s3.amazonaw~ -#> 11 606683 JDL South 1374315 Shanghai Communi~ NA -#> 12 606683 JDL South 1373993 Boomtown Sly Fox~ https://s3.amazonaw~ -#> 13 606684 JDL West 1373393 Philadelphia Fire https://s3.amazonaw~ -#> 14 606684 JDL West 1373535 Winterthur Angry~ https://s3.amazonaw~ -#> 15 606684 JDL West 1373883 Manitoba Marmots NA -#> 16 606684 JDL West 1373988 Springfield Isot~ https://s3.amazonaw~ -#> # ... with 5 more variables: franchise_abbrev <chr>, user_id <int>, -#> # user_name <chr>, user_avatar <chr>, user_lastlogin <dttm>
    # } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_franchises(ssb_conn) -
    #> # A tibble: 14 x 7 -#> franchise_id franchise_name logo icon abbrev bbidAvailableBa~ -#> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 0001 Team Pikachu https://i.i~ https://i.~ PIKA 159.00 -#> 2 0002 Team Simon Bel~ https://i.i~ https://i.~ SIMN 99.00 -#> 3 0003 Team Donkey Ko~ https://i.i~ https://i.~ DK 50.00 -#> 4 0004 Team Ice Climb~ https://i.i~ https://i.~ ICE 0.00 -#> 5 0005 Team Dr. Mario https://i.i~ https://i.~ DRM 84.00 -#> 6 0006 Team King Dede~ https://i.i~ https://i.~ KDDD 87.00 -#> 7 0007 Team Kirby https://i.i~ https://i.~ KRBY 40.00 -#> 8 0008 Team Bowser https://i.i~ https://i.~ BWSR 0.00 -#> 9 0009 Team Link https://i.i~ https://i.~ LINK 81.00 -#> 10 0010 Team Yoshi https://i.i~ https://i.~ YSHI 0.00 -#> 11 0011 Team Diddy Kong https://i.i~ https://i.~ DDY 173.00 -#> 12 0012 Team Mewtwo https://i.i~ https://i.~ MEW2 0.00 -#> 13 0013 Team Ness https://i.i~ https://i.~ NESS 0.00 -#> 14 0014 Team Luigi https://i.i~ https://i.~ LUIG 0.00 -#> # ... with 1 more variable: waiverSortOrder <chr>
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_franchises(jml_conn) -
    #> # A tibble: 12 x 5 -#> franchise_id franchise_name user_name user_id co_owners -#> <int> <chr> <chr> <chr> <list> -#> 1 1 Fake News Jcurtis44 70729037081100288 <NULL> -#> 2 2 KingGabe KingGabe 76686532077305856 <NULL> -#> 3 3 solarpool solarpool 202892038360801280 <NULL> -#> 4 4 The FANTom Menace weeknee 202882046337490944 <NULL> -#> 5 5 Barbarians ABitterHomer 386383436639973376 <NULL> -#> 6 6 sox05syd sox05syd 409797051455393792 <NULL> -#> 7 7 Flipadelphia05 Flipadelphia05 386950378371207168 <NULL> -#> 8 8 Hocka Flocka TwoFrames 386976568364306432 <NULL> -#> 9 9 ZPMiller97 ZPMiller97 386571720443764736 <NULL> -#> 10 10 JMLarkin JMLarkin 387070108625039360 <NULL> -#> 11 11 Permian Panthers theoracleETS 198540145396289536 <list [1]> -#> 12 12 jaydk jaydk 401485903224193024 <NULL>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_league.html b/docs/dev/reference/ff_league.html deleted file mode 100644 index 427d1b64..00000000 --- a/docs/dev/reference/ff_league.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - -Get League Summary — ff_league • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe of common league settings, including details like "1QB" or "2QB/SF", scoring, best ball, team count, IDP etc. This is potentially useful in summarising the features of multiple leagues.

    -
    - -
    ff_league(conn)
    -
    -# S3 method for espn_conn
    -ff_league(conn)
    -
    -# S3 method for flea_conn
    -ff_league(conn)
    -
    -# S3 method for mfl_conn
    -ff_league(conn)
    -
    -# S3 method for sleeper_conn
    -ff_league(conn)
    - -

    Arguments

    - - - - - - -
    conn

    the connection object created by ff_connect()

    - -

    Value

    - -

    A one-row summary of each league's main features.

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns a summary of league features.

    • -
    • flea_conn: Flea: returns a summary of league features.

    • -
    • mfl_conn: MFL: returns a summary of league features.

    • -
    • sleeper_conn: Sleeper: returns a summary of league features.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 899513) -ff_league(conn) -
    #> # A tibble: 1 x 16 -#> league_id league_name season league_type franchise_count qb_type idp -#> <chr> <chr> <int> <chr> <int> <chr> <lgl> -#> 1 899513 Sucio Boys 2020 keeper 10 2QB/SF FALSE -#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, -#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, -#> # roster_size <int>, league_depth <dbl>, keeper_count <int>
    # } - -# \donttest{ -conn <- fleaflicker_connect(2020, 206154) -ff_league(conn) -
    #> # A tibble: 1 x 15 -#> league_id league_name season league_type franchise_count qb_type idp -#> <chr> <chr> <int> <chr> <dbl> <chr> <lgl> -#> 1 206154 Jackpot Dynasty Le~ 2020 dynasty 16 1QB TRUE -#> # ... with 8 more variables: scoring_flags <chr>, best_ball <lgl>, -#> # salary_cap <lgl>, player_copies <dbl>, qb_count <chr>, roster_size <int>, -#> # league_depth <dbl>, keeper_count <int>
    # } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_league(ssb_conn) -
    #> # A tibble: 1 x 14 -#> league_id league_name season franchise_count qb_type idp scoring_flags -#> <chr> <chr> <int> <dbl> <chr> <lgl> <chr> -#> 1 54040 The Super Smash~ 2020 14 1QB FALSE 0.5_ppr, TEPr~ -#> # ... with 7 more variables: best_ball <lgl>, salary_cap <lgl>, -#> # player_copies <dbl>, years_active <chr>, qb_count <chr>, roster_size <dbl>, -#> # league_depth <dbl>
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_league(jml_conn) -
    #> # A tibble: 1 x 16 -#> league_id league_name season league_type franchise_count qb_type idp -#> <chr> <chr> <int> <chr> <dbl> <chr> <lgl> -#> 1 52245877331~ The JanMichaelL~ 2020 dynasty 12 1QB FALSE -#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, -#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, -#> # roster_size <int>, league_depth <dbl>, prev_league_ids <chr>
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_playerscores.html b/docs/dev/reference/ff_playerscores.html deleted file mode 100644 index f6a5e755..00000000 --- a/docs/dev/reference/ff_playerscores.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - -Get Player Scoring History — ff_playerscores • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe of player scores based on league rules.

    -

    Unfortunately, Sleeper has deprecated their player stats endpoint from their supported/open API. -Please see ff_scoringhistory() for an alternative reconstruction.

    -
    - -
    ff_playerscores(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_playerscores(conn, limit = 1000, ...)
    -
    -# S3 method for flea_conn
    -ff_playerscores(conn, page_limit = NULL, ...)
    -
    -# S3 method for mfl_conn
    -ff_playerscores(conn, season, week, ...)
    -
    -# S3 method for sleeper_conn
    -ff_playerscores(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    limit

    A numeric describing the number of players to return - default 1000

    page_limit

    A numeric describing the number of pages to return - default NULL returns all available

    season

    the season of interest - generally only the most recent 2-3 seasons are available

    week

    a numeric vector (ie 1:17) or one of YTD (year-to-date) or AVG (average to date)

    - -

    Value

    - -

    A tibble of historical player scoring

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns total points for season and average per game, for both current and previous season.

    • -
    • flea_conn: Fleaflicker: returns the season, season average, and standard deviation

    • -
    • mfl_conn: MFL: returns the player fantasy scores for each week (not the actual stats)

    • -
    • sleeper_conn: Sleeper: Deprecated their open API endpoint for player scores

    • -
    -

    See also

    - -

    ff_scoringhistory

    - -

    Examples

    -
    # \donttest{ - -conn <- espn_connect(season = 2020, league_id = 899513) -ff_playerscores(conn, limit = 5) -
    #> # A tibble: 5 x 8 -#> season player_id player_name pos score_total score_average franchise_id -#> <int> <int> <chr> <chr> <dbl> <dbl> <int> -#> 1 2020 3054850 Alvin Kamara RB 337. 22.5 9 -#> 2 2020 3043078 Derrick Henry RB 324. 20.2 4 -#> 3 2020 16800 Davante Adams WR 301. 21.5 2 -#> 4 2020 15795 DeAndre Hopkins WR 230. 14.4 4 -#> 5 2020 2576925 Darren Waller TE 225. 14.1 4 -#> # ... with 1 more variable: franchise_name <chr>
    # } -# \donttest{ - -conn <- fleaflicker_connect(2020, 312861) -x <- ff_playerscores(conn, page_limit = 2) -x -
    #> # A tibble: 60 x 8 -#> player_id player_name pos team games score_total score_avg score_sd -#> <int> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 13761 Josh Allen QB BUF 16 550. 34.4 10.4 -#> 2 3452 Aaron Rodgers QB GB 16 542. 33.8 8.49 -#> 3 12894 Patrick Mahomes QB KC 15 520. 34.6 9.95 -#> 4 8598 Russell Wilson QB SEA 16 513. 32.1 10.8 -#> 5 14664 Kyler Murray QB ARI 16 507. 31.7 11.9 -#> 6 12919 Deshaun Watson QB HOU 16 503. 31.5 7.96 -#> 7 309 Tom Brady QB TB 16 488. 30.5 12.2 -#> 8 8514 Ryan Tannehill QB TEN 16 469. 29.3 9.76 -#> 9 15516 Justin Herbert QB LAC 15 459. 30.6 9.67 -#> 10 8625 Kirk Cousins QB MIN 16 446. 27.9 9.8 -#> # ... with 50 more rows
    # } -# \donttest{ -sfb_conn <- mfl_connect(2020, league_id = 65443) -ff_playerscores(conn = sfb_conn, season = 2019, week = "YTD") -
    #> # A tibble: 589 x 8 -#> season week player_id player_name pos team points is_available -#> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <chr> -#> 1 2019 YTD 13593 Jackson, Lamar QB BAL 489. 1 -#> 2 2019 YTD 13130 McCaffrey, Christian RB CAR 447. 1 -#> 3 2019 YTD 12652 Thomas, Michael WR NOS 338. 1 -#> 4 2019 YTD 13113 Watson, Deshaun QB HOU 330. 1 -#> 5 2019 YTD 11244 Kelce, Travis TE KCC 317. 1 -#> 6 2019 YTD 10703 Wilson, Russell QB SEA 315. 1 -#> 7 2019 YTD 12620 Prescott, Dak QB DAL 314. 1 -#> 8 2019 YTD 13128 Cook, Dalvin RB MIN 313. 1 -#> 9 2019 YTD 13319 Jones, Aaron RB GBP 312 1 -#> 10 2019 YTD 12625 Elliott, Ezekiel RB DAL 309. 1 -#> # ... with 579 more rows
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_rosters.html b/docs/dev/reference/ff_rosters.html deleted file mode 100644 index deaa75d9..00000000 --- a/docs/dev/reference/ff_rosters.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - -Get League Rosters — ff_rosters • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe of team rosters

    -
    - -
    ff_rosters(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_rosters(conn, week = NULL, ...)
    -
    -# S3 method for flea_conn
    -ff_rosters(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_rosters(conn, custom_players = deprecated(), week = NULL, ...)
    -
    -# S3 method for sleeper_conn
    -ff_rosters(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    arguments passed to other methods (currently none)

    week

    a numeric that specifies which week to return

    custom_players

    [Deprecated] - now returns custom players by default

    - -

    Value

    - -

    A tidy dataframe of rosters, joined to basic player information and basic franchise information

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: Returns all roster data.

    • -
    • flea_conn: Fleaflicker: Returns roster data (minus age as of right now)

    • -
    • mfl_conn: MFL: returns roster data

    • -
    • sleeper_conn: Sleeper: Returns all roster data.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 899513) -ff_league(conn) -
    #> # A tibble: 1 x 16 -#> league_id league_name season league_type franchise_count qb_type idp -#> <chr> <chr> <int> <chr> <int> <chr> <lgl> -#> 1 899513 Sucio Boys 2020 keeper 10 2QB/SF FALSE -#> # ... with 9 more variables: scoring_flags <chr>, best_ball <lgl>, -#> # salary_cap <lgl>, player_copies <dbl>, years_active <chr>, qb_count <chr>, -#> # roster_size <int>, league_depth <dbl>, keeper_count <int>
    # } -# \donttest{ -joe_conn <- ff_connect(platform = "fleaflicker", league_id = 312861, season = 2020) -ff_rosters(joe_conn) -
    #> # A tibble: 282 x 7 -#> franchise_id franchise_name player_id player_name pos team sportradar_id -#> <int> <chr> <int> <chr> <chr> <chr> <chr> -#> 1 1578553 Running Bear 12032 Carson Wentz QB IND e9a5c16b-4472~ -#> 2 1578553 Running Bear 12159 Dak Prescott QB DAL 86197778-8d4b~ -#> 3 1578553 Running Bear 13325 Austin Ekel~ RB LAC e5b8c439-a48a~ -#> 4 1578553 Running Bear 12926 Chris Godwin WR TB baa61bb5-f8d0~ -#> 5 1578553 Running Bear 16250 Ja'Marr Cha~ WR CIN fa99e984-d63b~ -#> 6 1578553 Running Bear 6660 Antonio Bro~ WR TB 16e33176-b73e~ -#> 7 1578553 Running Bear 8429 Marvin Jones WR JAC 1a2fbc23-e6db~ -#> 8 1578553 Running Bear 13788 Michael Gal~ WR DAL 9e174ff2-ca0e~ -#> 9 1578553 Running Bear 15531 Brandon Aiy~ WR SF c90471cc-fa60~ -#> 10 1578553 Running Bear 7378 Cam Newton QB NE 214e55e4-a089~ -#> # ... with 272 more rows
    # } -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_rosters(ssb_conn) -
    #> # A tibble: 442 x 11 -#> franchise_id franchise_name player_id player_name pos team age -#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> -#> 1 0001 Team Pikachu 13189 Engram, Evan TE NYG 26.8 -#> 2 0001 Team Pikachu 11680 Landry, Jarvis WR CLE 28.5 -#> 3 0001 Team Pikachu 13645 Smith, Tre'Quan WR NOS 25.4 -#> 4 0001 Team Pikachu 12110 Brate, Cameron TE TBB 29.9 -#> 5 0001 Team Pikachu 13168 Reynolds, Josh WR LAR 26.3 -#> 6 0001 Team Pikachu 13793 Valdes-Scantling, Ma~ WR GBP 26.7 -#> 7 0001 Team Pikachu 13377 Patrick, Tim WR DEN 27.5 -#> 8 0001 Team Pikachu 13254 Shaheen, Adam TE MIA 27.4 -#> 9 0001 Team Pikachu 14803 Edwards-Helaire, Cly~ RB KCC 22.2 -#> 10 0001 Team Pikachu 14838 Shenault, Laviska WR JAC 22.7 -#> # ... with 432 more rows, and 4 more variables: roster_status <chr>, -#> # drafted <chr>, draft_year <chr>, draft_round <chr>
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_rosters(jml_conn) -
    #> # A tibble: 350 x 7 -#> franchise_id franchise_name player_id player_name pos team age -#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> -#> 1 1 Fake News 1110 T.Y. Hilton WR IND 31.6 -#> 2 1 Fake News 1339 Zach Ertz TE PHI 30.6 -#> 3 1 Fake News 1426 DeAndre Hopkins WR ARI 29 -#> 4 1 Fake News 1825 Jarvis Landry WR CLE 28.5 -#> 5 1 Fake News 2025 Albert Wilson WR MIA 28.9 -#> 6 1 Fake News 2197 Brandin Cooks WR HOU 27.7 -#> 7 1 Fake News 2319 DeVante Parker WR MIA 28.4 -#> 8 1 Fake News 232 Frank Gore RB NYJ 38.1 -#> 9 1 Fake News 2822 Adam Humphries WR WAS 28 -#> 10 1 Fake News 289 Drew Brees QB NO 42.4 -#> # ... with 340 more rows
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_schedule.html b/docs/dev/reference/ff_schedule.html deleted file mode 100644 index 8aee549f..00000000 --- a/docs/dev/reference/ff_schedule.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - - -Get Schedule — ff_schedule • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe with one row for every team for every weekly matchup

    -
    - -
    ff_schedule(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_schedule(conn, ...)
    -
    -# S3 method for flea_conn
    -ff_schedule(conn, week = 1:17, ...)
    -
    -# S3 method for mfl_conn
    -ff_schedule(conn, ...)
    -
    -# S3 method for sleeper_conn
    -ff_schedule(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    for other platforms

    week

    a numeric or numeric vector specifying which weeks to pull

    - -

    Value

    - -

    A tidy dataframe with one row per game per franchise per week

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns schedule data, one row for every franchise for every week. Completed games have result data.

    • -
    • flea_conn: Flea: returns schedule data, one row for every franchise for every week. Completed games have result data.

    • -
    • mfl_conn: MFL: returns schedule data, one row for every franchise for every week. Completed games have result data.

    • -
    • sleeper_conn: Sleeper: returns all schedule data

    • -
    - -

    Examples

    -
    # \donttest{ -espn_conn <- espn_connect(season = 2020, league_id = 899513) -ff_schedule(espn_conn) -
    #> # A tibble: 140 x 6 -#> week franchise_id franchise_score result opponent_id opponent_score -#> <int> <int> <dbl> <chr> <int> <dbl> -#> 1 1 1 102. L 4 130. -#> 2 1 2 156. W 3 135. -#> 3 1 3 135. L 2 156. -#> 4 1 4 130. W 1 102. -#> 5 1 5 133. W 7 131. -#> 6 1 6 119. L 9 124. -#> 7 1 7 131. L 5 133. -#> 8 1 8 120. L 10 122. -#> 9 1 9 124. W 6 119. -#> 10 1 10 122. W 8 120. -#> # ... with 130 more rows
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2019, league_id = 206154) -x <- ff_schedule(conn, week = 2:4) -# } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_schedule(ssb_conn) -
    #> # A tibble: 234 x 6 -#> week franchise_id franchise_score result opponent_id opponent_score -#> <dbl> <chr> <dbl> <chr> <chr> <dbl> -#> 1 1 0001 123. W 0002 103. -#> 2 1 0002 103. L 0001 123. -#> 3 1 0003 128. L 0004 174. -#> 4 1 0004 174. W 0003 128. -#> 5 1 0005 144. W 0011 130. -#> 6 1 0006 173. W 0013 125. -#> 7 1 0007 145. W 0010 127. -#> 8 1 0008 185. W 0009 176. -#> 9 1 0009 176. L 0008 185. -#> 10 1 0010 127. L 0007 145. -#> # ... with 224 more rows
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_schedule(jml_conn) -
    #> # A tibble: 184 x 6 -#> week franchise_id franchise_score opponent_id opponent_score result -#> <int> <int> <dbl> <int> <dbl> <chr> -#> 1 1 1 97.8 12 160. L -#> 2 1 2 65.9 8 70.2 L -#> 3 1 3 103. 10 71 W -#> 4 1 4 133. 7 106. W -#> 5 1 5 82.4 6 99.3 L -#> 6 1 6 99.3 5 82.4 W -#> 7 1 7 106. 4 133. L -#> 8 1 8 70.2 2 65.9 W -#> 9 1 9 78.3 11 147 L -#> 10 1 10 71 3 103. L -#> # ... with 174 more rows
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_scoring.html b/docs/dev/reference/ff_scoring.html deleted file mode 100644 index b518de95..00000000 --- a/docs/dev/reference/ff_scoring.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - -Get League Scoring Settings — ff_scoring • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a dataframe with detailed scoring settings for each league - broken down by event, points, and (if available) position.

    -
    - -
    ff_scoring(conn)
    -
    -# S3 method for espn_conn
    -ff_scoring(conn)
    -
    -# S3 method for flea_conn
    -ff_scoring(conn)
    -
    -# S3 method for mfl_conn
    -ff_scoring(conn)
    -
    -# S3 method for sleeper_conn
    -ff_scoring(conn)
    - -

    Arguments

    - - - - - - -
    conn

    a conn object created by ff_connect()

    - -

    Value

    - -

    A tibble of league scoring rules for each position defined.

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns scoring settings in a flat table, override positions have their own scoring.

    • -
    • flea_conn: Fleaflicker: returns scoring settings in a flat table, one row per position per rule.

    • -
    • mfl_conn: MFL: returns scoring settings in a flat table, one row per position per rule.

    • -
    • sleeper_conn: Sleeper: returns scoring settings in a flat table, one row per position per rule.

    • -
    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 899513) -ff_scoring(conn) -
    #> # A tibble: 627 x 4 -#> pos points stat_id stat_name -#> <chr> <dbl> <int> <chr> -#> 1 QB 0 133 defensive400To449YardsAllowed -#> 2 RB 0 133 defensive400To449YardsAllowed -#> 3 WR 0 133 defensive400To449YardsAllowed -#> 4 TE 0 133 defensive400To449YardsAllowed -#> 5 K 0 133 defensive400To449YardsAllowed -#> 6 P 0 133 defensive400To449YardsAllowed -#> 7 DT 0 133 defensive400To449YardsAllowed -#> 8 DE 0 133 defensive400To449YardsAllowed -#> 9 LB 0 133 defensive400To449YardsAllowed -#> 10 CB 0 133 defensive400To449YardsAllowed -#> # ... with 617 more rows
    # } - -# \donttest{ -joe_conn <- ff_connect(platform = "fleaflicker", league_id = 312861, season = 2020) -ff_scoring(joe_conn) -
    #> # A tibble: 72 x 7 -#> pos event abbrev points label desc event_id -#> <chr> <chr> <chr> <dbl> <chr> <chr> <int> -#> 1 QB Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 -#> 2 RB Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 -#> 3 WR Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 -#> 4 TE Passing Yard Yd 0.04 Passi~ 1 point for every 25 Pas~ 3 -#> 5 QB Passing TD TD 6 Passi~ 6 points for every Passi~ 5 -#> 6 RB Passing TD TD 6 Passi~ 6 points for every Passi~ 5 -#> 7 WR Passing TD TD 6 Passi~ 6 points for every Passi~ 5 -#> 8 TE Passing TD TD 6 Passi~ 6 points for every Passi~ 5 -#> 9 QB 2 Pt Conversio~ 2PC 2 Passi~ 2 points for every 2 Pt ~ 4 -#> 10 RB 2 Pt Conversio~ 2PC 2 Passi~ 2 points for every 2 Pt ~ 4 -#> # ... with 62 more rows
    # } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_scoring(ssb_conn) -
    #> # A tibble: 71 x 6 -#> pos points range event short_desc long_desc -#> <chr> <dbl> <chr> <chr> <chr> <chr> -#> 1 QB 6 0-10 #P Number of Passi~ "This is the total number of Pass~ -#> 2 RB 6 0-10 #P Number of Passi~ "This is the total number of Pass~ -#> 3 WR 6 0-10 #P Number of Passi~ "This is the total number of Pass~ -#> 4 TE 6 0-10 #P Number of Passi~ "This is the total number of Pass~ -#> 5 QB 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ -#> 6 RB 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ -#> 7 WR 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ -#> 8 TE 0.04 -50-9~ PY Passing Yards "This is the total passing yardag~ -#> 9 QB -4 0-10 IN Pass Intercepti~ "This is the number of pass inter~ -#> 10 RB -4 0-10 IN Pass Intercepti~ "This is the number of pass inter~ -#> # ... with 61 more rows
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_scoring(jml_conn) -
    #> # A tibble: 169 x 3 -#> pos event points -#> <chr> <chr> <dbl> -#> 1 QB pass_2pt 2 -#> 2 RB pass_2pt 2 -#> 3 WR pass_2pt 2 -#> 4 TE pass_2pt 2 -#> 5 K pass_2pt 2 -#> 6 QB pass_int -2 -#> 7 RB pass_int -2 -#> 8 WR pass_int -2 -#> 9 TE pass_int -2 -#> 10 K pass_int -2 -#> # ... with 159 more rows
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_scoringhistory.html b/docs/dev/reference/ff_scoringhistory.html deleted file mode 100644 index 86a0b690..00000000 --- a/docs/dev/reference/ff_scoringhistory.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - -Get League-Specific Scoring History — ff_scoringhistory • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    (Experimental!) This function reads your league's ff_scoring rules and maps them to nflfastr week-level data. -Not all of the scoring rules from your league may have nflfastr equivalents, but most of the common ones are available!

    -
    - -
    ff_scoringhistory(conn, season, ...)
    -
    -# S3 method for espn_conn
    -ff_scoringhistory(conn, season = 1999:2020, ...)
    -
    -# S3 method for flea_conn
    -ff_scoringhistory(conn, season = 1999:2020, ...)
    -
    -# S3 method for mfl_conn
    -ff_scoringhistory(conn, season = 1999:2020, ...)
    -
    -# S3 method for sleeper_conn
    -ff_scoringhistory(conn, season = 1999:2020, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    season

    season a numeric vector of seasons (earliest available year is 1999)

    ...

    other arguments

    - -

    Value

    - -

    A tidy dataframe of weekly fantasy scoring data, one row per player per week

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns scoring history in a flat table, one row per player per week.

    • -
    • flea_conn: Fleaflicker: returns scoring history in a flat table, one row per player per week.

    • -
    • mfl_conn: MFL: returns scoring history in a flat table, one row per player per week.

    • -
    • sleeper_conn: Sleeper: returns scoring history in a flat table, one row per player per week.

    • -
    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 899513) -ff_scoringhistory(conn) -
    #> # A tibble: 112,291 x 24 -#> season week gsis_id sportradar_id espn_id player_name pos team points -#> <dbl> <int> <chr> <chr> <int> <chr> <chr> <chr> <dbl> -#> 1 1999 1 00-0000003 NA NA A.al-Jabbar RB MIA 13.2 -#> 2 1999 2 00-0000003 NA NA A.al-Jabbar RB MIA 6.6 -#> 3 1999 4 00-0000003 NA NA A.al-Jabbar RB MIA 0.2 -#> 4 1999 7 00-0000003 NA NA A.al-Jabbar RB CLE 4.5 -#> 5 1999 8 00-0000003 NA NA A.al-Jabbar RB CLE 3.9 -#> 6 1999 9 00-0000003 NA NA A.al-Jabbar RB CLE 3 -#> 7 1999 10 00-0000003 NA NA A.al-Jabbar RB CLE 6.6 -#> 8 1999 11 00-0000003 NA NA A.al-Jabbar RB CLE 2.3 -#> 9 1999 12 00-0000003 NA NA A.al-Jabbar RB CLE 4.1 -#> 10 1999 13 00-0000003 NA NA A.al-Jabbar RB CLE 5.5 -#> # ... with 112,281 more rows, and 15 more variables: passing_yards <dbl>, -#> # passing_tds <dbl>, interceptions <dbl>, sack_fumbles_lost <dbl>, -#> # passing_2pt_conversions <dbl>, rushing_yards <dbl>, rushing_tds <dbl>, -#> # rushing_fumbles_lost <dbl>, rushing_2pt_conversions <dbl>, -#> # receptions <dbl>, receiving_yards <dbl>, receiving_tds <dbl>, -#> # receiving_fumbles_lost <dbl>, receiving_2pt_conversions <dbl>, -#> # special_teams_tds <dbl>
    # } - -# \donttest{ -# conn <- fleaflicker_connect(2020, 312861) -ff_scoringhistory(conn, season = 2020) -
    #> # A tibble: 5,423 x 24 -#> season week gsis_id sportradar_id espn_id player_name pos team points -#> <dbl> <int> <chr> <chr> <int> <chr> <chr> <chr> <dbl> -#> 1 2020 1 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 20.5 -#> 2 2020 2 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 8.68 -#> 3 2020 3 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 23.9 -#> 4 2020 4 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 32.5 -#> 5 2020 5 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 14.1 -#> 6 2020 6 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 14.6 -#> 7 2020 7 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 36.9 -#> 8 2020 8 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 19.1 -#> 9 2020 9 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 2.36 -#> 10 2020 10 00-0019~ 41c44740-d0f6-4~ 2330 T.Brady QB TB 31.8 -#> # ... with 5,413 more rows, and 15 more variables: passing_yards <dbl>, -#> # passing_tds <dbl>, interceptions <dbl>, sack_fumbles_lost <dbl>, -#> # passing_2pt_conversions <dbl>, rushing_yards <dbl>, rushing_tds <dbl>, -#> # rushing_fumbles_lost <dbl>, rushing_2pt_conversions <dbl>, -#> # receptions <dbl>, receiving_yards <dbl>, receiving_tds <dbl>, -#> # receiving_fumbles_lost <dbl>, receiving_2pt_conversions <dbl>, -#> # special_teams_tds <dbl>
    # } - -# \donttest{ -# ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -# ff_scoringhistory(ssb_conn) -# } - -# \donttest{ -#' -# conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -# ff_scoringhistory(conn, season = 2020) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_standings.html b/docs/dev/reference/ff_standings.html deleted file mode 100644 index dbaeaf1e..00000000 --- a/docs/dev/reference/ff_standings.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - - - -Get Standings — ff_standings • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe of season-long fantasy team stats, including H2H wins as well as points, potential points, and all-play.

    -
    - -
    ff_standings(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_standings(conn, ...)
    -
    -# S3 method for flea_conn
    -ff_standings(conn, include_allplay = TRUE, include_potentialpoints = TRUE, ...)
    -
    -# S3 method for mfl_conn
    -ff_standings(conn, ...)
    -
    -# S3 method for sleeper_conn
    -ff_standings(conn, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    arguments passed to other methods (currently none)

    include_allplay

    TRUE/FALSE - return all-play win pct calculation? defaults to TRUE

    include_potentialpoints

    TRUE/FALSE - return potential points calculation? defaults to TRUE.

    - -

    Value

    - -

    A tidy dataframe of standings data

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns standings and points data.

    • -
    • flea_conn: Fleaflicker: returns H2H/points/all-play/best-ball data in a table.

    • -
    • mfl_conn: MFL: returns H2H/points/all-play/best-ball data in a table.

    • -
    • sleeper_conn: Sleeper: returns all standings and points data and manually calculates allplay results.

    • -
    - -

    Examples

    -
    # \donttest{ -espn_conn <- espn_connect(season = 2020, league_id = 899513) -ff_standings(espn_conn) -
    #> # A tibble: 10 x 12 -#> franchise_id franchise_name league_rank h2h_wins h2h_losses h2h_ties -#> <int> <chr> <int> <int> <int> <int> -#> 1 1 "The Early GGod" 7 3 9 0 -#> 2 2 "Coom Dumpster" 3 7 5 0 -#> 3 3 "PAKI STANS" 6 4 8 0 -#> 4 4 "I'm Also Sad " 5 7 5 0 -#> 5 5 "The Juggernaut" 1 9 3 0 -#> 6 6 "OBJ's Personal Porta ~ 4 8 4 0 -#> 7 7 "Tony El Tigre" 9 5 7 0 -#> 8 8 "Big Coomers" 8 6 6 0 -#> 9 9 "RAFI CUNADO" 2 7 5 0 -#> 10 10 "Austin \U0001f410Drew~ 10 4 8 0 -#> # ... with 6 more variables: h2h_winpct <dbl>, points_for <dbl>, -#> # points_against <dbl>, allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_winpct <dbl>
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 206154) -x <- ff_standings(conn) -# } - -# \donttest{ -ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_standings(ssb_conn) -
    #> # A tibble: 14 x 20 -#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct -#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 0009 Team Link 10 3 0 0.769 -#> 2 0010 Team Yoshi 9 4 0 0.692 -#> 3 0014 Team Luigi 10 3 0 0.769 -#> 4 0003 Team Donkey Kong 6 7 0 0.462 -#> 5 0006 Team King Dedede 8 5 0 0.615 -#> 6 0011 Team Diddy Kong 8 5 0 0.615 -#> 7 0008 Team Bowser 7 6 0 0.538 -#> 8 0007 Team Kirby 7 6 0 0.538 -#> 9 0002 Team Simon Belmont 6 7 0 0.462 -#> 10 0004 Team Ice Climbers 5 8 0 0.385 -#> 11 0005 Team Dr. Mario 5 8 0 0.385 -#> 12 0013 Team Ness 3 10 0 0.231 -#> 13 0012 Team Mewtwo 4 9 0 0.308 -#> 14 0001 Team Pikachu 3 10 0 0.231 -#> # ... with 14 more variables: allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_ties <dbl>, allplay_winpct <dbl>, points_for <dbl>, -#> # points_against <dbl>, max_points_against <dbl>, min_points_against <dbl>, -#> # potential_points <dbl>, victory_points <dbl>, offensive_points <dbl>, -#> # defensive_points <dbl>, power_rank <dbl>, power_rank_alt <dbl>
    # } - -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -ff_standings(jml_conn) -
    #> # A tibble: 12 x 12 -#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct -#> <int> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 1 Fake News 8 5 0 0.615 -#> 2 2 KingGabe 1 12 0 0.0769 -#> 3 3 solarpool 8 5 0 0.615 -#> 4 4 The FANTom Menace 8 5 0 0.615 -#> 5 5 Barbarians 6 7 0 0.462 -#> 6 6 sox05syd 8 5 0 0.615 -#> 7 7 Flipadelphia05 10 3 0 0.769 -#> 8 8 Hocka Flocka 7 6 0 0.538 -#> 9 9 ZPMiller97 4 9 0 0.308 -#> 10 10 JMLarkin 1 12 0 0.0769 -#> 11 11 Permian Panthers 8 5 0 0.615 -#> 12 12 jaydk 9 4 0 0.692 -#> # ... with 6 more variables: points_for <dbl>, points_against <dbl>, -#> # potential_points <dbl>, allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_winpct <dbl>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_starter_positions.html b/docs/dev/reference/ff_starter_positions.html deleted file mode 100644 index 89bc4956..00000000 --- a/docs/dev/reference/ff_starter_positions.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - -Get Starting Lineup Settings — ff_starter_positions • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe with positional lineup rules.

    -
    - -
    ff_starter_positions(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_starter_positions(conn, ...)
    -
    -# S3 method for flea_conn
    -ff_starter_positions(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_starter_positions(conn, ...)
    -
    -# S3 method for sleeper_conn
    -ff_starter_positions(conn, ...)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    - -

    Value

    - -

    A tidy dataframe of positional lineup rules, one row per position with minimum and maximum starters as well as total starter calculations.

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns min/max starters for each main player position

    • -
    • flea_conn: Fleaflicker: returns minimum and maximum starters for each player position.

    • -
    • mfl_conn: MFL: returns minimum and maximum starters for each player position.

    • -
    • sleeper_conn: Sleeper: returns minimum and maximum starters for each player position.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 1178049) -ff_starter_positions(conn) -
    #> # A tibble: 6 x 7 -#> pos min max offense_starters defense_starters kdst_starters -#> <chr> <int> <int> <int> <int> <int> -#> 1 QB 1 1 7 0 2 -#> 2 RB 2 4 7 0 2 -#> 3 WR 3 5 7 0 2 -#> 4 TE 1 3 7 0 2 -#> 5 DST 1 1 7 0 2 -#> 6 K 1 1 7 0 2 -#> # ... with 1 more variable: total_starters <int>
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 206154) -ff_starter_positions(conn) -
    #> # A tibble: 10 x 7 -#> pos min max offense_starters defense_starters kdst_starters -#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> -#> 1 CB 2 4 7 8 1 -#> 2 EDR 0 4 7 8 1 -#> 3 IL 0 4 7 8 1 -#> 4 K 1 1 7 8 1 -#> 5 LB 2 4 7 8 1 -#> 6 QB 1 1 7 8 1 -#> 7 RB 2 3 7 8 1 -#> 8 S 2 4 7 8 1 -#> 9 TE 1 2 7 8 1 -#> 10 WR 2 3 7 8 1 -#> # ... with 1 more variable: total_starters <dbl>
    # } - -# \donttest{ -dlfidp_conn <- mfl_connect(2020, league_id = 33158) -ff_starter_positions(conn = dlfidp_conn) -
    #> # A tibble: 9 x 7 -#> pos min max offense_starters defense_starters kdst_starters -#> <chr> <int> <int> <dbl> <dbl> <int> -#> 1 QB 1 1 8 10 0 -#> 2 RB 1 6 8 10 0 -#> 3 WR 1 6 8 10 0 -#> 4 TE 0 5 8 10 0 -#> 5 DT 1 3 8 10 0 -#> 6 DE 2 4 8 10 0 -#> 7 LB 2 4 8 10 0 -#> 8 CB 2 4 8 10 0 -#> 9 S 1 3 8 10 0 -#> # ... with 1 more variable: total_starters <int>
    # } - -# \donttest{ -jml_conn <- sleeper_connect(league_id = "652718526494253056", season = 2021) -jml_starters <- ff_starter_positions(jml_conn) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_starters.html b/docs/dev/reference/ff_starters.html deleted file mode 100644 index 7fc133a5..00000000 --- a/docs/dev/reference/ff_starters.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - -Get Starting Lineups — ff_starters • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe with one row for every starter (and bench) for every week and their scoring, if available.

    -
    - -
    ff_starters(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_starters(conn, weeks = 1:17, ...)
    -
    -# S3 method for flea_conn
    -ff_starters(conn, week = 1:17, ...)
    -
    -# S3 method for mfl_conn
    -ff_starters(conn, week = 1:17, season = NULL, ...)
    -
    -# S3 method for sleeper_conn
    -ff_starters(conn, week = 1:17, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    weeks

    which weeks to calculate, a number or numeric vector

    week

    a numeric or one of YTD (year-to-date) or AVG (average to date)

    season

    the season of interest - generally only the most recent 2-3 seasons are available

    - -

    Value

    - -

    A tidy dataframe with every player for every week, including a flag for whether they were started or not

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns who was started as well as what they scored.

    • -
    • flea_conn: Fleaflicker: returns who was started as well as what they scored.

    • -
    • mfl_conn: MFL: returns the player fantasy scores for each week (not the actual stats)

    • -
    • sleeper_conn: Sleeper: returns only "who" was started, without any scoring/stats data. Only returns season specified in initial connection object.

    • -
    - -

    Examples

    -
    # \donttest{ -conn <- espn_connect(season = 2020, league_id = 1178049) -ff_starters(conn, weeks = 1:3) -
    #> # A tibble: 714 x 11 -#> week franchise_id franchise_name franchise_score lineup_slot player_score -#> <int> <int> <chr> <dbl> <chr> <dbl> -#> 1 1 1 Rushin' Collusion 118 QB 27.5 -#> 2 1 1 Rushin' Collusion 118 RB 9.2 -#> 3 1 1 Rushin' Collusion 118 RB 6.7 -#> 4 1 1 Rushin' Collusion 118 WR 13.1 -#> 5 1 1 Rushin' Collusion 118 WR 8.6 -#> 6 1 1 Rushin' Collusion 118 WR 12.6 -#> 7 1 1 Rushin' Collusion 118 TE 16.6 -#> 8 1 1 Rushin' Collusion 118 DST 0 -#> 9 1 1 Rushin' Collusion 118 K 9 -#> 10 1 1 Rushin' Collusion 118 BE 4.8 -#> # ... with 704 more rows, and 5 more variables: player_id <int>, -#> # player_name <chr>, pos <chr>, team <chr>, eligible_lineup_slots <list>
    # } - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 206154) -ff_starters(conn) -# } - -# \donttest{ -dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_starters(conn = dlf_conn) -
    #> # A tibble: 6,371 x 11 -#> franchise_id franchise_name season week starter_status should_start -#> <chr> <chr> <dbl> <int> <chr> <dbl> -#> 1 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 2 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 3 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 4 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 5 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 6 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 7 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 8 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 9 0013 Advance Reptilian Sola~ 2020 1 starter 1 -#> 10 0013 Advance Reptilian Sola~ 2020 1 nonstarter 0 -#> # ... with 6,361 more rows, and 5 more variables: player_score <dbl>, -#> # player_id <chr>, player_name <chr>, pos <chr>, team <chr>
    # } - -# \donttest{ -jml_conn <- sleeper_connect(league_id = "522458773317046272", season = 2020) -jml_starters <- ff_starters(jml_conn) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_transactions.html b/docs/dev/reference/ff_transactions.html deleted file mode 100644 index 71b4a176..00000000 --- a/docs/dev/reference/ff_transactions.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - - -Get League Transactions — ff_transactions • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe of transactions - generally one row per player per transaction per team. -Each trade is represented twice, once per each team.

    -
    - -
    ff_transactions(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_transactions(conn, limit = 1000, ...)
    -
    -# S3 method for flea_conn
    -ff_transactions(conn, franchise_id = NULL, ...)
    -
    -# S3 method for mfl_conn
    -ff_transactions(conn, custom_players = deprecated(), ...)
    -
    -# S3 method for sleeper_conn
    -ff_transactions(conn, week = 1:17, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    additional args for other methods

    limit

    number of most recent transactions to return

    franchise_id

    fleaflicker returns transactions grouped by franchise id, pass a list here to filter

    custom_players

    [Deprecated] - now returns custom players by default

    week

    A week filter for transactions - 1 returns all offseason transactions. Default 1:17 returns all transactions.

    - -

    Value

    - -

    A tidy dataframe of transaction data

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: returns adds, drops, and trades. Requires private/auth-cookie.

    • -
    • flea_conn: Fleaflicker: returns all transactions, including free agents, waivers, and trades.

    • -
    • mfl_conn: MFL: returns all transactions, including auction, free agents, IR, TS, waivers, and trades.

    • -
    • sleeper_conn: Sleeper: returns all transactions, including free agents, waivers, and trades.

    • -
    - -

    Examples

    -
    if (FALSE) { -# Marked as don't run because this endpoint requires private authentication - -conn <- espn_connect( - season = 2020, - league_id = 1178049, - swid = Sys.getenv("TAN_SWID"), - espn_s2 = Sys.getenv("TAN_ESPN_S2") -) -ff_transactions(conn) -} - -# \donttest{ -conn <- fleaflicker_connect(season = 2020, league_id = 312861) -ff_transactions(conn) -
    #> # A tibble: 283 x 12 -#> timestamp type type_desc franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <int> <chr> <glue> -#> 1 2021-06-07 12:28:41 free_ag~ dropped 1581803 ZachFarni's Te~ 15662 -#> 2 2021-06-07 11:55:56 free_ag~ dropped 1581719 Jmuthers's Team 11455 -#> 3 2021-06-06 16:45:46 free_ag~ dropped 1581726 SCJaguars's Te~ 15814 -#> 4 2021-06-04 13:00:05 free_ag~ dropped 1578553 Running Bear 15723 -#> 5 2021-06-01 15:56:47 free_ag~ dropped 1581721 Mjenkyns2004's~ 11194 -#> 6 2021-06-01 11:50:42 free_ag~ dropped 1581719 Jmuthers's Team 14774 -#> 7 2021-06-01 11:50:33 free_ag~ dropped 1581719 Jmuthers's Team 14709 -#> 8 2021-05-31 10:43:46 free_ag~ dropped 1578553 Running Bear 14714 -#> 9 2021-05-31 10:43:30 free_ag~ dropped 1578553 Running Bear 11188 -#> 10 2021-05-31 10:43:22 free_ag~ dropped 1578553 Running Bear 14749 -#> # ... with 273 more rows, and 6 more variables: player_name <glue>, pos <chr>, -#> # team <chr>, trade_partner_id <int>, trade_partner_name <chr>, -#> # trade_id <int>
    # } - -# \donttest{ -dlf_conn <- mfl_connect(2019, league_id = 37920) -ff_transactions(dlf_conn) -
    #> # A tibble: 1,146 x 12 -#> timestamp type type_desc franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2019-12-19 11:56:49 FREE_~ added 0003 Electric Spiders 13868 -#> 2 2019-12-19 11:56:49 FREE_~ dropped 0003 Electric Spiders 13387 -#> 3 2019-12-19 03:03:13 FREE_~ added 0019 Advance Reptilia~ 12857 -#> 4 2019-12-19 03:03:13 FREE_~ dropped 0019 Advance Reptilia~ 11186 -#> 5 2019-12-19 03:02:26 FREE_~ added 0019 Advance Reptilia~ 13868 -#> 6 2019-12-19 03:02:26 FREE_~ dropped 0019 Advance Reptilia~ 14305 -#> 7 2019-12-15 17:28:15 FREE_~ added 0003 Electric Spiders 12197 -#> 8 2019-12-15 17:27:28 FREE_~ dropped 0003 Electric Spiders 12623 -#> 9 2019-12-15 17:27:00 FREE_~ added 0003 Electric Spiders 13387 -#> 10 2019-12-15 17:26:27 IR deactiva~ 0003 Electric Spiders 14138 -#> # ... with 1,136 more rows, and 6 more variables: player_name <chr>, pos <chr>, -#> # team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    # } -# \donttest{ -jml_conn <- ff_connect(platform = "sleeper", league_id = "522458773317046272", season = 2020) -x <- ff_transactions(jml_conn, week = 1:17) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ff_userleagues.html b/docs/dev/reference/ff_userleagues.html deleted file mode 100644 index 33029136..00000000 --- a/docs/dev/reference/ff_userleagues.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - -Get User Leagues — ff_userleagues • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tidy dataframe with one row for every league a user is in. This requries authentication cookies for MFL usage.

    -
    - -
    ff_userleagues(conn, ...)
    -
    -# S3 method for espn_conn
    -ff_userleagues(conn = NULL, ...)
    -
    -# S3 method for flea_conn
    -ff_userleagues(conn = NULL, user_email = NULL, season = NULL, ...)
    -
    -# S3 method for mfl_conn
    -ff_userleagues(conn, season = NULL, ...)
    -
    -# S3 method for sleeper_conn
    -ff_userleagues(conn = NULL, user_name = NULL, season = NULL, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - -
    conn

    a connection object created by ff_connect()

    ...

    arguments that may be passed to other methods (for method consistency)

    user_email

    the username to look up - defaults to user created in conn if available

    season

    the season to look up leagues for

    user_name

    the username to look up - defaults to user created in conn if available

    - -

    Value

    - -

    A tidy dataframe with one row for every league a user is in

    -

    Methods (by class)

    - - -
      -
    • espn_conn: ESPN: does not support a lookup of user leagues by email or user ID at this time.

    • -
    • flea_conn: flea: returns a listing of leagues for a given user_email

    • -
    • mfl_conn: MFL: With username/password, it will return a list of user leagues.

    • -
    • sleeper_conn: Sleeper: returns a listing of leagues for a given user_id or user_name

    • -
    -

    See also

    - -

    fleaflicker_userleagues() to call this function for flea leagues without first creating a connection object.

    -

    sleeper_userleagues() to call this function for Sleeper leagues without first creating a connection object.

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/ffscrapr-package.html b/docs/dev/reference/ffscrapr-package.html deleted file mode 100644 index 03ba706f..00000000 --- a/docs/dev/reference/ffscrapr-package.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - -ffscrapr: API Client for Fantasy Football League Platforms — ffscrapr-package • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Helps access various Fantasy Football APIs by handling - authentication and rate-limiting, forming appropriate calls, and - returning tidy dataframes which can be easily connected to other data - sources.

    -
    - - - -

    See also

    - - -

    Author

    - -

    Maintainer: Tan Ho tan@tanho.ca

    -

    Other contributors:

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/figures/ffscrapr.svg b/docs/dev/reference/figures/ffscrapr.svg deleted file mode 100644 index 127b9c50..00000000 --- a/docs/dev/reference/figures/ffscrapr.svg +++ /dev/null @@ -1,169 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - -ffscrapr - - - \ No newline at end of file diff --git a/docs/dev/reference/figures/logo-no-gradient.png b/docs/dev/reference/figures/logo-no-gradient.png deleted file mode 100644 index 4c2f062cd5bbbfb2ee626102ff93b4bb221b62d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123126 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RD`h7ctMmwSC__TLG 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

    4{zlk{oyLd%a(m!vY42wMsPo0A8wfZ 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⋘ja@!)~`EM4zt`b<9cPWS>n`pt(ZfC#(@oA5kN=)eFD- zRz76R-Hh52mkVV122UwF8;an$UCUT#?rejVvf3OFvbgoQDd$;N>}ij(n>Ld(Q{rm@ zF1e`_cu;&=n?5l5uYY5Hn?MJt-l?r6XyIM+#X4)j8%$FpzdTq;B0wIoUEAj!$#8~F zV?ya|iipbh(C7}o<}#M`cMb+gRPO|Fc;L7t0Rp(q){E30vzE13Eo%Q_LH?gSl)KB# zO}R610)u7)ZeBZlZr5C7U^M<8B+xGx{Sq3EGCr8sNQlxu!XN`2M1~FQ@gcjIBF*Cy{HY zdOp1KzI6U56V9*Z(`8of1@Ne~-V4uffs+udKY5>LSJ_B?M~aqy&^j6BK%CEo|A+Xo z-l_Av7$*ymA0KM5kLY|xeA;6Zk1mAy0p_tOrbK)BXhaB-vU6va*qmjTlqoyS&_=If zTTB;n^Bm$19ZCg<_}vzW{gW8F=dUj^)bCPJ(O2EmS7woJ8X-UIC9$r2+QNx{jU3Dj z*W5Bbt)OAKo7A7M$dnk9xC<{pRj_!mv*YW}S>S8^aq)*rbrAs)F3^G~wQ5{^PED+= z_Zxj{3Qt}8V_!?t!QaXRkIvk3Pp^x>bFTyG#oy;Zr>d@(zkMUq{t6=4be4VfscVGY zn4P)^_0>ii|DZt4-L(P@qY}?q)(>T)S2xP1JSksRgNQWsV73 z>xOwFjohTZEl&ylc3i%ytPT}_*7_R z-ic19x0Y(C{(6D788|RKgytnu5R;YVLdwRbFd%ul@n@xErMBQzHpdv?N}!*tW#Llz z`L?Xj&JSsHBfj_AqW24imiFp;y@Z{+} z-=iu%!N!^W=nOLA{;?@Y zqp{C&n?{~^Rp2edO}Ae|(bbbRJvQBf7sFB3LM0Y#nRwTXz{9I-qEthPeb#e=JmKVc z^BbU0y-9Pp3MV&D-p4Mhyrf7tpS65;b>jJzkVotpXO6y9kMdb&BlVgrSGqVkIHpeU zVxWTHjrMf^H#TP^g_sY{xLo=8aTgE^e`P+{J*aPt_ULG7t}ey%X0mqzh2YT9SxqWY z7fS96Pok3kt$u3stv$0_;`TFVu79`pg|>ihvv(d49|e#w{kO8P-@G_lA`D{k;<8R% zcdkN)!=Lra1@0q>H=Y1tKNy;0qoVYs3%87~1A`vDpUA}{54?kU!oA{cR_AWqU2yh> zx8Auq3MJ!9UY@`f;i%6~b$_>;R)ol=>^G^>3T{m4@Vt&>)-}h(p@(KLh^Ei(DXxhbDXN}w%NwNLa!+q6rc+*jV z70rlFS3%Mz4?3Uzx_9J9j`La)M+yAK|5;4&UH!( zx#F&u*STx-ub0=!w5E^i5#aA^`{1$Frymemk`)xu=7<`VvzvyJZK#IM+e!t+k%+`Z zX(Wu;tPz4m{wVIIDUWo}4Y2nwVEGBy%misN?eXc%7un@uMOr5j%rYg<>I7h zF%-g3{d?b^^p4H4fDlK;it{h!go~bO_{IF&4K;YwfYpki}0vUu!5&XenPqJ|-z zp~_b)*ll1MtWAKdX-joWp99zaVCa;FI&8vK#^suAhI`z^VQh{r=rwjv>0iBhD)csy zrhfM115rD9Y;=2b0PZhZcXL$|i zE7lVoUz!J*R_er#SGo`krd_}fzoYF+{daEnDyz6E#&ZvNa8}X}=(8$7pUl7&JqTcI zB$dq>!!Kd{O+eG53OE`Ps&kY}teB}@ur=>b;!`S0G&x_#G=I#xak%tgO#Iaf+UhZI z1Rr{6NHMc3Aq|s|oeRBoLWSos>eB}bpU*C&zjUB-o~@tyeTo@-6s*;nT%!P~>9C{s zAo49(9-ldJvD~xqZrzv~j{VQ{dLWCQ?g8ba)Lv5m(4zb(fmDm<3>wV8E5n2xgA92! z=URW3Z&X%AzwW%dud63*-jk}5716cVCL9G_9?gK81+=cpv~qW{F&j9GZKxir1CM{F zZ7Aq@lNa(MlJtDT7plCK2kdRtlT*iT%&Su7i}a(ZhANL>Us- z#c4!)R5Zvu5NA^YGD0y|7MKNWx8VVzs$&3AgWKbCv&2t@3J~RV*;oqJyTeAy0?}%# z)A&=XV#-kKvWt;4qcanVM%|%^#Rj%-+>L=AQn)PE#c$1aaK=L+5*o3&faA^*A3U}L zGTiIYrf)qrEAPc8_{h%gstR*rZBawYYyBPTd|ZJONM3=z4`_7`O+oeVKV`kScfccH zqH=G0)3zGQyt^f0*GnD;0=`rDZ$xj^^e>|4Q|zs~3VORWuu@EwW>C8>)zAF? z11*C7ZAnWLZSV|)A)~<9)b;^R?_4|ik_n<$86HuDdcA+CTp^JYCoZ@DUFPx$sfO&4 z)~>3{|4N2WOK+_OdjqOOL27}<$k$$e9v_<4wh_?s7M^p0J7>biy@9eDL&6BOS()Eh z#F-{{hK?fp!bqQeieBescP(ZJ2%}%7<~}coGG;0nNEv2P2LktCS8wJrVKPPkg9e^8 z+O>a`4sJ+{2RpGt3@09hL=e27|Fv*#J-wb?_CAFp#``ep>C(8`+z@i*089nq7k#n$ zAl?J*k?iSO!~xdv)spK{;Pzflh8Q1gTR7uN)(s6=h67ERQO3K zKRXYT-z;|Au}5>FuxuZFU?kW;?Q%XLFP>P|sCzm@V+^U(lV}z?(|fSwHBza4b~)M< z$|->29bEo9!%Kazr& zpCltdg^y2H#HAZ8<*j|$&X7U)@|RDb0}j6b0LV|>Nhg=`ThPOju_~_9*N?E#pYWi= z?rb)+#f)|?PE2`UXmdlIp>}g;J;<2PjwPQ$5AQVoXS?sO)+V-75WHxJ^%se6*nV!^ zw{v}&mq^*mG}PzM&mfiSUwgDMT+DPVGq8dbg1vkIIcw|9zw3K2KQJD>u-*3E-1=>> z^p)+Drvx5xgVcSG2=TjxWtJrdBiShpbqpx-o}oj!aK%f9veB%tuD%0xIoCSbdW61C zGcTeefb+nS%c5RfFy?5y_rd;n`Hc%tiwK341!Qr^NUVmR!#82~y8m~Bmz9AL2k*C{ za=(t^e{er+gdPx&2O1dL2NZe?@DX;MCi@ZIRmUyM>BAkEj35r^Ni!R^k>GcrlI)uA z9fWiwDGtdHdu8KgMzP^Gv3n+S$mJ(9DgtISyF#rG66+5eXfV{io&e$y@4r(&Mws1_*z<5q!FM)# zXz%lQdO=UN`KDowrJ{CO7 zKBB69gH2)&APrR}l~vptYl|+vM+6zjrxg*CvmL79Ch@uTR=8tGu}1VZ8t5&xvbe4K zQMxD+yDAH~>hQ1wss;)s6*MMZ zzsy@MaZ9d)>0v8qaXti_jtGL^?OgwFvK|$p65smL)*=n^GITb3t^Mr;TgQZ~&`cNL zYB@i85^lDcD>a%=2?oVvGUW+AO z(u^JjF9KpzMS?Cpdh1SkTE1nXcImsIAa!0y2F1G8Iaw1n-vW2tJ&A2Pik9qvsF23< z)QR;bPEkq509U5>AGa!zY&{ZO86;?b!+drkfe(T%S_v z@__{(`;`I?()>jM&)F)or9g9+I<^fnN4@^#bfd{khAxm!u6}lF+kv^8U$CTjW?6K} z2@m`!o1{!3Bh{byIp@{Ttqt@-?8E-D=hT5U*!l%jm5)4u>26+va+?OMn$6bBtLj*~ z2#|yOXedxw+RRCq)c<>4o1l&(Eo94j732~@Vq({Rzi2ZPpB#!mdE!0FA^+0&V$nV! zc|=2#H0>{0Xwm_2l}8li&EwBK|99aF+sYl^ zO;dfm?Z4=JWslMDp-;KSKQ3M%1q?e1EDZDK)8qpU%tANHnq3LT{HVQMo`nt2`mTMQ zeg`n(@9I}|J#wkU4#I`;*KT4J5%s-hd=KDy0!QDfIH`@4^LQyVod#&)pMy}w&^=Ik zoTNt{U0*#`3&~cdl;LDxwB=ziYlk|VZo*9dogCax zxx1Xsh>ZYyt`@6&upV2?3ni)=RMhJhsL9+%+}<-g_s{|xC2l%y92K|KhQ9SL9*|e3pLEko8{5^DpzNJ@{^eKX_%_Fb$-vuzLK7xJD5q#Jz+#sLH-h`L| zs=1)Y|7y+-hgFZMS{)Ge7K*s2*JYF-7vc8cXq-nQflw@pG{ynZ4z`iLF!Mvu>b07HoRO zSS?yv`7#GN$+9=}+_sT3wA*Di*r?mE>TeY^I<1U01@Eu^tbc_Sid98V# zp#EWH1s{Q7FHxWm-I=t#vO?1w>B;U~YPUHoG^;Y?aZAo*TH7Rm+%K zth2e{FBrGUe=mw7TU34&rp0y|T&K`tvCn3%*cK+g4_AOI0XQpX5txCYOsZ3V=^9PL!_vU+U8Gr^70IeIVe zp~EWGnXYxZWbDfoNGwy{eDLUMnSJAO&O)^~@igZ1<|Q~XkG%(TFV~s6$%ln+oE0MX zm{F7#0TTn+15$%J&rGyMn|CrA9HjB6)3u$BX8cB&*ojG+4Ri8iMg|89O5m1catU2x;WCj(ayAO@KtNxa&Uxbhhg(5PaFNdKunE> zJ2C}HoNTlA7^|D*-AUohT}$0Cd(v2tBX>S#-)VI%w)ev9HrH`wtH!g0&amd~W$+6Z z8sg}%Xp2g6U@Xrm*Z+IO1jvmUXOl$=a>q+|-{4`!cuEFFq>H%nfPYQ6}3_FH){qSN?2oBl#X;!6hTq{lKMJ3%q=j|BlNOzOiuEm6+(G4z+ z>oBg*mzc4k#&%u$Ov~8v^KHl21%%&i4);GzZZGBaG7~-xlY~AA{z(%4on*p@+UX_Z z91y3}_(XO`4aZFaVxV3!b~Uhq)Z{V3{waCyHCz;*74{bWfue3R%IWw2c zoqa9tNi&y-yqM28h%}h0pod*b{gd*U_;me|{(&ZN)%fW5& zS$&w@;0~C4bSdfyH(~oaY)BjVkr_F%f~3bL@O*l6Sm9|hd|lys$xabMjHj(by0S3@ z-Ops}!83s*RX?+mPZ>lNx6}(!$#ybJt`>a}x zzpT`vfZA&`50$xhU{h_bf9vi}tB$H!x$^p|?1x-!-&MQnK=w4`>cwY%18;E%iodAc%%6B2xP>t&8n+jRb zB%X$g0QO7Y`_lrS0if?qtz%p@E63f4yV7dx0#^WD)Y~bW-K#YHzH$t9ecTi6{YiVS zM!)?j11_>Aj)EM!n|u64f8=-Z$Cm-DPuBEmXMY#$c>_X`dT8m&)v1w1*NV^U^`zmg z$i|zpR~0n5mK2gzbgjAQJ{o5Sr--svqX;>e`DcXtwjEu&yy~a|H=bJ)23}Mjwq9X68g#wg;H$cO{syS32Y2X_a)N4cW*Mh90qm zBil|{N~CM&3+Y*lbItap|Gv;PIW>(ACRXoUK}^{_q^$CK6dEfx2!M+@~@-#5f1H+%GyR@)Ba;Y>VlUWhpSIL3@oW$8FDEeiyHkVhdu#!x+}c zKwYl|dqM7#)eG^hcunCZXO+m2tlZoY{$(dSMRjn^>T=L#jzSDP2sa27C~;EWDr!>` zx)V#tr@k3_>$(NUy-nv%F1pvChXmAGRFOpc(fP4oSzPkdvvk zE3oy&s~i&y)82&K;gW@lLSM{LcE{8tg&N{Z$wjnbGuZHGqu$YLwsM8z-@1*7Flu&a zK3k{6!}zmB4sa7~x$^q;ScaydS6^SYg$G;3Td>dpQeVX}k*5*Ji*>Be>{{JcR$4%z zAMBp)BtQ9qtm;EYedW{`;+lGG>EM2B)?QxT!r8J8Ceh{(0hF1`N{@}0SvMWq$gzRt z>oW}p0Dm7&^jOP{nW-+tgFVN40zyOK$&tNPX)EYmALatbj^H2br|=)SMm%vjEMh_R zB`4{*@wcJFfHK%~gfc!RleXgXrp-b9hZkLFCQg4W^cufJdE@{XlQ0=8UJ$dg0tbA{ zt5FwE65w5ko!E_GZ)mwQA>!_RUoLj^GVw57P=083EsA~K}3dz=+Y5e2k3f9go$j{F!Ay$_*w2b)g)=%Dqu zHM6h|+lgoqri^)(6)ZVQfbv#y5Umrg3-lxp~rFV;ve7_ z5PY5?aIQWuma7tHd9+p}tMf4dF!j*8$*JvmC3LL6DN}}ZBlMpx)sE|@-U)W^pD&;8 z`10MG$c|xmknD$zsv4TC&}#Ocuq>K*#B+{N;;G`I{h@e7cq8Vm5I4IpE9J+PZmAYa zOf&M|!2YB6-2(rh1KMfwkR=p#=N2<7@MNxrQ;x99`!=|skvd8;xo``F?s1y7=^Bai)!1LC(L4)}4XeC&v=VsSBA3;E$%x9!?Sc_rw#PA3SvYQMz0M< zQZm~&F6#sRQ*A&r{h8#VVBzXbi^hsjflGB zAYueV7&_VmW42>9bLHPStcwiP`T^QRXFfT*x@ZrcK5#8=eZu;3FLR-i+px!fP@sff zBU*gu5aFJ>#8>a3mhAi`u>vORMmC64^UfVxDOU&645 zHwW$&(*^K~uxC4vc5_JUc!j~KtYiC??%iLH=$^R{+@W1^djLnOc;LTLz1$aagtG>@ z6yIds;k+2;mLyXbHojUBtufXrmUWoqew3&rqsX}`0xJfy<~S|6;kli^lD(_`@8r%C zkLh*pRU#-Oq0MfuF|%;cLd7^ZFZPWI9n+hR0m7mSx3P=dVh|oC%Mhi1TbW^@@a?cm zLiFkRrv%|OsyDlNT13WWHKVb`0OgONl35!Xc>9Fyl`>TsF&U1J5UCIHm&cuCc8tgf zSb7o9Vf$2Hx)C12rH19ZAr;pynUDG9Kq*{3@nJL6$vfS2t&If&!nEX;lagd!Lt8nI z-Ah;~C08-E){-I3MyBmh-MACpA^njjFY(-EM=8Fg4s(Y-W#arfgsnra2&p9hcvd3f z*&IGc;1tQ4K`iEEYXTKca+jQaphCwTL?t>wh$2crho zFlGkLNYl$|eLx3Za6eaG$FotlA`O0UEN-uLgogl?xqcFvSVHwp%_`cBV zHT}mSOZG_=l&sJ%y4 zzGC;&l&+@tDZ4$(s>`*3&C((sP{=!O5YF4dnq~8r zUK~Po16(|^#(c{K(K7fb?Wej>UFEeY*hfHn%%Xao%j@~Ae8ff;DA%fPaD zgu3diica)og!MFSJ8A9jB7L;Cmsi-W8>K>RH|mKx&?xk(oP0Fd)D<11@U6>nrxzTt zCoseHI{VXG>)>Ga;YWl)S~HP$*NThV?>6AP8HU^tdB=j;D1uH|ymgCm!ce3{YU6%r zp3OSg117mC)Na*UMU_wp3q8CKdQlfiDl+zUV63;zb>11Txkw|l5mF`MGzj2i`e zI&=}W=Jum7I|0uRLf=ugyD2U^B3t0`fk;NTkymOBXxYbipk-IvyDujR_zlZ)HL~kn*)P7;^x^oQ2u(nLz_O11U_IO0$9^s<~%;*oMY7_j#~8BQqUYral&hTiLOdr`A> z5a`BhytZ!44wp)RS}Th}`ARNiX$Y{4zPLdnEzMtir+o`yWVb-n9}}_9_J=w3-E179 zLH_LX0p<-L-W?hTruX5B{-S%*v>vifA%g6B&gMyVP*Uz;6FY0WMX2KRYX2QnYwU!t zbbys-{Ym%8yJr=5$=RPsol?)uD0%1@w>~zwz5KZ#n;yl^#nIx0ILCymtMY;CU1;B% z4jEKK{B9=a+KUi{QeZd|Td>-Bmwu^mcvgqO}CtM3b_^iZ_2b8wk5J3CNN?}sy9dcmI(R?O9 zr*^=}`*s$IE%6RgLwdN!ZuX~rKYXL!dCTW$@CgA_oL9#pIKf8yD@Xa2Lk^LE=hLiQ zye98zc3(g{8Yq`s=)X~%2U@9hJEmRna2Meu9k&j=bYRlf;Oll1+n~Hf(Y3nKRn|qy z-BK);Sv|f2e`=>noAj&)KE~z}s;mMO2+n5;zNs^eZLU0ukOk(EA>>)R`{F7d zueeXW2^=@1yN^#zcp1llPlDp42(qfi3&xdF?TayeJ9Y$6(KK^j6j_(q$E@w^^-iaw&fDS)FZz^Y-(0 ze@a_`f08mx`E~kzQ7mqa$YImOMN4737T!fAoFw)rGvsfD}aL zF(?8Wt&A%@*Ix`eyc>D33nk730-|u3naPdSH+#Kn2CcHccOdcOQf%AexN^YPWu@ovw4>ns#;>!kuvZtfSD*Z@|0U$nWpReKq?l$Bp5mY$ z`vBju!Qe;Cj=%0gMdRuTq$6PGFC#7QjFr8Gz0lc3m(16E+!>kl3eFeH<2SAjRUS>8 zez#zhi?W4}(8~fAh|TbSr*)(UwcrTPHf9S5p~4A!dFPloV1V#195te_17c9IJCx;3 z0C^^b|72bXv&a8KYp~y`5&EQdV0v;j>md_kXiZL{|GB}lRJi#!;*YJ&2h#x?oA{M_*#wE^cXf$EtImxNFvymRb^*U9-t7R2AM zW4As@!m0B953SBX_NCjhpIf4M2z;0QhthYOV+@&kPNz4vMEG~Zua{x(sVPR|VQLY_ zKKrwCye5;HI0aCraCMIs$o-L(d~y3yNpmR1dq>pbYGCzLfPH|*05FZD@5>qmGkfhH zIo*Yu&wxQWu-!HJF2_0@Dy{-ZsBh$#^BMf?6ayBjhEZBs(>$=f*(J%@uQ;PUvs+gX zYYn@LvwgdLg0^Z%IC;F#<03x(O6%hq=GvC?MiTk)TayBkD0Zj>Q0?9^}6XU7kuO=CFOc5rC-{EypyAzAXvyG^5CZ_&nP1GHJST`-JqOi-m1E zLnlxLI+< z)ZPdcBpM=UwOHu?;Bu8Wi}G}B<%`EnfnP`S$t=Mr*k0gXg)WH-ey-c3v*y6;E z?e;+FKlM|kt1>f7l8Fg@TlgQ8EbKUZc>y?-!K;CL;h)^io@VOP&qFxL5)Pa5?MqbSR0R>Ly87=nFXzM64?=0~$L%=Ck#;S1A0Mu9pFlh#*$1pfz_ zj_dZtd;iYdK(~XJJ5sZDwdgODRgbL`Q9rG3Pp4hWOIARtLw?&R7m#?X<)oa))!sdJ z9(v2Ao2kYP|ATtiqJ4eWN8vYRN-wmr4}awh9)LX$(DwIc`^11#2P}vcDZB#W1&~8OD}0tJ@zzovom*Gbidy9C$Qo zx(bL+$@jnaP`55HWVsi%z77=@K}jX3IqlTdxH5}!PJC}Q;%OMSrjp}G6YUrgeJKsLSw)O-twIJFOY`@P++bfBCeSwu~P zLoNT2)ouUwBYwQLh^tg;#;>#Kf=)7jkY_wGj%jdk29ccv-PvJyx9W!F39VSI2U64g zUGcw)bd|IAKZyHP4yhE5QHkB2?R8gF=W?eMCFV~PPr#F%fyaOp`tV(5&#lUv+HKwB zvcIAMnpi5ZjxFe+HQ+5R`B z?sM+N1U!|n;LvySoX$NY6{5ZwZ%HUw>^*rU`Oh6~$-R6VV z6mE`j!}fEFjq8xIgMG1Gd!7DYQr$ic!K2&0YU&Xjg z`b!DJrdgfEBU0%Wceg7exgM*YL3%L8D)lQ}3(<}}4#G^8cDWs8q<|`qV^^%(1xE#D0WucRh%5l?TT^K8*| zq@hN{`;VpD;m@iklVO!&(K?kdN_T@jpmh3ootR(&=5obTwZEg~^nbx2yx7wEH)6%| zaN9rhBJ5Zo3K7Y>J?g~PeF43FJ$-kRj``ax{Yw)1sUKh`HS90+-K~p^3)L*OdvR+e zIfRsdl7B&(nt&sztsv}Vw`-wbZ`R zKWU*9nPo%Nl>J%%V+ju?v#sryj+oy!{n71AH+oNC^nO?5bmxbS@eU+l#y)qc#azM` zieMrBcp}TuFbC2t9nXJtr`RT_?nL+6@gSU(&s`!2@NVMjuEj;8^r15NCDz~*4gC(! z7v=h3j|}I=;1e|td8@&xCA^{h)nk>$FAX{WLy5tL;7b;5wzW3P?X;bmCW69Cy+a^o<3iP&k&m(D8Tka_zmvVam@f5jCJiIie0K^O8h&aP>o-E-?k}hojkS55_QcRBZTBzVz&MS zt>leWGe|hVJ_aB=V}W{x>aT0NdRcJx&Lp)HSqq_ArOA%QLzjTyj-K0z__5Sx)sD8j+`cW4*S_9>|SE#ZpN$s8iBw`06PBv`ze{LY$z1co%67mR?%sLpUlxq$yJUlxGIftw%*=Sx(UtkKE62kc&}T zM$JL2`a0?qKxcjSm!zy|HZ`^HA0on92OgE5p1QpQ2Pn?!W|LFBzqUv)Nea?^fxs`1 z_YK&IwI3zpbM)31{7nnM5|*h8_u<#%TVd*zF!i5)?>LR>KMqZVw4iS0$+ zKEK48Whp?XO4uvG-cADfG0$3zv1A=+0He0cKTIu zXd1qdl-;>lFXdz*zxwsu4ip}vaDf;8b*JmpqKhA-)<;`F_EHfS5uLdS|G8R}Y8{`J z348g9+LGEncCQ7>cjiBbLn>(%(ZWX$P(MV&|6iiPxXJgg`>l>&KlVgmzsPLY~_Tx}Mb6o$qoatBa=NL{}St{qe(XIajo-&$k diff --git a/docs/dev/reference/figures/logo-no-hexfill.png b/docs/dev/reference/figures/logo-no-hexfill.png deleted file mode 100644 index 1d653c3ec98541843c0bc5c37dd94dbc4f2e8b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132631 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%0D1arE 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�Phm1Wstqb~nU9-xr-1WODy&tSk7+;w0$utN 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 z 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 diff --git a/docs/dev/reference/figures/logo.svg b/docs/dev/reference/figures/logo.svg deleted file mode 100644 index c25272b8..00000000 --- a/docs/dev/reference/figures/logo.svg +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/dev/reference/fleaflicker_connect.html b/docs/dev/reference/fleaflicker_connect.html deleted file mode 100644 index fcbe54c6..00000000 --- a/docs/dev/reference/fleaflicker_connect.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - - -Connect to Fleaflicker League — fleaflicker_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/dev/reference/fleaflicker_getendpoint.html b/docs/dev/reference/fleaflicker_getendpoint.html deleted file mode 100644 index 05f6cf41..00000000 --- a/docs/dev/reference/fleaflicker_getendpoint.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - -GET any Fleaflicker endpoint — fleaflicker_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the Fleaflicker API reference page.

    -
    - -
    fleaflicker_getendpoint(endpoint, ...)
    - -

    Arguments

    - - - - - - - - - - -
    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    - -

    Value

    - -

    A list object containing the query, response, and parsed content.

    -

    Details

    - -

    Check out the vignette for more details and example usage.

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/fleaflicker_players.html b/docs/dev/reference/fleaflicker_players.html deleted file mode 100644 index 41ff44d5..00000000 --- a/docs/dev/reference/fleaflicker_players.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - -Fleaflicker players library — fleaflicker_players • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A cached table of Fleaflicker NFL players. Will store in memory for each session! -(via memoise in zzz.R)

    -
    - -
    fleaflicker_players(conn, page_limit = NULL)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    page_limit

    A number limiting the number of players to return, or NULL (default) returns all

    - -

    Value

    - -

    a dataframe containing all ~7000+ players in the Fleaflicker database

    - -

    Examples

    -
    # \donttest{ -conn <- fleaflicker_connect(2020, 312861) -player_list <- fleaflicker_players(conn, page_limit = 2) -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/fleaflicker_userleagues.html b/docs/dev/reference/fleaflicker_userleagues.html deleted file mode 100644 index 55a6bdb1..00000000 --- a/docs/dev/reference/fleaflicker_userleagues.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - -Fleaflicker - Get User Leagues — fleaflicker_userleagues • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns the leagues that a specific user is in. -This variant can be used without first creating a connection object.

    -
    - -
    fleaflicker_userleagues(user_email, season = NULL)
    - -

    Arguments

    - - - - - - - - - - -
    user_email

    the username to look up

    season

    the season to return leagues from - defaults to current year based on heuristics

    - -

    Value

    - -

    a dataframe of leagues for the specified user

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/forget.html b/docs/dev/reference/forget.html deleted file mode 100644 index 5e209ae6..00000000 --- a/docs/dev/reference/forget.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - -Clear memoised cache — forget • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    See memoise::forget for details.

    -
    - - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/dev/reference/index.html b/docs/dev/reference/index.html deleted file mode 100644 index 9be74095..00000000 --- a/docs/dev/reference/index.html +++ /dev/null @@ -1,629 +0,0 @@ - - - - - - - - -Function reference • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Main

    -

    These are the primary functions of ffscrapr and are designed to work for all platforms.

    -
    -

    ff_connect()

    -

    Connect to a League

    -

    ff_draft()

    -

    Get Draft Results

    -

    ff_draftpicks()

    -

    Get Draft Picks

    -

    ff_franchises()

    -

    Get League Franchises

    -

    ff_league()

    -

    Get League Summary

    -

    ff_playerscores()

    -

    Get Player Scoring History

    -

    ff_rosters()

    -

    Get League Rosters

    -

    ff_schedule()

    -

    Get Schedule

    -

    ff_scoring()

    -

    Get League Scoring Settings

    -

    ff_scoringhistory()

    -

    Get League-Specific Scoring History

    -

    ff_standings()

    -

    Get Standings

    -

    ff_starters()

    -

    Get Starting Lineups

    -

    ff_starter_positions()

    -

    Get Starting Lineup Settings

    -

    ff_transactions()

    -

    Get League Transactions

    -

    ff_userleagues()

    -

    Get User Leagues

    -

    MFL

    -

    Additional functions designed/optimized for the MFL platform.

    -
    -

    mfl_connect()

    -

    Connect to MFL League

    -

    mfl_getendpoint()

    -

    GET any MFL endpoint

    -

    mfl_players()

    -

    MFL players library

    -

    Sleeper

    -

    Additional functions designed/optimized for the Sleeper platform.

    -
    -

    sleeper_connect()

    -

    Connect to Sleeper League

    -

    sleeper_getendpoint()

    -

    GET any Sleeper endpoint

    -

    sleeper_players()

    -

    Sleeper players library

    -

    sleeper_userleagues()

    -

    Sleeper - Get User Leagues

    -

    Fleaflicker

    -

    Additional functions designed/optimized for the Fleaflicker platform.

    -
    -

    fleaflicker_connect()

    -

    Connect to Fleaflicker League

    -

    fleaflicker_getendpoint()

    -

    GET any Fleaflicker endpoint

    -

    fleaflicker_players()

    -

    Fleaflicker players library

    -

    fleaflicker_userleagues()

    -

    Fleaflicker - Get User Leagues

    -

    ESPN

    -

    Additional functions designed/optimized for the ESPN platform

    -
    -

    espn_connect()

    -

    Connect to ESPN League

    -

    espn_getendpoint()

    -

    GET ESPN fantasy league endpoint

    -

    espn_getendpoint_raw()

    -

    GET ESPN endpoint (raw)

    -

    espn_players()

    -

    ESPN players library

    -

    espn_potentialpoints()

    -

    ESPN Potential Points

    -

    DynastyProcess

    -

    Functions to interface with DynastyProcess data

    -
    -

    dp_cleannames()

    -

    Clean Names

    -

    dp_name_mapping

    -

    Alternate name mappings

    -

    dp_playerids()

    -

    Import latest DynastyProcess player IDs

    -

    dp_values()

    -

    Import latest DynastyProcess values

    -

    nflfastR

    -

    Functions to interface with nflfastR data

    -
    -

    nflfastr_rosters()

    -

    Import nflfastr roster data

    -

    nflfastr_stat_mapping

    -

    Mappings for nflfastr to fantasy platform scoring

    -

    nflfastr_weekly()

    -

    Import latest nflfastr weekly stats

    -

    Miscellaneous

    -

    Additional helper functions

    -
    -

    .ff_clear_cache()

    -

    Empty Function Cache

    -

    %>%

    -

    Pipe operator

    -
    - - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/mfl_allrules.html b/docs/dev/reference/mfl_allrules.html deleted file mode 100644 index 07c6f635..00000000 --- a/docs/dev/reference/mfl_allrules.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -MFL rules library - memoised via zzz.R — mfl_allrules • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    MFL rules library - memoised via zzz.R

    -
    - -
    mfl_allrules(conn)
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/mfl_connect.html b/docs/dev/reference/mfl_connect.html deleted file mode 100644 index ad2cb2e2..00000000 --- a/docs/dev/reference/mfl_connect.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - -Connect to MFL League — mfl_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and gets a login-cookie if available

    -
    - -
    mfl_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  APIKEY = NULL,
    -  user_name = NULL,
    -  password = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on MFL - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    league_id Numeric ID parameter for each league, typically found in the URL

    APIKEY

    APIKEY - optional - allows access to private leagues. Key is unique for each league and accessible from Developer's API page (currently assuming one league at a time)

    user_name

    MFL user_name - optional - when supplied in conjunction with a password, will attempt to retrieve authentication token

    password

    MFL password - optional - when supplied in conjunction with user_name, will attempt to retrieve authentication token

    user_agent

    A string representing the user agent to be used to identify calls - may find improved rate_limits if verified token

    rate_limit

    TRUE by default, pass FALSE to turn off rate limiting

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is 60 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    silently swallows up unused arguments

    - -

    Value

    - -

    a connection object to be used with ff_* functions

    - -

    Examples

    -
    # \donttest{ -mfl_connect(season = 2020, league_id = 54040) -
    #> <MFL connection 2020_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2020 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    mfl_connect(season = 2019, league_id = 54040, rate_limit = FALSE) -
    #> <MFL connection 2019_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2019 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    # } -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/mfl_getendpoint.html b/docs/dev/reference/mfl_getendpoint.html deleted file mode 100644 index f81e0d5e..00000000 --- a/docs/dev/reference/mfl_getendpoint.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - -GET any MFL endpoint — mfl_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Create a GET request to any MFL export endpoint.

    -
    - -
    mfl_getendpoint(conn, endpoint, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    the list object created by mfl_connect()

    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    - -

    Value

    - -

    A list object containing the query, response, and parsed content.

    -

    Details

    - -

    This function will read the connection object and automatically pass in the rate-limiting, league ID (L), authentication cookie, and/or API key (APIKEY) if configured in the connection object.

    -

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the MFL API reference page.

    -

    Check out the vignette for more details and example usage.

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/mfl_players.html b/docs/dev/reference/mfl_players.html deleted file mode 100644 index b8bf6972..00000000 --- a/docs/dev/reference/mfl_players.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - -MFL players library — mfl_players • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A cached table of MFL players. Will store in memory for each session! -(via memoise in zzz.R)

    -
    - -
    mfl_players(conn = NULL)
    - -

    Arguments

    - - - - - - -
    conn

    optionally, pass in a conn object generated by ff_connect to receive league-specific custom players

    - -

    Value

    - -

    a dataframe containing all ~2000+ players in the MFL database

    - -

    Examples

    -
    # \donttest{ -player_list <- mfl_players() -dplyr::sample_n(player_list, 5) -
    #> # A tibble: 5 x 25 -#> player_id player_name pos age team status draft_year draft_team -#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> -#> 1 13188 Howard, O.J. TE 26.6 TBB NA 2017 TBB -#> 2 13640 Callaway, Antonio WR 24.4 KCC NA 2018 CLE -#> 3 15392 St-Juste, Benjamin CB 23.8 WAS R 2021 WAS -#> 4 14878 Gross-Matos, Yetur DE 23.3 CAR NA 2020 CAR -#> 5 9940 Woods, Al DT 34.2 SEA NA 2010 NOS -#> # ... with 17 more variables: draft_round <chr>, draft_pick <chr>, -#> # stats_global_id <chr>, stats_id <chr>, cbs_id <chr>, fleaflicker_id <chr>, -#> # sportsdata_id <chr>, rotoworld_id <chr>, rotowire_id <chr>, nfl_id <chr>, -#> # espn_id <chr>, twitter_username <chr>, college <chr>, height <chr>, -#> # weight <chr>, birthdate <date>, jersey <chr>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/nflfastr_rosters.html b/docs/dev/reference/nflfastr_rosters.html deleted file mode 100644 index 295675c8..00000000 --- a/docs/dev/reference/nflfastr_rosters.html +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - -Import nflfastr roster data — nflfastr_rosters • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of roster data from nflfastr's data repository. -The same input/output as nflfastr's fast_scraper_roster function.

    -
    - -
    nflfastr_rosters(seasons)
    - -

    Arguments

    - - - - - - -
    seasons

    A numeric vector of seasons, earliest of which is 1999

    - -

    Value

    - -

    Data frame where each individual row represents a player in the roster of the given team and season

    -

    Details

    - -

    If you have any issues with the output of this data, please open an issue in -the nflfastr repository.

    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -nflfastr_rosters(seasons = 2019:2020) -
    #> # A tibble: 7,735 x 24 -#> season team position depth_chart_positi~ jersey_number status full_name -#> <dbl> <chr> <chr> <chr> <int> <chr> <chr> -#> 1 2019 ARI C NA 60 CUT Jacob Ohnesor~ -#> 2 2019 ARI C NA 53 ACT A.Q. Shipley -#> 3 2019 ARI C NA 65 ACT Lamont Gailla~ -#> 4 2019 ARI CB NA 27 SUS Josh Shaw -#> 5 2019 ARI CB NA 30 ACT Jalen Davis -#> 6 2019 ARI CB NA 33 ACT Byron Murphy -#> 7 2019 ARI CB NA 22 CUT Trevor Willia~ -#> 8 2019 ARI CB NA 26 RES Brandon Willi~ -#> 9 2019 ARI CB NA NA DEV Sojourn Shelt~ -#> 10 2019 ARI CB NA 28 CUT Deatrick Nich~ -#> # ... with 7,725 more rows, and 17 more variables: first_name <chr>, -#> # last_name <chr>, birth_date <date>, height <chr>, weight <chr>, -#> # college <chr>, high_school <chr>, gsis_id <chr>, espn_id <int>, -#> # sportradar_id <chr>, yahoo_id <int>, rotowire_id <int>, pff_id <int>, -#> # headshot_url <glue>, fantasy_data_id <int>, sleeper_id <chr>, -#> # years_exp <int>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/nflfastr_stat_mapping.html b/docs/dev/reference/nflfastr_stat_mapping.html deleted file mode 100644 index a3637a79..00000000 --- a/docs/dev/reference/nflfastr_stat_mapping.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - -Mappings for nflfastr to fantasy platform scoring — nflfastr_stat_mapping • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A small helper dataframe for connecting nflfastr to specific fantasy platform rules.

    -
    - -
    nflfastr_stat_mapping
    - - -

    Format

    - -

    A data frame with ~85 rows and 3 variables:

    -
    nflfastr_event

    the column name of the statistic in the nflfastr_weekly dataset

    -
    platform

    specific platform that this mapping applies to

    -
    ff_event

    name of the statistic for that platform

    - -
    - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/nflfastr_weekly.html b/docs/dev/reference/nflfastr_weekly.html deleted file mode 100644 index 0da536e0..00000000 --- a/docs/dev/reference/nflfastr_weekly.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - -Import latest nflfastr weekly stats — nflfastr_weekly • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of the latest week-level stats from nflfastr's data repository. -The same output as nflfastr's load_player_stats() function.

    -
    - -
    nflfastr_weekly(type = c("offense", "defense", "all"))
    - -

    Arguments

    - - - - - - -
    type

    One of "offense", "defense", or "all" - currently, only "offense" is available.

    - -

    Value

    - -

    Weekly stats for all passers, rushers and receivers in the nflfastR play-by-play data from the 1999 season to the most recent season

    -

    Details

    - -

    The goal of this data is to replicate the NFL's official weekly stats, which -can diverge a bit from what fantasy data feeds display.

    -

    If you have any issues with the output of this data, please open an issue in -the nflfastr repository.

    -

    See also

    - - - -

    Examples

    -
    # \donttest{ -nflfastr_weekly() -
    #> # A tibble: 112,757 x 42 -#> player_id player_name recent_team season week completions attempts -#> <chr> <chr> <chr> <int> <int> <int> <int> -#> 1 00-0000003 A.al-Jabbar MIA 1999 1 0 0 -#> 2 00-0000003 A.al-Jabbar MIA 1999 2 0 0 -#> 3 00-0000003 A.al-Jabbar MIA 1999 4 0 0 -#> 4 00-0000003 A.al-Jabbar CLE 1999 7 0 0 -#> 5 00-0000003 A.al-Jabbar CLE 1999 8 0 0 -#> 6 00-0000003 A.al-Jabbar CLE 1999 9 0 0 -#> 7 00-0000003 A.al-Jabbar CLE 1999 10 0 0 -#> 8 00-0000003 A.al-Jabbar CLE 1999 11 0 0 -#> 9 00-0000003 A.al-Jabbar CLE 1999 12 0 0 -#> 10 00-0000003 A.al-Jabbar CLE 1999 13 0 0 -#> # ... with 112,747 more rows, and 35 more variables: passing_yards <dbl>, -#> # passing_tds <int>, interceptions <dbl>, sacks <dbl>, sack_yards <dbl>, -#> # sack_fumbles <int>, sack_fumbles_lost <int>, passing_air_yards <dbl>, -#> # passing_yards_after_catch <dbl>, passing_first_downs <dbl>, -#> # passing_epa <dbl>, passing_2pt_conversions <int>, dakota <dbl>, -#> # carries <int>, rushing_yards <dbl>, rushing_tds <int>, -#> # rushing_fumbles <dbl>, rushing_fumbles_lost <dbl>, -#> # rushing_first_downs <dbl>, rushing_epa <dbl>, -#> # rushing_2pt_conversions <int>, receptions <int>, targets <int>, -#> # receiving_yards <dbl>, receiving_tds <int>, receiving_fumbles <dbl>, -#> # receiving_fumbles_lost <dbl>, receiving_air_yards <dbl>, -#> # receiving_yards_after_catch <dbl>, receiving_first_downs <dbl>, -#> # receiving_epa <dbl>, receiving_2pt_conversions <int>, -#> # special_teams_tds <dbl>, fantasy_points <dbl>, fantasy_points_ppr <dbl>
    # } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/parse_raw_rds.html b/docs/dev/reference/parse_raw_rds.html deleted file mode 100644 index cf4ab7dd..00000000 --- a/docs/dev/reference/parse_raw_rds.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - -Parse Raw RDS — parse_raw_rds • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Useful for parsing the raw-content of RDS files downloaded from nflfastr repo, c/o Seb.

    -
    - -
    parse_raw_rds(raw)
    - -

    Arguments

    - - - - - - -
    raw

    raw-content that is known to be an RDS file

    - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/pipe.html b/docs/dev/reference/pipe.html deleted file mode 100644 index 11c8907e..00000000 --- a/docs/dev/reference/pipe.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - - -Pipe operator — %>% • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    See magrittr::%>% for details.

    -
    - - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/release_bullets.html b/docs/dev/reference/release_bullets.html deleted file mode 100644 index 1b714fcd..00000000 --- a/docs/dev/reference/release_bullets.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - -Release questions — release_bullets • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Release questions

    -
    - -
    release_bullets()
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/set_unescaped_cookies.html b/docs/dev/reference/set_unescaped_cookies.html deleted file mode 100644 index 980da570..00000000 --- a/docs/dev/reference/set_unescaped_cookies.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - -Add unescaped cookies — set_unescaped_cookies • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Useful for ESPN which is already URL escaped

    -
    - -
    set_unescaped_cookies(...)
    - -

    Arguments

    - - - - - - -
    ...

    a named cookie values

    - -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/sleeper_connect.html b/docs/dev/reference/sleeper_connect.html deleted file mode 100644 index 120cda1b..00000000 --- a/docs/dev/reference/sleeper_connect.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - - -Connect to Sleeper League — sleeper_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and a user ID if available.

    -
    - -
    sleeper_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  user_name = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on Sleeper - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID (currently assuming one league at a time)

    user_name

    Sleeper user_name - optional - attempts to get user's user ID

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is under 1000 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    other arguments (for other methods)

    - -

    Value

    - -

    a list that stores Sleeper connection objects

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/sleeper_getendpoint.html b/docs/dev/reference/sleeper_getendpoint.html deleted file mode 100644 index e5ca10f7..00000000 --- a/docs/dev/reference/sleeper_getendpoint.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - -GET any Sleeper endpoint — sleeper_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the Sleeper API reference page.

    -
    - -
    sleeper_getendpoint(endpoint, ...)
    - -

    Arguments

    - - - - - - - - - - -
    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    - -

    Value

    - -

    A list object containing the query, response, and parsed content.

    -

    Details

    - -

    Check out the vignette for more details and example usage.

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/sleeper_players.html b/docs/dev/reference/sleeper_players.html deleted file mode 100644 index fde93a67..00000000 --- a/docs/dev/reference/sleeper_players.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - -Sleeper players library — sleeper_players • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A cached table of Sleeper NFL players. Will store in memory for each session! -(via memoise in zzz.R)

    -
    - -
    sleeper_players()
    - - -

    Value

    - -

    a dataframe containing all ~7000+ players in the Sleeper database

    - -

    Examples

    -
    # \donttest{ -player_list <- sleeper_players() -# } - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/reference/sleeper_userleagues.html b/docs/dev/reference/sleeper_userleagues.html deleted file mode 100644 index b733b958..00000000 --- a/docs/dev/reference/sleeper_userleagues.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - - -Sleeper - Get User Leagues — sleeper_userleagues • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns the leagues that a specific user is in. -This variant can be used without first creating a connection object.

    -
    - -
    sleeper_userleagues(user_name, season = NULL)
    - -

    Arguments

    - - - - - - - - - - -
    user_name

    the username to look up

    season

    the season to return leagues from - defaults to current year based on heuristics

    - -

    Value

    - -

    a dataframe of leagues for the specified user

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.6.1.

    -
    - -
    -
    - - - - - - - - - - - diff --git a/docs/dev/sitemap.xml b/docs/dev/sitemap.xml deleted file mode 100644 index 1cc2818f..00000000 --- a/docs/dev/sitemap.xml +++ /dev/null @@ -1,219 +0,0 @@ - - - - ffscrapr.dynastyprocess.com/index.html - - - ffscrapr.dynastyprocess.com/reference/dot-add_allplay.html - - - ffscrapr.dynastyprocess.com/reference/dot-espn_activity_map.html - - - ffscrapr.dynastyprocess.com/reference/dot-espn_lineupslot_map.html - - - ffscrapr.dynastyprocess.com/reference/dot-espn_pos_map.html - - - ffscrapr.dynastyprocess.com/reference/dot-espn_stat_map.html - - - ffscrapr.dynastyprocess.com/reference/dot-espn_team_map.html - - - ffscrapr.dynastyprocess.com/reference/dot-ff_clear_cache.html - - - ffscrapr.dynastyprocess.com/reference/dot-fn_choose_season.html - - - ffscrapr.dynastyprocess.com/reference/dot-fn_drop_nulls.html - - - ffscrapr.dynastyprocess.com/reference/dot-fn_set_ratelimit.html - - - ffscrapr.dynastyprocess.com/reference/dot-fn_set_useragent.html - - - ffscrapr.dynastyprocess.com/reference/dot-mfl_logincookie.html - - - ffscrapr.dynastyprocess.com/reference/dot-retry_get.html - - - ffscrapr.dynastyprocess.com/reference/dot-retry_post.html - - - ffscrapr.dynastyprocess.com/reference/dot-sleeper_matchup.html - - - ffscrapr.dynastyprocess.com/reference/dot-sleeper_userid.html - - - ffscrapr.dynastyprocess.com/reference/dp_cleannames.html - - - ffscrapr.dynastyprocess.com/reference/dp_name_mapping.html - - - ffscrapr.dynastyprocess.com/reference/dp_playerids.html - - - ffscrapr.dynastyprocess.com/reference/dp_values.html - - - ffscrapr.dynastyprocess.com/reference/espn_connect.html - - - ffscrapr.dynastyprocess.com/reference/espn_getendpoint.html - - - ffscrapr.dynastyprocess.com/reference/espn_getendpoint_raw.html - - - ffscrapr.dynastyprocess.com/reference/espn_players.html - - - ffscrapr.dynastyprocess.com/reference/espn_potentialpoints.html - - - ffscrapr.dynastyprocess.com/reference/ffscrapr-package.html - - - ffscrapr.dynastyprocess.com/reference/ff_connect.html - - - ffscrapr.dynastyprocess.com/reference/ff_draft.html - - - ffscrapr.dynastyprocess.com/reference/ff_draftpicks.html - - - ffscrapr.dynastyprocess.com/reference/ff_franchises.html - - - ffscrapr.dynastyprocess.com/reference/ff_league.html - - - ffscrapr.dynastyprocess.com/reference/ff_playerscores.html - - - ffscrapr.dynastyprocess.com/reference/ff_rosters.html - - - ffscrapr.dynastyprocess.com/reference/ff_schedule.html - - - ffscrapr.dynastyprocess.com/reference/ff_scoring.html - - - ffscrapr.dynastyprocess.com/reference/ff_scoringhistory.html - - - ffscrapr.dynastyprocess.com/reference/ff_standings.html - - - ffscrapr.dynastyprocess.com/reference/ff_starters.html - - - ffscrapr.dynastyprocess.com/reference/ff_starter_positions.html - - - ffscrapr.dynastyprocess.com/reference/ff_transactions.html - - - ffscrapr.dynastyprocess.com/reference/ff_userleagues.html - - - ffscrapr.dynastyprocess.com/reference/fleaflicker_connect.html - - - ffscrapr.dynastyprocess.com/reference/fleaflicker_getendpoint.html - - - ffscrapr.dynastyprocess.com/reference/fleaflicker_players.html - - - ffscrapr.dynastyprocess.com/reference/fleaflicker_userleagues.html - - - ffscrapr.dynastyprocess.com/reference/mfl_allrules.html - - - ffscrapr.dynastyprocess.com/reference/mfl_connect.html - - - ffscrapr.dynastyprocess.com/reference/mfl_getendpoint.html - - - ffscrapr.dynastyprocess.com/reference/mfl_players.html - - - ffscrapr.dynastyprocess.com/reference/nflfastr_rosters.html - - - ffscrapr.dynastyprocess.com/reference/nflfastr_stat_mapping.html - - - ffscrapr.dynastyprocess.com/reference/nflfastr_weekly.html - - - ffscrapr.dynastyprocess.com/reference/parse_raw_rds.html - - - ffscrapr.dynastyprocess.com/reference/pipe.html - - - ffscrapr.dynastyprocess.com/reference/release_bullets.html - - - ffscrapr.dynastyprocess.com/reference/set_unescaped_cookies.html - - - ffscrapr.dynastyprocess.com/reference/sleeper_connect.html - - - ffscrapr.dynastyprocess.com/reference/sleeper_getendpoint.html - - - ffscrapr.dynastyprocess.com/reference/sleeper_players.html - - - ffscrapr.dynastyprocess.com/reference/sleeper_userleagues.html - - - ffscrapr.dynastyprocess.com/articles/espn_authentication.html - - - ffscrapr.dynastyprocess.com/articles/espn_basics.html - - - ffscrapr.dynastyprocess.com/articles/espn_getendpoint.html - - - ffscrapr.dynastyprocess.com/articles/ffscrapr_caching.html - - - ffscrapr.dynastyprocess.com/articles/ffscrapr_scoringhistory.html - - - ffscrapr.dynastyprocess.com/articles/fleaflicker_basics.html - - - ffscrapr.dynastyprocess.com/articles/fleaflicker_getendpoint.html - - - ffscrapr.dynastyprocess.com/articles/mfl_basics.html - - - ffscrapr.dynastyprocess.com/articles/mfl_getendpoint.html - - - ffscrapr.dynastyprocess.com/articles/sleeper_basics.html - - - ffscrapr.dynastyprocess.com/articles/sleeper_getendpoint.html - - diff --git a/docs/docsearch.css b/docs/docsearch.css deleted file mode 100644 index e5f1fe1d..00000000 --- a/docs/docsearch.css +++ /dev/null @@ -1,148 +0,0 @@ -/* Docsearch -------------------------------------------------------------- */ -/* - Source: https://github.com/algolia/docsearch/ - License: MIT -*/ - -.algolia-autocomplete { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1 -} - -.algolia-autocomplete .ds-dropdown-menu { - width: 100%; - min-width: none; - max-width: none; - padding: .75rem 0; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, .1); - box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); -} - -@media (min-width:768px) { - .algolia-autocomplete .ds-dropdown-menu { - width: 175% - } -} - -.algolia-autocomplete .ds-dropdown-menu::before { - display: none -} - -.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { - padding: 0; - background-color: rgb(255,255,255); - border: 0; - max-height: 80vh; -} - -.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { - margin-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion { - padding: 0; - overflow: visible -} - -.algolia-autocomplete .algolia-docsearch-suggestion--category-header { - padding: .125rem 1rem; - margin-top: 0; - font-size: 1.3em; - font-weight: 500; - color: #00008B; - border-bottom: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { - float: none; - padding-top: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { - float: none; - width: auto; - padding: 0; - text-align: left -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content { - float: none; - width: auto; - padding: 0 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--content::before { - display: none -} - -.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { - padding-top: .75rem; - margin-top: .75rem; - border-top: 1px solid rgba(0, 0, 0, .1) -} - -.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { - display: block; - padding: .1rem 1rem; - margin-bottom: 0.1; - font-size: 1.0em; - font-weight: 400 - /* display: none */ -} - -.algolia-autocomplete .algolia-docsearch-suggestion--title { - display: block; - padding: .25rem 1rem; - margin-bottom: 0; - font-size: 0.9em; - font-weight: 400 -} - -.algolia-autocomplete .algolia-docsearch-suggestion--text { - padding: 0 1rem .5rem; - margin-top: -.25rem; - font-size: 0.8em; - font-weight: 400; - line-height: 1.25 -} - -.algolia-autocomplete .algolia-docsearch-footer { - width: 110px; - height: 20px; - z-index: 3; - margin-top: 10.66667px; - float: right; - font-size: 0; - line-height: 0; -} - -.algolia-autocomplete .algolia-docsearch-footer--logo { - background-image: url("data:image/svg+xml;utf8,"); - background-repeat: no-repeat; - background-position: 50%; - background-size: 100%; - overflow: hidden; - text-indent: -9000px; - width: 100%; - height: 100%; - display: block; - transform: translate(-8px); -} - -.algolia-autocomplete .algolia-docsearch-suggestion--highlight { - color: #FF8C00; - background: rgba(232, 189, 54, 0.1) -} - - -.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { - box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) -} - -.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { - background-color: rgba(192, 192, 192, .15) -} diff --git a/docs/docsearch.js b/docs/docsearch.js deleted file mode 100644 index b35504cd..00000000 --- a/docs/docsearch.js +++ /dev/null @@ -1,85 +0,0 @@ -$(function() { - - // register a handler to move the focus to the search bar - // upon pressing shift + "/" (i.e. "?") - $(document).on('keydown', function(e) { - if (e.shiftKey && e.keyCode == 191) { - e.preventDefault(); - $("#search-input").focus(); - } - }); - - $(document).ready(function() { - // do keyword highlighting - /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ - var mark = function() { - - var referrer = document.URL ; - var paramKey = "q" ; - - if (referrer.indexOf("?") !== -1) { - var qs = referrer.substr(referrer.indexOf('?') + 1); - var qs_noanchor = qs.split('#')[0]; - var qsa = qs_noanchor.split('&'); - var keyword = ""; - - for (var i = 0; i < qsa.length; i++) { - var currentParam = qsa[i].split('='); - - if (currentParam.length !== 2) { - continue; - } - - if (currentParam[0] == paramKey) { - keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); - } - } - - if (keyword !== "") { - $(".contents").unmark({ - done: function() { - $(".contents").mark(keyword); - } - }); - } - } - }; - - mark(); - }); -}); - -/* Search term highlighting ------------------------------*/ - -function matchedWords(hit) { - var words = []; - - var hierarchy = hit._highlightResult.hierarchy; - // loop to fetch from lvl0, lvl1, etc. - for (var idx in hierarchy) { - words = words.concat(hierarchy[idx].matchedWords); - } - - var content = hit._highlightResult.content; - if (content) { - words = words.concat(content.matchedWords); - } - - // return unique words - var words_uniq = [...new Set(words)]; - return words_uniq; -} - -function updateHitURL(hit) { - - var words = matchedWords(hit); - var url = ""; - - if (hit.anchor) { - url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; - } else { - url = hit.url + '?q=' + escape(words.join(" ")); - } - - return url; -} diff --git a/docs/extra.css b/docs/extra.css deleted file mode 100644 index bc219da0..00000000 --- a/docs/extra.css +++ /dev/null @@ -1,17 +0,0 @@ -@import 'https://fonts.googleapis.com/css?family=PT+Sans:400,700|PT+Mono:400,700'; - -body{ - font-family: 'PT Sans', sans-serif; -} - -h1,h2, h3, h4, h5, h6 { - font-family: 'PT Mono', sans-serif; -} - -pre, code { - font-family: 'PT Mono'; -} - -.navbar { - font-family: 'PT Mono'; -} diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png deleted file mode 100644 index 706caf1a2ecaf9d5af2f9769ee58f2d4aa5bbaa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 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 diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index b86d30b9969ab4b7d194747ef89f8d8ee79ba9d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 2dac660d..00000000 --- a/docs/index.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - -ffscrapr - R Client For Fantasy Football League Platforms • ffscrapr - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    -
    - -

    An R Client for Fantasy Football League APIs

    - - - -

    Helps access various Fantasy Football APIs (i.e. MFL, Sleeper, Fleaflicker, ESPN, Yahoo, potentially other platforms) by handling authentication and rate-limiting, forming appropriate calls, and returning tidy dataframes which can be easily connected to other data sources.

    -
    -

    -Installation

    -

    Install from GitHub with:

    -
    # install.packages("devtools") OR install.packages("remotes")
    -## remotes is a subpackage of devtools
    -remotes::install_github("dynastyprocess/ffscrapr")
    -
    -
    -

    -Usage

    -

    All ffscrapr functions start with a connection object created by ff_connect, which stores connection, authentication, and other user-defined parameters. This object is used by all other functions to help return the correct data.

    -
    library(ffscrapr)
    -ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020)
    -
    -# Get a summary of league settings
    -ff_league(ssb) %>% str()
    -#> tibble [1 x 13] (S3: tbl_df/tbl/data.frame)
    -#>  $ league_id      : chr "54040"
    -#>  $ league_name    : chr "The Super Smash Bros Dynasty League"
    -#>  $ franchise_count: num 14
    -#>  $ qb_type        : chr "1QB"
    -#>  $ idp            : logi FALSE
    -#>  $ scoring_flags  : chr "0.5_ppr, TEPrem, PP1D"
    -#>  $ best_ball      : logi TRUE
    -#>  $ salary_cap     : logi FALSE
    -#>  $ player_copies  : num 1
    -#>  $ years_active   : chr "2018-2020"
    -#>  $ qb_count       : chr "1"
    -#>  $ roster_size    : num 35
    -#>  $ league_depth   : num 490
    -
    -# Get rosters
    -ff_rosters(ssb)
    -#> # A tibble: 432 x 11
    -#>    franchise_id franchise_name player_id player_name pos   team    age
    -#>    <chr>        <chr>          <chr>     <chr>       <chr> <chr> <dbl>
    -#>  1 0001         Team Pikachu   13129     Fournette,~ RB    JAC    25.5
    -#>  2 0001         Team Pikachu   13189     Engram, Ev~ TE    NYG    25.9
    -#>  3 0001         Team Pikachu   11680     Landry, Ja~ WR    CLE    27.7
    -#>  4 0001         Team Pikachu   13290     Cohen, Tar~ RB    CHI    25  
    -#>  5 0001         Team Pikachu   13155     Ross, John  WR    CIN    24.7
    -#>  6 0001         Team Pikachu   13158     Westbrook,~ WR    JAC    26.7
    -#>  7 0001         Team Pikachu   10273     Newton, Cam QB    NEP    31.2
    -#>  8 0001         Team Pikachu   14085     Pollard, T~ RB    DAL    23.3
    -#>  9 0001         Team Pikachu   13139     Williams, ~ RB    GBP    25.3
    -#> 10 0001         Team Pikachu   13649     Hamilton, ~ WR    DEN    25.4
    -#> # ... with 422 more rows, and 4 more variables: roster_status <chr>,
    -#> #   drafted <chr>, draft_year <chr>, draft_round <chr>
    -
    -# Get transactions
    -ff_transactions(ssb)
    -#> # A tibble: 172 x 12
    -#>    timestamp           type  type_desc franchise_id franchise_name player_id
    -#>    <dttm>              <chr> <chr>     <chr>        <chr>          <chr>    
    -#>  1 2020-07-31 16:19:51 IR    deactiva~ 0004         Team Ice Clim~ 11688    
    -#>  2 2020-07-31 16:19:51 IR    deactiva~ 0004         Team Ice Clim~ 13277    
    -#>  3 2020-07-31 16:19:51 IR    deactiva~ 0004         Team Ice Clim~ 12667    
    -#>  4 2020-07-31 16:16:36 IR    deactiva~ 0013         Team Ness      14140    
    -#>  5 2020-07-31 16:00:00 BBID~ dropped   0004         Team Ice Clim~ 13190    
    -#>  6 2020-07-31 16:00:00 BBID~ added     0007         Team Kirby     14129    
    -#>  7 2020-07-31 16:00:00 BBID~ added     0004         Team Ice Clim~ 14333    
    -#>  8 2020-07-31 16:00:00 BBID~ added     0014         Team Luigi     12164    
    -#>  9 2020-07-31 16:00:00 BBID~ added     0014         Team Luigi     10297    
    -#> 10 2020-07-31 16:00:00 BBID~ added     0013         Team Ness      7813     
    -#> # ... with 162 more rows, and 6 more variables: player_name <chr>, pos <chr>,
    -#> #   team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    -

    For a more detailed usage example, including a template dynasty league analysis script, please check out the reference articles and/or vignettes!

    -
    -
    -

    -Contributing

    -

    Many hands make light work! Here are some ways you can contribute to this project:

    - -
    -
    -

    -Terms of Use

    -

    The R code for this package is released as open source under the MIT license.

    -

    The APIs and data accessed by this package belong to their respective owners, and are governed by their terms of use.

    -
    -
    -
    - - -
    - - -
    - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - diff --git a/docs/link.svg b/docs/link.svg deleted file mode 100644 index 88ad8276..00000000 --- a/docs/link.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/docs/logo.png b/docs/logo.png deleted file mode 100644 index 0080b654541469541a94035925741d88fcaeae19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178428 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

    jZmLHIr?QCe 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%0D3{Lc(klP?` z!{>u>0@{}hAWk66PL|+cshOz0=eL4nD%v|O~*k@Eu7(@KPyGBMQLwJqIqX$MoIK$s~21JhZ zku5oNm(^9{dT3Yk9E@Jk&N^{FKQXAK#Wvw!+%Cb!-HXGqcIdu~`^B%=|0uV^fSKtM~^Ju;o~*kZecH&@mNbma|2yn-GW0Q zgWp(`)~xVw;pb)7b=aJz?Y+vK-Zp8TUc4TTZ~d=HM7~>yyzoknzQ#w;6zC8)9>$3L zZj{LI|MSP!q*4d`zEgY-C(+Uj2iRw$m2v=|@qB{5Bktj>n;}RPZKayy%8YIDH7=l8 z3N$gH9Rxx}t3Ml;fN9ZXF1mkpv*qs}3k&xXZEFhqnef?*uj}`1y_Dcxd_vkDnaOk_W(iDzl}9=I;-czZ##Pd_D$F=mleZ zIQ>84|8B24`NdWc31o#J=NIr@>nEU3VoOT~p}bV`A- z_TZPDkGZ8lNLQC{Q4O{wiJGy@_vHt+>sH_sQ!rEfCL^CuEqk_dlBJ#FipxaW0-sCH z=i;zXY9sRN>4RAsw{5&ck*VIF?VUdaJv4s8$S>5{)wRIxd-Lh{zGJAZB9SLIaxH*w zi}9pBxeE4kf`uJ#%Z&$$PMU%vx}j}t;>-I#ZN5%Y(V9uyj){VWoE$uh2nf`zwa9S*iKT$og@J-|j1gZl zTkY1e;~hBL$Y$g3apd0+cqNqJ74X(`&OR040{=1*TE+*atsUe60BoZoQPVO^%h9;A zwH2dcl0_kh7zGxzc-}nCgE0c^y^P+O`R)eLAOojokk!UlQXJ~@^>Sx4RPshbdX|u} z?%oR(Z>+o&M+Jj9XP}23gEJPIw_NlC!}6N&8%e?*75iE4A9Pl7*(SLm4?k9apgR84 zBQ%tlq3Ytd$v(knyf}n7e07`GUTAjwIsYLfV)$kJ9VRSSPK?P1*Lu!l3hRED&wY&L zGq3UW?VB8rY~0VEJF)%3Ba%{h>cYC|@H=eWcAguBs9E+|cY{Q4Z@{hjGIB`(D?3ZcL30=< z0|Elj7RWUBMO>s-K;xs`Zc4jW@&I)EPmlNDl6z|=d&HHP=4(hW#)z{ebj;7w7FAnV zTDGAbYv@zTUURwf&tx=J@PPF%TTJhx_0fEEh+v*#dzcwm5|e5Fj|f zN|*&WyJB#h>s~fru~R`*l7H44AkJEXW7rPA0(P8%9l6Fnd#`gwRIW(joX5ukzwu?F zWBZDb7%tN8y&*#^VH^J+H1YWabW%R|)itBM!&7-7dTsA4UwtvlcYyab6m z;yk0Ak*ks(0bX`*pv+$s$|HVp_8;L4=0+$8K?@OqDlkyu%h=hmqfNK^Y_(fEJrIDi zNWghhJ4?sQNmJ5{{Q1o*7wj6jsW6g~laZ+_Ql|i*hUByy;EjT&sIcFLkWnQ~cr!)n z`cowS1Ou#2JoYAkAQd8HtqW?xa_DSr+)BW%wexYgjhhoJW@;+tOBhe^@Z`!$dO%&y zB_I%zk&$8JR7rSenW$;QU`N8-oQXhq_b!!vE2hA_|CutFP;BqH5nQ}z1W+0*pxx5* z_4M*W(+C@{w3}iwFjLe!kl8*AGhFB-qQuozX>2{M`Dbp zPcglByuNgZo@}bus<27r=j%aeFyVS_;}&;j;;?&xvxh2Rd|V58q!kwz!vpQM^?SgV z+yxcMOJo5I$eKI2hVH_?QlMQtoH+FAfk7n9(vWoQy4wTpP@RvSF?HC=$_e($6@hzC z>@+_VjwjhU(>LyL>204WPE<`NnO@y$_r><#8U zYD@xYg07dgwd(D-8eWgSEJ64>Y%Ny`AzDJADW$GH!q<|U%ecJnflok?sm*ddP62bG zqHSjEIP!ZBMW5SZyx#}6MFr|Ja8buTvbLz+|8px{eMP9#&E%vpGmO*1)>Z~Wr)YX` zHEFL2aj%JE-rD1O`7)o&ZYnf!2N^$aM)fvXEC(4K$8$0VNi5hz8W`il)@Nijk9(OB zS%k{vjl5rRgdcKp@`-Otyws6)UPbXcDW#t&UB~nXzcZ11NY|S96R!5CZ)5V$$&O*I zF?m-m+pd|xO75>iJK;^R&ANS8PW#2>QUtN7{? zyI9iyB{2@wcF~k%y<2yT?bU^!TdzLZmJeSg)7&chYGoxh+WqpgZfK;&hTE_95xupo zl7%J%)heC<{p%O3R~0Vmitu_^Iz%0ojbF#_s6DO!t@3kcQ*P4hL@a=I;#+!S#{o_r z^W?#M7Jk>hdvgYf zXWH{MK2xx_y~XrNM7LSH#jVoI{srC%o%RztHmcU^+j2ig=vLCdQ+}Fmxpnc;^c`*A zcQ+&Lrd|i<_E1(Pt{9I${YgYduaGFzX=b}J5gdA6w2^k`_hVjPy|LVoT0-YyO#AH* z@ij3lW#p}=R=>C3I%#l_9`SC62DjteGShz&t7t6g<%qJalY08LD1+I>;$U<+r%O6O z)GNM3_hPN*_Viym7EdoprizY!5c-fY+9ofQ9 z@%PC}7oJu|OQ*Eg*WXxp-8vDp_4}P)(JFiKuLqI?ia$;Vu!8Mg*IGB9dz5ZvE)_+N zKY-7;=wsZy^yTH5W1U2qxr%xrieoH&gUqTlwz14HO*qJ87pa?Piwo$IM@gxtEn1hf z4eHXy0<7hE+V-O?7|fm?E}ms}tB=;=Y(>iW>f{@H81^>IBI3r$ix@1*go zuLf*jH2J(Dn7kE3G|#<9dRk>fF?X5rZ+s-@_VJQXqaJ06%0bAKXM;wl)`Q}Q%^gc> ze%@5P;su0}<_9mn%U0sj1-|lhbZ6^4;=f{Vl-c>*)^r(jhKKED|CW;L7uC?`Z1)3% zTx!k57rV~-mkNL3Ig&MEX?niz8a((X7xQz^QTvGNdHyRW<*rQd-@GvE3)%aJF0hBW z5LGYDtBE8TRM%VXMIG+mF>G)(+%;M))G&Lumm#yrrYb6?Lpc4b!JV29o4 z53QK^!#jrypOOaqRSr*!$K`o#*5f^TS_{T71`Nh$el@oyc3}vvM^R!&a2fB$Jh#+a z-6D;V3wu*P$fT-kMj*7L~}^?bUfbTF?=EFmK~y6qaF zGhgK#Ldk!{!Aj6XvX+bQjCS4aAtz@M%7(kC$qg9x#MJDrjEy^GHRZx~{DyYt9#~5F zOP7-Y5EXxKe%2s50xn%Yb98>9LAO!ghO zp2rIZ{y+U=L#;O>1xS02=C+y)BwVFO*_HJRRT@kA#B4;R2-5Hlo^B|~oEfB1!xc6R z8QeW(B35G8)=$KDAYWUJz&PP}Qdf4Peid6DuN;bk4z<~L7z5gKGoBTbTy}10RWZy| zrrq<+&n=IoZ-omf$Y-~?X}m9a@hj+A=z*o%_-bCSY(QvLK&dgAdxGuO-U^#RdW7Y> zkY7oTqXCUl9;{jVlys`5eKRw}f7mWxe?*zj#iE7H>D~OU^hni`_L8qkhoUui zIDOj2JsOj9eDvuE0{lYmwX;*2+t0CiP^zZJHQrzw&zsdrPG_XK*rntm@xNREwqb(d zpK8ZiwRQ(G*Qf{AJ9rtgn|C=MT&s)tL##dj?i&$*Q?scp8)XB@9*%!dVYJA#EgzBF z6b=5F5U5w1W@*D}G3#*es!sKieAsvW>(#$*0ktP2>n6kOQl_4SRC-ly#Y z7BpYi&)9#fkhc*#k2Ql4Fp`t1zkqSMC;E8q*f_CcQ4MQ@si(n z-Eo;INkPL4h8u^N)YDU~s+ift?x!Jq?#d0aB9X5Z*Ls?+s6^k(*sdh@JbUAA z>GdUPE$5zV&JLoFSvWbihLua~^*IQ3E_5%FR}ilL!Z!Gk}Ct52S>yM6o>tz(xdn&j^hxGPL&;-T<*w=QM7aUJ3Cq2Go%z)m9yvee2Us5 zq>TRW*Ze=BP%(r>)fZo;o^O%5IW-c~f2oo#{>jbxjx$fbYRR=!A1i#K*>QfCfhYAQ zAFt_-9sfhFlv+JHuh-;%9(Z$YTP8m5c*Z#_7-e?CSYpR6*m&c@#)8^^HHu@Dj3=wN z&DZa2vr`?M=ZBtVVaYM<9$&KAO>rjtW;`xx;;^+LeX3}P+rR0pDKP}^Dnr|9L+Mce zb3{o~)qP%jSGZh>$?LvnT5}9ogXb<^uOV;6g`@t-jAF0jSQK5ZgPgPDPIKFDU-@Rb zLER7qb;IH4CL`|WE){Q~?dCB`7kA-8mC@vJVe|L)^Bxl3rYBB*rNs8O6@f?gwzgg5 z^DUCbq%J>>ie9*$$6Kltd62fgfWnIn)4mJ^MzXLDRWlY}+mX7)M5%a4o7n6; z&s8+WKjaAVG+H^0EM~PyPPO$2nKJC5Or8bzReq$$kGSx#Ez{;~)dh(w379+Dq(%)7M@dIs|cc&p-3ucXjKEFuroUC?K3! zrNuUuF{zoHOiFW+`u~Dp^m>O=h{f}@yyV@wORP_llTW7N>+9i#Nww>Gn?A`L9lE;k zoQ-HNmkpyTi}?$>Qlx~db1&!(g$`kT>P~`Bc!+K&e|Jlv(&gSdX*%H z^GXg&R5L~|k-2sY@s)aBY!zd-PCMyH#7)qi7lHT1(ZjQN2=B`#v8z9a{$c2RlR@)W zjf9&ed5XN2Zey!?{jwC_4t8BOpZ#cvnQ9xtt8NRX*tqyP_SLWU9(|XPVL@e99dGB> z#kwaUUo|voSa$V{%idzVmFju~Q7wLq*0#~_Gyb;LX~@6+Z^W!=4q zncOy;gK1K%XLnWlTkk_=RefWq3APLSRbnD>$Slu&^QMW?b)vSGI8WE{w3JNhaI^)0_q^>xs!Ce}f>xJVuj<(cER&^r)@)CE!nYMB zraN~Jjy1eHmD?e=^mVL9++GNc@XhoN(=WPLSt-MRPdQ1SenD`QW-dojKWOd#!3)ok zB&c>mzU#t8&y1AZCnaN${5YUzN%HwT=1inShv~J~aixlVa!W4iwI5UZMK&-`_g}8o z2pN@~Z7qj4xJxh+BD8oi@5VCw1cEcNqoPuEnHkoAv|cz(QKT2{CVC2IQ!yTy`%;hloX{#Q)yAU+lMNy4@%UAmF9qUEw-%X0OhxYgq&hri6 zZg4UE!D-eIR$i`TO6mp9_^oIKkFM5-oa{qhrBxw(0#=XC;Xe|J5h28nNY_rQO^$bU z3@T@AWhiG9CK}_<7*3NLTNb^k2#t0`v;4bIR zZDHFnBl-<@`?{R`XS)Rp+i8=RC69?IBwfpvNQo_Pim7n?LyXgwvwx!XTVA&ldt&q&<35gO zdQGbXbJFwxC(f61Wi3@Pc;py)*h>zXS3^%ac((D>$rtYp-rn77?^;PRuy<=yrC_zr z{{O|qbgN>1(IQq^?7EAeV~!(sBA)`juRFC^q!Hrq#7pCY;2AFuugoLS4wVmtl+Bj+ zF`<%|Tw(&1`xu5JiXXNpqxC>$CN`8|-VEvEZCot*2QENQ_P=3K<-qZWgw1Y7w`WH# z?^WnmTvbc@%_GRG>J|=&2Phv&)=E_P*9-D;jtIg5VW(_}YZG#jZAGsStIldNR&wV; z`$RRyz`2P$DuR)kfoYK&iT+(VXFYAib#Hw?_8yw|++sVnb{$>L?G1XrxKuxH+#g6p z%zLb_T$QnsB7D=%L6xgBMc6BfVoiR@V(-%IRbH6pgNpR?5*`i{jEv~ke5SURa5LuufA=UC8H+;i5a zEkVf4r?-e-bW|=xCi8S6)X`>GiQuUdjsn~;t~8lPqyrlpzG}LiE)%20SX*b_`IWbp z8?Y9WX0b7zKY{dzTgy$>%hK@BE?x6sZ^D{yCt-Ek#@T#~ z5iBoM-+svq|BnqEzGOxDA8lVe8oh_U+)>pbOIZK3Suk`jD~5h}W5KD}d8@hgU(8U6 zV5Aiyeoj|0SyY8X*OB>f@YX##d)M2Y`8uuI@C{8YA8lqH{+Sa~2$j0Z=VGlSn|b1Z zM>RAy?AeUnjF)H$@9BP8?Md1rsz1d%{(mp$Mjg!)_&nU*PPKJq7eG3S+VZ{t*&Ben&9 z-1jPuan3vaN7wQH@Q#NOb~Db`JSJ|bzGInF&`vhBa4E;dv6vJx-Ym}@OZ$v~^y8Y< z<}t+r!a+JNHJD5x9tT=y4pYsE@iJs7vA14W`WQYSvP^%~Ych9e7tRUmd;>Yr7Da>& zvXDytTfcVs?dm;t3Hm#aKP_frhFVIyIx*9mC~#Uo3yE_kYmHy{S%q=gnWjrlyM1@}%1MkD9AO z6=NUm-A`;IR6O(bfj57PGk2S2W}R)xSoZ9LtaL^uRyGP@?T;2>uS=H_O+7-n&jzr7c@fD zxk$&nmfbrHC5_1jc6NRTRE3nj->DPs!D@^5Xk7KeIE*@UcyUEyMo(eE+=v2u!J~0F z`RFFm7_W0N+g3BhZ+M{&L-TZ7^LkF|g8!advC{baCP(#J0CB+>38ck-!^#wwczq6bc_V}ln@A`h0#=sb?p_&+e)a~7+%W{@OW~ztb zq4*{K_~>I}?GyOD_nzG(9^-W>XWJT}_+53!ayKKOSalA7Fz5Ga4230?iE*P8~+HWG7EzH8F1A1YSIkFdL0a6Zv(EfPZrtWCgq zHPH{h<6=vxl+Ua|(cu5{JIeFdt!oJTZ{#bz&^H|CTi^H~ylUBRY*XQJS#mxFURDJu z=1Dz?kx?3U*<0?R-(tgT%Ukbvn%}eiyrvwcVl!u7&UvVZaTpJ;3^TA!NNJ&sBOrRW z$>91IlYHKi@wI2QGO{+x|DjLEDLaZwgFX8H9vxSt2bYfO;E2B7M=T~YR?(yjL)k|{ zKXOrX_QDsQ@ybx(Q?ZZR#HrhSol2&s-59R#46A2{vK+p>18KV z9<+{880?O(zwK8B%IwNhJRAu?NK`hpB7DgC^e3Y9_n%eaUZwut$f3sB zm#nA42QBeHjH|nwjnKF$x=V^~I*yuCf#ALhCEuPAaEUCsFq*&6&Q$}7N7`R}OR zP`MuC@o^-HY-MUawYIScm(Jd-d+~>Jh(PU0oY9cYnUkLbf97PfHRVj-?{vNonXsMP z=EXRSK6Jnxm@Xz5z8B`X!W1x}`mz!oo}G z1bjM&u$7;WDff#fG4%)gc=MfhF%s)+))ou=bFxQF*9@KdcEeGYZne%$_J-(=9-F~oQ}+eD%37? zPtX9i>7iHPR#}CA^^TyciODES^5{6}**Z*|JjKSk?#r%3a6_6tushG(8or2kOTToQ z!LPW4;$4-%P{2=7vy<39-K@A?iq}2De&4Tiot!bUa*eNLLazSMFd?< zv#nU{Y(=i(DB>$MqENTCHFt@Cwj&CEG5msj=KV%yUTD+5=61cH7NpAFILiOV^m=PV zkegfZby1YZ$C%!io@tyoOOm0LT&0F{;jQ2uKst`BLTX-c5XNx8$Bpd3IPT!#Ba|U#5^yxxBD-aJHt^OJ{Y7Gpagg{-+p-i6JGkBuw9beQirAU*C)iPLOe$m&d_} zBz_ZzA^$E+H1Lr&-kkj@;oi0IjW;>lRL)2`7;r~d_`7AaIF#Aog+Jn{)# z-BRGcQAHHzVqZ+~KdJTqB5`v4N0Zz+$Y86SD%KB2t)^?wrzF%sF?ju>aRz7T>QSlg zEgK1|(9?mC(eSvKwG^Xb1N?a+OR|KUt&0f+gVS-gq82w40Igx2GT{AX={UTY`LATp zEimD8%1YjlWV8;GVcehThf=fpBc=6I?qO1MGZqN7A()<$q0EBNSjjcM`bFC!blt_Y z(WCLf84DDb`fCCk+pkbpTs_!#%}FMpcrlz*rxogI819>tQdRda)ZY1$XO?9LUx0D{ z$MTpE_xi@wl_p&iY>c^>N&zv`A*xiu596V})(*3ECYHTVie4Pz%YP?bc9W9|)QnkG zV(s3Hn{S$Z`K{c8g&;=T?BFAL!rWJDMl0(jU6CoD|NSx@Zs%w!eF`Vhz2Nx{L$4m; z)iK6G5kh^QM-Gpk)~;&FouB_xrhU42`U8(L$5ifj)Rzn*)dpPx1ET+sCbp8jz-yfV zF+IGTSX-D;|0eZqaa8Dm#eePMe=~(I6k(#~a5t398e$H&J^^{-bR&ynMKbJ*-RI34U(a99>E8D_=e6GN`=L#kPJ6?NAKFjsGF1@Po?Gr=6eQ%dmJp<9 zja;~Wn`s*S2$b+hJq4}ng4oo{4+&SG>$iVN?1#acPI~{?0dOddq z*|xX{X0AR5-`pE(=zm-IR5u4viXNB#pj7&{Y7P01+)}Ez_oO`Ug@JNbC%#Em?B(h} z+F-toi;S+GWBiSJy)imaC6kWXn--0n9^>z{vPc7D(7N$bTZ z!gl?aN2^u&O!lx$R1_r{tc8$b21MId+OK=mYl2DL*Y?Q;(77Y_;s7RWfE$kKMAt{D8MyI6F zID;JHB(f>5t+DKnZMaAO=>Uj6&!<&pRjOepEEW2em$?||@qlF5a9)TlETX#!tm@m= z8!g|#nFIk4dQ7!GY9yN2KkJ>FtFTmYz9xyydYVG3}T&1 zwpJ4fG6a{rcM3zpgQuShQN0PaDsJM6f=-xk-9Ew!!|G35x7<=biJw%gzT{qT`5)Z> zz~4^a|7BeEj}-ys?*KFn)Fh*f%|-RuZV@9yhZY~0BHvtC+k5p<9&<&WgDtG@+F=Za zH?z3Tt;fz1tlJc|&SVbEF(s9nEVs;uakP3RSgy>)I)ApUWMmWEU1~DNv%L@^5xV zSgTsi|g79U2BS!6sqS|SltNt^BS3j{^FSe*Gs&pPX^}o zL*wJ8zj%Dj@-W!d-S7XEdMV#I4~AcdT&hz*#CEt5Z6v(HSO{@9bHf|T%0hyeklE@r zOSL=ZV?P&SY~mfNAZ^Ct%V0%#JaWclH!0DG%@ZhX#!|P!2WrJ+g9W#U#VqgkYKP)! zp`G4lJj%8cU>8e^2qNDLse%n*J$&tW7pd}|T8P>L(cbjk_nq`2mNgHI_)mly*F13` z8pZi&)S-F^3zqF$mE%g^5O(78OXQQ;_7uHG%1dASqjxBh7Qu^qVWBJ?Ic3JcN@xxC zr1lGv*WOw55Tt@oL&TPn*}D4#WGx~-I9GDh#6Q1z_a!5F*Ad;3@KJA)lk#0mABXQZ zoQ;{9)-@)wceE9`UMiCj8kpB9WF*4a2_u4zj4UI-&i1z#0zx6N#_lnCbPLezb1Vk! zvg6HbWHCP1)|2igc{Z)nqYk4*mvET_N6R{)TGL<}7QR(j$e`8Emck?#I zMY-u`tuPdnxuG^KAk()XV=|J@)vOgJ?XHCwFU?A4zmn%=jYM+Vv zAOSMGvhsakrl&(|T~QB@-`c}328-N5{XdaJT+_7QBM)cy9?pjW#0_a?>&M@vZ7X=9_eMu!cRg7Jbr^4}0)yYP zIcnRweIHu62cU-9y_7-X=R#9Lu8&>COX2eP3);muX^*{pgNv-eqWZZc-#lY*#1T_s zEERdRgYBPLfWS052JLsj=CzGI1d^4hsnQeBM!T$ctP;TI()TA)ZUNWqisx!Wk(uUc z1~kZB9|MZqy!NqlIAz0~^s`(VNl&}G;*7ZwaA$jc^C`{3K0X&7wteiuTQR`J#PAi! zFi~v`sHc*trInh@_JE%=}p2x0U6Ryhxm^{or;h8A(*nVVkcp5GhgsJq68*&j_n{9iTh^;pq+Vhuv+coJt>HXl zSVSZf03)GbA~1LX3oKA~!E1*!&iv_3Tl0R+PXo^Li(X&-@)8brgs!sx*e7P7H1YSIg7FLiB!M%`d7XWNtP+DFa#p zRqSx!G)g_^FCrp)Tn|N+^rrTk>L=v|GZMl(pP1o?` zv4I{wzrM!_{ErljSB{$?3@L#!B*Dx{DM;95sC7yr!v+4!|;i?xToW7=+G@b zRONsxk#IVF1UYJ2XdGoxO`Bn*-w6~t`xO_!`Tu1Cc*q;6#ITn`7P;5z=M6TKNsSS_7Op_pkx*-m10MO1|+akI(qQ%vSNMb!|N&{$KA-uv`N; z3k;=|lyIhyZ${IvUb;|Slns6Sng_4S(e8-8(znUNTCM&I*ONgYbMzSAxj3TTN=0oc zhARtiYr+0~<0c?3&~-jf59y(F@53YIy3T(U9yDUa2)!9@{aa1;rUVd8iy$wxmoUFf zn=Il~-sr!`ldySq*#82U7KuS%+Y$rV2Ck5`K{{q|yZ*}{@irKLSn~ql68OZK@X3ce z;%0*1!$Wsc5tNa>JbT?p9fWG;FZuInR9$QXx2VZp5l%8N&;*2z7j9uTvCad_c>%Z* zO*oL@0|%y|xU5X?OPM{H`;G_joGP?LYGd#K0tUHs)B07^m$m<}|1W`g`NLUs>q~e!egGTWN!o zGB0n*0NC>g>JZqV_eGS*qdL+eMT5fQYr39e`6~1cPge1dc;L`Ats|qpY-(w?=*S(Q zM>hQcWXuiqO)_xS18#3tstg7ioAzC~;JbgJd-S>{t3^b!#CSxe+5V@zS}(@h2%;}} zAEjb*M--JOB3A64D7xbqHLatfzH9-N$wBU-1*jfngl2Qk%`0&HXXW_UJLAeBX)e+A|eOcI6B(nWw-0*A9@_XDq!Y*(DQ%t&S( z{m0rlSAolvV7OM=jipX>t>+<&0I*Xq@4=hVDM4UVKGU9U&wz?F^W z8;`ikmEskzUn%9IC8%NNJN+gEYR`PnMONy=JL=82*u_g2E(5wYDvS3su6%avxA0G1u(!nhO5f4KU z8(yug>!GI)MA?8C57?rF2H<2JaL=^43h2gKgY>Ii^fE%2KknTK?f_3-Bt#R;(()Fl z7u{TgOcu4dF=hUT0?sy1KDb%NS3NeQK0|jkfpkI6=-rNLRwBv80?r|xnz(XyJHAbO zEb%zV%s0EIo}%zYMFm}gO9W9eH{z6vTkSJF^_)e=M|rAR(Dtdfcis9ecS00EXJ(j( z85aDv=Kt&IJHeD*D?SV@w|`qo*eJo(0BZU-v|Jdm`L!)9I*2f}xUG`{A5@ym!?Tr> zkwy)~XFp^uS8!3yqTjY#VEadydLvET12H*4?a!M(vRFMZ#o&Mo^Vd5-mb2NzvWZcw zRCK&M>eZHilYdbkJH=Jr4p?z*LemL*KYlGFJwr7kVp!9 z9|O4YO%6&n;Kmwld0*p^XxPSsW|X9?+HZCKScVf=_*9*D7L2v8ZE7e5KgwgQ;IDd5 z9An%%3&Q8WLGBVFCGx}8e7?;LPX>=y2ZJ8vkto1$)_XsInXjo+A6K1ACPCV*-6dAp z8iXxORPdjxpPE7j4hVG!&A6kMw$*lvg$08IqQmlmYrMFrF+Dj8|Cv}!z=xhH`O!}r z&CcVB7HFiC?#8E|p3y(}zf>aQG#(%yDFB#n}>d33N=EBrcC~kB2O08z5}WX6#du;neQp_y)qN|a`G1@2`_TQSxTqUy91>vJa60If*s>D zRSbw`m?DNuHmRjd8(jkisb4I zry6MF&g^aA#*mnyCA=swV7ag?7jZXWhzpRqyo&=g>t8GDQl(*eo9}w4s;_ZWt~rp^ zD%y%OgT5ud>TcU)A)~bK6Vg_K5RJ`?MKf~<5+L~t2uGxU_Uf1QC9N^rg9vnrAH@## z6#56EAk$kGPkCkhiX?Nljk^?hMb_|EV2I$}{yR*12VsqV@g7F^1J4s#Ci2?_`Dwck zNWv)~zd&mVv{?c2d+Q0?^UBy&J?I9kmK`J{YM7+8w}fSVF9m5##no7 z4x|swg5Fi_H^OTB!991~4?doRaFNH##FiLfRAZ~Vz&VL~{kaeUU!LA9j~#2UG3zV5 zL4C72`HVy%2H5Fd2=wSqu&2~A55pqXX6xxp#jp-^8`Qa}YUElnkoPh`)jx1=$*;TP zK%hI~*Q{NAb%+7sCKUj2lIt^4NuDewgR)5^nEgNM6_rgvo2Og+(xqE&6qHd%w2v*q zy1e2is5%hH%pL7npEDnqa@_vTV!^tfl=K!A^xkk2{NBo7#SppY8PwTT;BVjBDn+Bt z6nd$ctS`cLGu<1o=1gY4Okx<^=iE`}1p+P^4$Xgca+jhyGQQow>S!lL_@_HWwZkKo z-*gWs0V>GeQnwBFW~CB{2Kk|LY_|gh=|v0MiEK-Y_z~a_X*$3s5@0tIeCSc;3-VgV z7H9JZ7H4H?ETn-?L5v2r_U~^3J`<3;SCSrP*zz~g=eaKF>s8f$b401N1f@2$0=BTB zdZbj*AAKT{lm-0Q4jjn3VL7wPI<>=a%_zgkr2S3?L|lTe)p;_@%I^(3g}wW3(}II* zHk*@xM(&_BT-bqD_u`E4_3_)ApF#j|55D}SBJ%SkhFHc5?vge?ooNxJd?kwm2#nzI z95+}J8y-crkLhZQ%^d}BL{=tlA;*az9Ge>(Cxc1<37kfJcn6(lbCS@=ziZcj7SJaD zq=pDwNO;X%|ER!k#LwV}03-MWiM?>%Vmp|}C76{Q%-@sB@3;qid_BRqa1{}7*c$+^n_z^R`RLAman%lG zwOpxk7|mKF&t*LXuz9d}S#LVEU%33Vd%>VjTK{KKKMWN2mFG!6Gr5-F>pP43dOVYg z7Ni(^a2;;ZI(yPOzsK16I_XNcH2*Zqv<&>g=OPDvctQ%a$p@=$?plBeT>9me8_HMGh6xo?wTNSO$HD*OTG?tW@W7ZvmWqB zz|5x@YU|uCWqYll~N*=?odPk+^IVRr{EdMgpB939<$9^$+ zpIcN~$TVCbH{y=NXg`~yk47&0?>PX_9Q%0V=(^v*zKBVvf$#Ee*=!D+ys=XK<+=X? zydxbcjCU4HwR&#I2*Px)JnJ87wkOyjj@Jarfm&l9(irfI^bfO|5W*khffQQs8u^+q z0iQ5|#~a}40KFg%8dx@~RbC*m=BrA^mVB}NzXmIH(1 z940h53sgvg_ennsd6G8wsJXhh8__ntK^{)+O&E_l;D)*#&j)_r-{$5rcZTgEsEB_N z9N1QCiOsHs4@RKSOOdptPkd%pdjORhHQmVO&UZ1ARs_EaM>3mZj7H9~@XwaL^sE`4 z^uZ|5Aw5wu_A~Zb*@p&jZUy5JG9f0GYbBV={?of?jaI$N8;I=Jwrq=OhW;Z2C*bj%wAH!-|q`C5;!m;RI@=7$z(SEQ z9@@56;RiH;shm-Vq?YCPw`2uEt@?Lo75M4dczDb}h|JZ*P)ed^_da*WQ+#(@_Y+xq zazXdGcG6(CJLhi=@=%{7f?%&wL#z~un%kqYP)s%e5CQt&FVlY#L04U8LrM;;0*(8a zxVCCj84>pWw-rpDbk?M{gv&2zXWSD#@S3*r_9Lt=|PfwzmCZOw=+}MP}C)X*BRu`ez%MTo8-b0T+D2@t;2YZ8JjvtCTfxQxLuS z0#?lv&`Fu+m_UBC1GeD$ntNVBJ+Qp?(4Wzu1D|ui^19iZ-cr5Vk=4M@n%;nv2aL9(yz^m1h#W5^ z_ zr_G*CP5^-EMfXnd2Y29MjXxiN(9^$kuXnlQMHYdoyi z6fi|`5yz@@-qL)>RDi7W7Lzz*PwBK4s*112k7)+@ou zlaW-UBXeoj(+SXuBQwweNwP{-QI)!>*~ru#Sb5;op1#RDs6SjHWEE@0;U9Z?_A3}? z<~~hIN36ley4`^(W*EG2K}4OD=X?VYBU@+Dx4Cjc*x76|b$+;ris`#fW z3+vDXJTX15<<*+_)+P9z#m@E6yW{LnSQ{UcfL|1tWrRGKWA=LkxOvOOg&S zg@uiQ=8qLdox=SS@?nNL|A%e(DCUFQ39cy_EkLPlWfC!8AIX3Irips)`E z_JThFDb62&zb2qq3J5C{`VBnK)37JS?i(Bopz$gQUT>z#9`XS9PGwn*n!%UyRG912V4*Wc&J3I9?5U)(0a zJPk~Y6)oJB%VT34a2J-K_WAq2yRhzpWW3_wZz6&TvofzniP9fe)`7F|rF!g6;)cP> z4hK-*VLkzYpEjSbF>EXTfgAGTSu*@nWckSJtwdMv3ax4Q9u}}@PoGrFx&&F1yC1ln z$dZ%)5dW8fRtvwi#-tDexA94Yd<=k*%NTx{7py2HHxLLz0f=U;*&xSkwJ!W+imKovfXCxBwc_Q>e&uz!*_f^w~zQo z&CtZ;Za%=GA11RoSZL&0G_6q!x88hGxpL9)&V|kzF{W8%YGCcLtUs+mn#~T{1s9xR z0%j%(-N3k*cES9jwiMbs|M@Gxtq?uG_XwTqs5}mK6gaMuD*PW9Y1QSJOJeYDIu2ez z5d&Hbg!omIKFYpA_M#@gGA>=vu*~n=1FkV_ghIx^H}|B>> zJd0n*l{hE8gc3tnzD_1PyqcH_l5lkbGuG1i4O7~9{w^6#GV+Q*gz;Moo;?f%|M~t; z!>l9wBOMs#3LzMpm{g3EGaK=B+G7>RL4R+n8yIHNKl*={0}KPCNx0g8=T3gDxuLG^ z);baRdN&A^*?k4H2%hny5+VPqu?-Iv^e5$ApUypx0oDSxS~L@pJVoVTcm$3zg? z>s@lLk7Zzx+L*pp4}b@5D6yNz_K`zu04Q|;54lT`82ET6iQ8oGrXzMO0vt`C`ou-t zS`$V-9OvE^H~9iS^4Kk%%^H@?i29d2%_$Pjt6P#WwliL9%tvUj*fMzbw~>2_WW$fc z|KZM-ypKDMH2ME@w1+<6*sN-S!#7_>P^uVAGcm$*G4*os;1@m)^bQlJzn+A?MDK;` zZQd}IVv8}@Har#_6bhbP3}heRqu}fLhAr_-ZjY?#F8Zm$2y9Wza!B13TVck6pO7y+ z4BQg_3rj%^DcsnGYidSW`+nT%hR@2CV^iJsg?TE6GfE@y8PmOYohR-%3rqU?JegBUUQjAivq7hHOxS;g$z>Z(8C5;xJWg0D6flrF#80II;P{`@h=m`Q#>C5NDW!C#Pn(fQl?jTse88U(hJFI@d~ zFe7&=OV+NLKnL^bf}M0ADM0n++>#Fj2bc=>$eBzOV{h|qmDRz6YJ&>E!~|#bJHsrX z-+gEO!m<_2kM~BP@P?q}x`>|TE!{+dN-!h7g$VEENW!cq!ZSsK1h((rBlnx~GPPMx zkr}?c-lkphwPrERLIy)@T<{Q^f$lR zNWvsZuw}7LYR%XAKj6?PjY#F!YCzjyJ}!aVWFLjn*FEjbm2C;rnZ+~@86NxUG3e}? zTZLx{;chpt);hIK0t-8rj;T<`9S|0Wyvcj`VR{>U1MV-D0j}`XE%{(~oV!iMb``ZY z2uzYd*h`~s$^?IRtGjdU<|)0Py@d*$a>jQgwRS(nab~;j-)mR9v`aP{`j)*zl9~sT z96cygBydGHNe^kn_(5Z+fDWaYIsCC&9sxSSCwPp$8`iI{<Y3mus-6%%V}Y)p(AD$V*3pTi(h84iZ7+;Q{{9)i0&y6Mhcn3e5i~E!PFuduP~P+4@FGt z6)IBy&NnXQmiXY9!lMJNk*O!JZ}_iCOCYNLhQr_V=zm-=LPr2|TB4)5D z`Lpm}ax3;aGJ715pC9aKnYF>hi7ZVrC^%>Yi3y;R<6l^`e>9uB)lqFCR_GU2^#uj) zX(W}-WRJ^a#9gw|VtnJpBoT#qqvBMXvMV+=GEj!($cse{j`4{#$8Yoq`BBZ#4r#c- ze*#wLSDn#oCt$jB#o0&ZI1zs2j%&GY577NyJ%!01bdLu{wR6Q@+axL~3bPBhg>T|k z;-sQ7p?CvfNg@pc9eBv>I(bsS%}5~glKJ-KzzT{(#t8$*Iqc=PtUQdf1XGZ$BC0cA zJSz-qlDwe7%zEKSs$$EwuOY{^G?)fd^d=`gAl6)`#}`wJigSLG2=jjF#}iq=(t@sU zgGWZ*Lu|EEmarphxM6BR>lXGRNbdTiqd#)k7%&Wbz4JnGF#>>!h;M;ezoUREdDQ4Q z-)TXxVK)&^Y;@ZaI?mScVIwxf>4<;VJ>cPg{qH%Zr>RZAGa=pkFu*gH&SsCxX2e}K z@h*$2J?IHO$)+KkT2Xdwh@^ZL)ITt@)uGji2;z1eT>RObJyi1h8npG-F*Ox?;*d@8 zT?yWhri$GC;q(-%1_Sx}0JV&LFCVe8#o$^-|MSGKi+?$DZW{B*uwTgxEm+>zh^xDnzFsH1HwEz9D4LRlSg zG$m}uBDjsQ7;W2MtyhB}^i0>ReeyDN0^LEN*b?dx0`}FNcZf4^%YYkuZ-_yKL1Y|B zvtToSUShLuW*@p6(^xa;G|7Z_r`i4L?47%)61bic?x@*)S-CzH49`Z25;V|n-zjCV z>KEkLp`hYWz+nk|@A~ZPodJSksxd4|i#bU$LjQSI0Z?MJ}( zu}*HL!FBuj?X!Yp?zk6P*@qmC_i9eU1LI}m1)wi6o4aUGN>ij0Vf1{J8u`+PF1p8Q z&CAPlL!+3dlGZdo_6$D659%k@(;G;J+GiHNUPK+QU3gyOW}LxSAueS?YOylUTA#B$ z;q-o7844$!R&$0P`5Km#IFu!=b@4nVvQo7v&r8{}7H|pXd6~D{*kw@Gtr1m3Db6FO zNNd^E#p~4`&RZiJw|u`UduFFPPw;qQ`drnojiA{{dtT%)^82nJhb0Ci0j3GAxIzOR zijQ()kHjgQM5Kw!sVM!+%Z){fb&E3AH~leBF^zveuX$oU>!0WS^2Xl9c_q&2)%a30 zoi{;ll+r8urR=186<=(e&Y9vhA@%a<3iF(5wH%!u%D2mmDX{$oH=!z8#^7{nPF++Ld z)EvxI%sGo@cl@Lih}t`MpUXezIP`H4_FS`!tTnNQpzz!chDVU={WP_zn8WBJl=~{= zde)1v;f61=xq9-eyMIh%Q^eOiHW8w2hga?{bhxPSqbfeW;?9ZUsN;z|K?Y5>k_Xln z2(>q>gAiOF`>&L2e5vd{NZMb!l~l#qq^<@>c({Tzj1!#*%X9Yt<)?)EY|# zYuWXqvvzQJpbEmXXUNdal6R-`WXdK7t(7+76lZkb?jjejt?r?W!MDh^Kx3(RLa(S( zBP^LxQ8#x;{q!sGuL3n$8^v;p?(UU&g1MMp9`ENJeD+$a3<8Z1)Zmq44dKN1kE4gO zFUX78J1vHW+lo$#r8CvOA54dwHyRHy2lpa|H*91#{yQ9!0Hd z*Y_D!_3OvMcU{gNY)|dNDCeTKs=W+FcSQs4YWtSK%bKkTl{{U`DLE=8bXmyt%D0*} z2*TT{trOo{8_PfZ-m#=1$|SJ=L#xW%iJG*xhN3?-4&42pJl7u=DVY?F=;XC328Z0{ z)Xm*G9N;}ZNbl{*dxZjD%4QCgxa4yCI?p;uxUTK!=ZsgN!XEu_~_Q4`?NOVG$pkggNhJ{OaM*OtUwbK9Bw2UsIAj z`@PW*gZp~gavaM6TKD2VN7gVJusd2hGcdwDtIa9)MFI9XNoAlJ~5;*#a)?BJaiaG0oD zmra86&nT(WI6HEJ;%kOuKMajz?JKSo3~6UIOZ$fqfcSlgJ>4^?d8r-7Pw|>io3Mf? zbZC|O1RV`}q<5R$ws}HDQ;9y{1Sx3m+BjaYPRMdG&&sOjnUGC_#xMW){{Ld!8CsFx z!lz`;fbp?}^dRHdKxTRl{h#Fv@Oh#XK9I+S)O)fb9cIZzW1YoTRtbt(^%jv!6byn1 zYZ5U|G4}-P2gn3+{zkaGuBYF3PEX`#rF2Y0t!@E~+t{C4@s)t+Efx4t}0$X zdi3Jezd#e*beWvV)%j5ARlI!{8{%)sqVid!M3vK|`dc>kNRS})i2)jf^CKPcXixNE z|MuLehk4|6z#5(9$|b23rv}oPF^u%_*oe>Sy9@x%#lfsp*abkz#jIU#>2dWm3WVyF^96!Ldwy}CPfX2% zTW$qzd1YydQcrHHz(VDnou^;EzP6{cxrC!;F?3RE;*ryBwW0Pb@S}f<4;l=Nf_`aM zk)YHNaUwxDst59TP%Q=n#i@mT$IgTbO)4U|he`KyDtbRwM}EGs<>kjuh8THWykJf$ z!-$}QmPJ7?{=1X_my7dEvdly8j)$p{Mhi8FzV#MC*;)WBbE`HOs32F4l~vYty}>Rc zJ%w}LdWVX5Y=riY$)o0}{j5GJp^=$|;GDd2oEi=9i(4_ zhLX>QtAvjVdT_W&i>nJ!PP{glZCaEsdY>2+k5jpFKWxTR&4XjmW{Gv#!k?cOX( znsZs(TUZkhIudqZ%XYYLi3ZiCY~&C^u673VZG6MxH23MS#&Ls<94gpSHHpo#$gnV+ zAYD1y@&DjrmvJ0lFIQDo^rC-@H>0(M&nEGP_qpxlMi(1@Dg<-F`zw&(v`3Z7Qg0B~ z9n0qutki>pJs;OZThdDwX-pOopD=0Y7f`=dLE#I0^tls)T@-Y&7}v+6#P6d>UT*LS8)UKx5Kb33AH<12T2jQ?L@-=4%<;H64q0GF3|>quL%KP)InXdm95sIyB#Fpq=9l$?F0 zr3kB{Zurnb=SGiGYubdIR9~I3@nb1B>9fse-~G?T7jHmMD!K{7JZ?T-0l=xql;J4*xpXcX3$FJcc_qa z=as&3T_EFcIE??^u)x-v>$0|^qv_*{Xyisfwf zqi3R($d|%lCEdELq$gXFJjb)Ps;EBweEby)ygwo7tiPkMX?>KWOtX- zlv3fU!Dmj1ZZ=+62vA|_Mh-FbL}}F6WdEV)u@@k0$^|PO#R0x#Sr)DBQj#O~m#_X_ z5Xi`O=dgpE1aXz)FDBHF<8RyEQDod)^ zvOle?k0Ntmh1WdY3;}B<%e6=H@rmwma8z-?@;SE8N`N(mO67Lp_it|!KHRjYV*@xg z@HWjWG%UaCdik5@aW!i6F&v@4lJvi^c_Y~^adqe&CQR4$!^P}HQOiMqo@TDCaXgcv ziBUEI$k;cxyIYuE)6p`*SRafLkB!^@A%56Av7gmIWoP9Uz((u+!;0HR_~H;c|T3Wbw&PjoHEOS=g>Cknb{vfhs=GYi%NWcNRQOdf>c>~f(! zlISG74DSiHP~CHGM@=nO@wEabp7bwycw6UBJ4V&kDtaps{BICr%>4f1A?D^bS6F0II~ zHH(QQN%-9TOiCds2y*WIR;7a8_~EX`QV}c{6$yDNwBzgf-ELHCHg?8^iR z&9yoR-*$Rni3&lu!YYvKQ-eJf)5v{ikEDD2Kp?LrT1$81p|kCZSxf!qrI@)_OexlWRixZ=vkbi2T8n;Ngd~)>4C*TFe=&sYkc;X8yOJqRT>hA}_q(X3ze}bEqTtKNEWd@}UyBAR z*;o+fM=5;{+X?xHQGaK2y)Q)Ifn?eocx>$U4{5{p8FRcoMxl|qcGR3nQlhCLGF6Gu`V0V7>_?i_`nVV^Q+uxpEg?YR z{H&^c5Okv}XQIPV>J%|3JAj!BrjrMQF$&Kn+tNMutm$&i3yH9ovqFz)FT9^7Fjm4% zo_PA+6MUiImB+$ovqzaNwu`8EPc5mz{eqrt$dW-gS;Bitwl5}h9eW&X{Dwy9X1kN( z8MG*}h#DudkqEF@e_j_z{Tr!Y~Y@;*~Rr{9&Qq!@>(^2ojBcZQ>@` zDM!81=~b&IKRF3%%(vpyf#m3-H>`ArAl*Q++vZKGOl+&$*B2}UlN7))+=|{Vzek5M zIa*}?m55=vD)czBSYbK8Pc!)~r*-rTaoC|D4z<(iw{e^%x8`Tq5AK^_ks?A*GB)l) zP+{`F{Ml;XUF2X-<6jRlCi_!Q3bJnLH{A1-YxR{I&9qYZ6;C1Y{kpH9c%$?#deuUy|4?$_;o2Zil~w zsmWlAnRX>0iwWHewBj0EBh6`w>6i%87mbPcm^rB`vmsO9<~;D}qJSU?3X+_A5On1= zQ^kU9Txm#<6vm}|E75w(qXaMZCgsD0fL<*ac-EP%pd0bYb9iDYCfR*_Z2pAX#(8*V zI({8y#yjpC7fb!ebggBk=On+CZQM-AHT_I|H&hkIzD%p`0s}ck#o;>RHTRPShyCVv z-R~Hx1T?;0fgTwR+ma(dI75gi48s)$hOJ0JHBWj}!EwuWe1p-uSE!WPo6>$GKAH|+E zx>6LgrHow9$ZS1XbiR22QBJr$T}cnC^Ug|SNT?k6JDyxIOrd(B?F~6J^k=H;yWQ2@ z@r?q&VyPoBT!SF%1Q+X0v@#2txt(%wwVElMsIry@IzFK zTepje({O6rr80?mOJ$|NCgDdb&jUTX$)?&GFJtgr#3VUjCor~xmg9OYLc=PAdY-~B z3oy^5prsU~bOq*5M(}=928gD>?Mfg`3zJGq;mnBEw^lwU4MXY_EjM3nn!;R}zXIi2 zu&PQx(9PmsuGLOKV!MuZF7eUY?m(#&&<}=jJv=HYB;b6Tnt98=;k$iCKd+Ap9G?}6 zx6VYu;N-=+a$Vm}jc#%2hBLMJXTjf+4zYG+f$((*SgqM6% z)o&gL3kn$SZmfz_?g)Y0py*`}K8X-k`KH#m8a50~hK7}~VAUHA7465eLCbrY3G0&G z6WJk&-L|hyipF#<6&MZOGp?iJwfX8G;OzB-jMFpBhx6_||K#omE`nU;6M&cR{vVIU zK&c0=RGlujhVCCR7kg6)%a}bzR%#ceUn|IGB(Q=(H0W&=3E2`h@S{&wRw@&~Vu=5> zS86K{41N?D2lVvR=|2C*YD0>9n>|Z&uUuY<_WzF)fJQuG!r;H-GxJYl#g&tjjDPAR zC+l=2=Z1J=!X^lpFEw1Ky@tN%{g_vhJJr%D#(-Rj_f!W{5{Eyk?#jbzqDyK8wk*0# z*c}{(QeMkP7VAY4((*u1NNAZ1_T+&l(<>U&%kxbc_eo36nJ+B-y!7b*QU1`#^&GH= zl*9K52ycg^9`=LNwXZ(XB?(T~G_k{pCLQTVKnAMIz68g*BTO_r70c{jr+2^;Ma{0Y z#wb z^}LaLZDO6-oZ7ZaS%3)uDTfDpn&FP5Uv{21TsQ&T zLI8XY*C^n;JH$DEWdR^U>hz-*%EfHGsVhbb>6{#tN+Ngv;Z+Fo_*VnVMMm9ZaOSCz z`~~&_gvp9a1F>VQO2-ZyC&7&cSJpZjAmmu{tOwrP?e?iXToMTC0YXk8jM>sc=NUGY zZ_L>`-R)j$3QxHUWI2ktw=A^~%4KOeKB0#Fv(loxk(w*Vru4iSPR`V4Y%zhL);?Oe zWoMXe>5;_dZtUIuyr;anOQD--6r`ctDeyZDkbqvwPR00`4KO8nK_4fPvvT8(e$XwC zvTr29cJ7PSN)--ZKykyr49?cK31fLl&FhkqirgowO)&cUsK^ZWQ7;vmr`yOeuHtvP z+{!u#2|kBiG*n3CkRu4-m+|!1YTJUfT1Yws5ju$qK7G~4cW3FEXaNWrXE_#jL;TXK z`(Kg_P8f?2V7qYT!})>6;49Xc7vei-(kcI+G>0fr81BOeTBpEsEGuK<4SdZC@HI;1 z>52tDRpSA)w@AsiTH`VrfJ$TannRR9k~7BjacOUt<+2a)%!BPQ_&khA4iyC0&Rm*Rz3}@q8*(O0 z!(vJL*$PpE&GwGAC`sf$_o-qbav5Vz-}E|H`u4bt~@p~SiAIxOY=mcKZ6ok zvmJP0u+8-d!w2w|>@~kz$=zy2?NCvVX$%fJY$j&nP2?}ZY~WXlfO%@NW<+Ri)aX^0 zoc$x+$;Gap@#5flB==NG zt?iJ5EZD)`;?dEn*F9}8maJD+SAL(!uD>^#{i91Cw9%C^A_)egJLulpzwPMbf65}t zCab*KGl;>*OAPoM`tg0D6&GOioBpwT*rHoIGC>_TOg{1>_b8WG$}tBtZ2$a3fE_ei z0EA{1z6yg0dyGtrCHMbm=nwwwgp@$03Z1XS;+ZeVwJceI`xPX9WGpurR-R65?d6NzlsQGB>HfRMw@$P{Kn&q9MCAa-fD-~P2OrH6 zJ|J7^(82T7%yn}Uw)+_<&8rH)Iug&{y{!bNogw~n>))Z@30F7K#5wwJz4tVR|4G2h= zfmJOUz$#s4WW`1e`?@^mx*7?9iqSo5lhsW9`w``J(ix3Ss|qHCBZCryARXgNPx__K zR&p~3A@0C`9~0Z@o+a>fy3bkFV!%2^w$w|&iKXnXDRPkB1Y(cE?$k*~#bxxRtWl7f zk(__vXaO+SIlA(9my+}o3R+2jf#~_GZ&3EoBl9j_s%2*qB_Kk-&<#7e2>1v_h>%4rYbSpXWoQ(1P4ASg?y?8fON!m z*GC<6*Oui)IcZ?cGE!c0>_Y&Mi$`#+2`H-SyDD(NTESprd^j^*WB_*oU6;Pkql0ZN ztYWd4k6TH`4>Sf>fwx-M zc50%F4*bhUdB?cm3K^~c+bh&8e_bNu(uZR+GI*6U?!hw4Rjl{-6c`?Q&Mq zcDbGOnu`-J@w{>h;Fam=@qR~}f$#SH^M#;ta7>b#CbH)QX7@5}6xT?eD@_iJk9{8o zg;`(;5FVZ-@Txcod$6%kaui0t#}B}={Xne+dC|V4snOGT8hid){KEMhPivQ zelV_#%8Z_s^(xF=s@>q~7_O2^6Wgh2_r2*DA-v^zBrR#98a z)U#Z^SY{7sz_HSbVj}aSVDt2n5E(0}H!@MSeGV#pY@D_>i#VXVtHVwaU|;oC>#J03 zVv@q(rah=_j8*?V+f@bLP-D#^GaHo)E6`GyQ!;Ea^kKhTJEyy$C9yCY7v5WS;mS3z zkX}Xw;cC?Ve)OtAb8j+c+L@*MgKAc?y9F!B!5DI{dB93#CN@Ufuqa_{H+fX_;suzJ zsZ`}N*_>~T#e{`&E{(NX8hE);JKcfzv9#OrU}9uUK%u%7W@<7CiczNu{irZ;Fd4cC zGJS!X()AX-;fq8ca0s;LUUD0NNXxIaSea<>gVLmUa80OAN3lTA`Wk+dGBX{ce+Kx_ z9ZGAp4Di2JZ2awsWP|pwLB~R}V>u&+Wqfq_g@BC9Sdk;`c!T**KO?EXHR~#?zRxT# zlSPta`?P(+Ew~h4P*t4)je$IYb$#i_vJX?b{T(BTVI9TGf4#9dHmjlx9bAxyVU}V4 z*VdH>LYepRXOCX{zCwFcyIG@y)Rx#yZ$%PnHAqDlHA7U$B4>^m@3xLMu}tnGEm6ee zN@ffyQgY=8qnTV|W-v44zMA*@d(;-YfBD1j`906`{e6$m_w)VC%y|W#8Y{1_2)P9o ze|n+?qE_8x5vs3tWxqQ5g8Hm?t{MDGFuwVs)9e4%YcVsf15=;4fT=IvJ0uG!%+UsQ zK&}>oULPc8=}MyrZV!ajWj?W()hxKQf&Ij%=YHu2jC$HO!e;b3wd}#gGklW_jIj)oyqm9o61rau0(TfEn1o2u3#X^gR43@Vy+WyI4+;$rZ%_$s$vDo z;dXZ_@*{J(*rKW3HJ=2r`4uAl+;i&tZ=7D$xgq2gzg=*x&k8#oWT znjp?SKhj<;+7jp7D_|6Z#mfFtb{?7}3;rjn0)Bk{)aA%6G0h6_BB^x)4ve;rLVsjV zp2NVMw->LlU#$-%is%QnZnyO9ZaNr)zk~4-awt3l%Y4y@Vpnt@{Z>}yHi6jW-AnAs zi{Q_3Wfe$89d?KiR@%K&!jC8{TZ#fhJ<4k*3eqf!D8hiZdoHo$tu17YSq%q%-*?;Q z?w50%pghvum`yjL&E~?-1F__yW7Zw5%GxpX7@>4*P1~g|u!8YTgs^IT0jOmG!s-oV zvUB1M|796OtON&4`GB(1 zt({w0x)X(CM-ZcpD2>cC_^k#~iPhuIbktX2(ZdKwe4DXg8sIp+HVAH?<2cO8xpi5z z3BcklS=BouML)Z|<-B5qZzd?r?t`g07VvGG_Yyepz1EA!e~P=t=&hV9Vxfg*UtWUN z8l8#in2Bq-+SX8)L)E_T;=;>Rj5epjq(n0pg!pz-<2fo zW6~IfARkshPy@y_fcQ_+vXSX(@)%6%v&Z{=P#Z;#+Y0sSK;wbs#~GvB9*2hq0X2%* z86e#NFnyWD28767L55P&Mvi6R(sN{R?50k5_mhIopr%IG^soB`*Zt1TT$oTM&ZRQt zTeZKUgO`9d_5egy`8SItP7@b3+-JxhGK^<4#q2naVAL>EaK!v(ROt5w6+0yqCGC}Tsq|~rj1g)?7+IDMPw&#Bg2I7S z(J$IJvz|DnCoVi?YRf0YMi|kJ3d2TLI+~Ak;7KQTM;N-mvG1n2v`=1*WhG~e5?kCG zqpV&y--nX1o3F<`kG_qgP~At^Ki(0JGDc-(`@YxiO)2uBIJeijq)~ zE=6@(49qaR~CO(H1Z`oyhR>EZPR3j@ig!U?w!#KhB21j!09+3^O7>o7sOVyt^ zYH&_rfI0Iz^1r`{bl2EKGA=dMsA^Y*E@eN|1$VHT?!s-BUJUN!Hj?HamnLUetv6v6 zvxu()EgyOTOo_Na*fI3g!ZQCwIKIli9tS%{yVa&r^^5krAASR}wlRadVr3c5?)=i~ zr@Lv<1;&kb{A7Em*rWvaGk{G|LJFHCqQDqzWSL9%wU|-vq{$Ht^(Tx!Nvk8)t;OsE=3+}K1F7G*1T(8a; z`oLR_q zp*JFDsuJ_wdy*3ik;4}nKg|>cRw>uf{+Lw^a=KDp@5YN!B@m|lQ3r%oT*Yl>Vf~($ zt4#TbR+_JpA@cY}1vO|UU>LugUKId^-&X0GQ5friXbN{~J2^af8(cq|snvPF8H({1 zN1tbjgwwvvR)d+Jg9&H^h6Rj2LNSR^&wW(k&t?MEqpT{H|88;u4@tX&_+ILQmxGK> z4Q~oFMpl~r)0JeZJC_ylP=5ZD&dl3>;D%bidu*iCav4g~FFg>?1CPMwVM= zC+!dw4(&G{DY2&bls$T&alEZ#Y~tfFCYCOTFZsf{b}+feultyx=8x`1r^yb~BZ>p; z9h0>U8)2VVf4tbN{&rsGEqW(M?zsnZN4%!4R+`^M^uNn7gY4q7Bf&{cm67LyMD15V z2|?C&W-Pm`d*0-&C(9w$yr|6GIIuaZ|L^*mc2q6AP9F z+$qP;`^Cp2-FsJbDnAeltT%hmO~0D={(|_nj%*MUI>1--ZRX6jeLAsT;*TQ-C& zDP;!tmHJ1e<$I1*?GSVnyFH%?k|HEO(tuSdT>QyX9Ph?$m7Gz_{-eN)AsJ5P4E$O8 z;vqvHrDrU=0)HS!t~kxTt8}D3sQ@zJ*Y diff --git a/docs/news/index.html b/docs/news/index.html deleted file mode 100644 index 36ded6e6..00000000 --- a/docs/news/index.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - -Changelog • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - - - - -
    - -
    -
    - - -
    -

    -ffscrapr (development version)

    -
      -
    • 2020-05-18 - initial commit and roadmap generated, add mfl_connect and mfl_endpoint_league functions
    • -
    • 2020-05-19 - following httr API vignette and created generic call to MFL API via get_mfl_endpoint() -
    • -
    • 2020-05-23 - adding rate limiting and beginnings of Sleeper connection code
    • -
    • 2020-05-27 - adding test folder, renamed main-level functions to “ff_” prefix for ease of autocomplete later
    • -
    • 2020-05-30 - add start of league summary code
    • -
    • 2020-06-07 - taking a big whack at testing stuff
    • -
    • 2020-06-08 - add pkgdown site
    • -
    • 2020-06-13 - switch to S3 methods and add memoise
    • -
    • 2020-06-21 - add ff_rosters and ff_franchises
    • -
    • 2020-07-10 - add ff_draft
    • -
    • 2020-07-16 - add dynastyprocess helpers
    • -
    • 2020-07-26 - add ff_playerscores
    • -
    • 2020-07-27 - finish ff_transactions, add “conn” argument and custom_players argument to mfl_players()
    • -
    • 2020-07-28 - add ff_standings
    • -
    -
    -
    - - - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/pkgdown.css b/docs/pkgdown.css deleted file mode 100644 index c01e5923..00000000 --- a/docs/pkgdown.css +++ /dev/null @@ -1,367 +0,0 @@ -/* Sticky footer */ - -/** - * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ - * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css - * - * .Site -> body > .container - * .Site-content -> body > .container .row - * .footer -> footer - * - * Key idea seems to be to ensure that .container and __all its parents__ - * have height set to 100% - * - */ - -html, body { - height: 100%; -} - -body { - position: relative; -} - -body > .container { - display: flex; - height: 100%; - flex-direction: column; -} - -body > .container .row { - flex: 1 0 auto; -} - -footer { - margin-top: 45px; - padding: 35px 0 36px; - border-top: 1px solid #e5e5e5; - color: #666; - display: flex; - flex-shrink: 0; -} -footer p { - margin-bottom: 0; -} -footer div { - flex: 1; -} -footer .pkgdown { - text-align: right; -} -footer p { - margin-bottom: 0; -} - -img.icon { - float: right; -} - -img { - max-width: 100%; -} - -/* Fix bug in bootstrap (only seen in firefox) */ -summary { - display: list-item; -} - -/* Typographic tweaking ---------------------------------*/ - -.contents .page-header { - margin-top: calc(-60px + 1em); -} - -dd { - margin-left: 3em; -} - -/* Section anchors ---------------------------------*/ - -a.anchor { - margin-left: -30px; - display:inline-block; - width: 30px; - height: 30px; - visibility: hidden; - - background-image: url(./link.svg); - background-repeat: no-repeat; - background-size: 20px 20px; - background-position: center center; -} - -.hasAnchor:hover a.anchor { - visibility: visible; -} - -@media (max-width: 767px) { - .hasAnchor:hover a.anchor { - visibility: hidden; - } -} - - -/* Fixes for fixed navbar --------------------------*/ - -.contents h1, .contents h2, .contents h3, .contents h4 { - padding-top: 60px; - margin-top: -40px; -} - -/* Navbar submenu --------------------------*/ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: -6px; - margin-left: -1px; - border-radius: 0 6px 6px 6px; -} - -.dropdown-submenu:hover>.dropdown-menu { - display: block; -} - -.dropdown-submenu>a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #cccccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover>a:after { - border-left-color: #ffffff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left>.dropdown-menu { - left: -100%; - margin-left: 10px; - border-radius: 6px 0 6px 6px; -} - -/* Sidebar --------------------------*/ - -#pkgdown-sidebar { - margin-top: 30px; - position: -webkit-sticky; - position: sticky; - top: 70px; -} - -#pkgdown-sidebar h2 { - font-size: 1.5em; - margin-top: 1em; -} - -#pkgdown-sidebar h2:first-child { - margin-top: 0; -} - -#pkgdown-sidebar .list-unstyled li { - margin-bottom: 0.5em; -} - -/* bootstrap-toc tweaks ------------------------------------------------------*/ - -/* All levels of nav */ - -nav[data-toggle='toc'] .nav > li > a { - padding: 4px 20px 4px 6px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; -} - -nav[data-toggle='toc'] .nav > li > a:hover, -nav[data-toggle='toc'] .nav > li > a:focus { - padding-left: 5px; - color: inherit; - border-left: 1px solid #878787; -} - -nav[data-toggle='toc'] .nav > .active > a, -nav[data-toggle='toc'] .nav > .active:hover > a, -nav[data-toggle='toc'] .nav > .active:focus > a { - padding-left: 5px; - font-size: 1.5rem; - font-weight: 400; - color: inherit; - border-left: 2px solid #878787; -} - -/* Nav: second level (shown on .active) */ - -nav[data-toggle='toc'] .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} - -nav[data-toggle='toc'] .nav .nav > li > a { - padding-left: 16px; - font-size: 1.35rem; -} - -nav[data-toggle='toc'] .nav .nav > li > a:hover, -nav[data-toggle='toc'] .nav .nav > li > a:focus { - padding-left: 15px; -} - -nav[data-toggle='toc'] .nav .nav > .active > a, -nav[data-toggle='toc'] .nav .nav > .active:hover > a, -nav[data-toggle='toc'] .nav .nav > .active:focus > a { - padding-left: 15px; - font-weight: 500; - font-size: 1.35rem; -} - -/* orcid ------------------------------------------------------------------- */ - -.orcid { - font-size: 16px; - color: #A6CE39; - /* margins are required by official ORCID trademark and display guidelines */ - margin-left:4px; - margin-right:4px; - vertical-align: middle; -} - -/* Reference index & topics ----------------------------------------------- */ - -.ref-index th {font-weight: normal;} - -.ref-index td {vertical-align: top;} -.ref-index .icon {width: 40px;} -.ref-index .alias {width: 40%;} -.ref-index-icons .alias {width: calc(40% - 40px);} -.ref-index .title {width: 60%;} - -.ref-arguments th {text-align: right; padding-right: 10px;} -.ref-arguments th, .ref-arguments td {vertical-align: top;} -.ref-arguments .name {width: 20%;} -.ref-arguments .desc {width: 80%;} - -/* Nice scrolling for wide elements --------------------------------------- */ - -table { - display: block; - overflow: auto; -} - -/* Syntax highlighting ---------------------------------------------------- */ - -pre { - word-wrap: normal; - word-break: normal; - border: 1px solid #eee; -} - -pre, code { - background-color: #f8f8f8; - color: #333; -} - -pre code { - overflow: auto; - word-wrap: normal; - white-space: pre; -} - -pre .img { - margin: 5px 0; -} - -pre .img img { - background-color: #fff; - display: block; - height: auto; -} - -code a, pre a { - color: #375f84; -} - -a.sourceLine:hover { - text-decoration: none; -} - -.fl {color: #1514b5;} -.fu {color: #000000;} /* function */ -.ch,.st {color: #036a07;} /* string */ -.kw {color: #264D66;} /* keyword */ -.co {color: #888888;} /* comment */ - -.message { color: black; font-weight: bolder;} -.error { color: orange; font-weight: bolder;} -.warning { color: #6A0366; font-weight: bolder;} - -/* Clipboard --------------------------*/ - -.hasCopyButton { - position: relative; -} - -.btn-copy-ex { - position: absolute; - right: 0; - top: 0; - visibility: hidden; -} - -.hasCopyButton:hover button.btn-copy-ex { - visibility: visible; -} - -/* headroom.js ------------------------ */ - -.headroom { - will-change: transform; - transition: transform 200ms linear; -} -.headroom--pinned { - transform: translateY(0%); -} -.headroom--unpinned { - transform: translateY(-100%); -} - -/* mark.js ----------------------------*/ - -mark { - background-color: rgba(255, 255, 51, 0.5); - border-bottom: 2px solid rgba(255, 153, 51, 0.3); - padding: 1px; -} - -/* vertical spacing after htmlwidgets */ -.html-widget { - margin-bottom: 10px; -} - -/* fontawesome ------------------------ */ - -.fab { - font-family: "Font Awesome 5 Brands" !important; -} - -/* don't display links in code chunks when printing */ -/* source: https://stackoverflow.com/a/10781533 */ -@media print { - code a:link:after, code a:visited:after { - content: ""; - } -} diff --git a/docs/pkgdown.js b/docs/pkgdown.js deleted file mode 100644 index 7e7048fa..00000000 --- a/docs/pkgdown.js +++ /dev/null @@ -1,108 +0,0 @@ -/* http://gregfranko.com/blog/jquery-best-practices/ */ -(function($) { - $(function() { - - $('.navbar-fixed-top').headroom(); - - $('body').css('padding-top', $('.navbar').height() + 10); - $(window).resize(function(){ - $('body').css('padding-top', $('.navbar').height() + 10); - }); - - $('[data-toggle="tooltip"]').tooltip(); - - var cur_path = paths(location.pathname); - var links = $("#navbar ul li a"); - var max_length = -1; - var pos = -1; - for (var i = 0; i < links.length; i++) { - if (links[i].getAttribute("href") === "#") - continue; - // Ignore external links - if (links[i].host !== location.host) - continue; - - var nav_path = paths(links[i].pathname); - - var length = prefix_length(nav_path, cur_path); - if (length > max_length) { - max_length = length; - pos = i; - } - } - - // Add class to parent
  • , and enclosing
  • if in dropdown - if (pos >= 0) { - var menu_anchor = $(links[pos]); - menu_anchor.parent().addClass("active"); - menu_anchor.closest("li.dropdown").addClass("active"); - } - }); - - function paths(pathname) { - var pieces = pathname.split("/"); - pieces.shift(); // always starts with / - - var end = pieces[pieces.length - 1]; - if (end === "index.html" || end === "") - pieces.pop(); - return(pieces); - } - - // Returns -1 if not found - function prefix_length(needle, haystack) { - if (needle.length > haystack.length) - return(-1); - - // Special case for length-0 haystack, since for loop won't run - if (haystack.length === 0) { - return(needle.length === 0 ? 0 : -1); - } - - for (var i = 0; i < haystack.length; i++) { - if (needle[i] != haystack[i]) - return(i); - } - - return(haystack.length); - } - - /* Clipboard --------------------------*/ - - function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-original-title'); - element.setAttribute('data-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-original-title', tooltipOriginalTitle); - } - - if(ClipboardJS.isSupported()) { - $(document).ready(function() { - var copyButton = ""; - - $(".examples, div.sourceCode").addClass("hasCopyButton"); - - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); - - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); - - // Initialize clipboard: - var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent; - } - }); - - clipboardBtnCopies.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); - - clipboardBtnCopies.on('error', function() { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); - }); - }); - } -})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml deleted file mode 100644 index d16578e2..00000000 --- a/docs/pkgdown.yml +++ /dev/null @@ -1,11 +0,0 @@ -pandoc: 2.7.3 -pkgdown: 1.5.1 -pkgdown_sha: ~ -articles: - mfl_basics: mfl_basics.html - mfl_getendpoint: mfl_getendpoint.html -last_built: 2020-08-03T17:06Z -urls: - reference: ffscrapr.dynastyprocess.com/reference - article: ffscrapr.dynastyprocess.com/articles - diff --git a/docs/reference/dp_playerids.html b/docs/reference/dp_playerids.html deleted file mode 100644 index 3178aec5..00000000 --- a/docs/reference/dp_playerids.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - -Import latest DynastyProcess player IDs — dp_playerids • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of the latest DynastyProcess player IDs csv

    -
    - -
    dp_playerids()
    - - -

    Value

    - -

    a tibble of trade values

    -

    See also

    - - - -

    Examples

    -
    dp_playerids()
    #> # A tibble: 2,071 x 19 -#> mfl_id sportradar_id gsis_id fantasypros_id ffcalculator_id pfr_id cfbref_id -#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 10005 680fd5cf-3bd~ 00-002~ NA NA WatsD~ dekoda-w~ -#> 2 10026 f1cff356-8de~ 00-002~ NA NA ColeK~ kurt-col~ -#> 3 10077 72f5a27a-544~ 00-002~ NA NA IvorC~ NA -#> 4 10103 6bc584ed-82c~ 00-002~ NA NA NA NA -#> 5 10111 f0d837e0-54e~ 00-002~ NA NA LoveK~ NA -#> 6 10122 4a8190f6-039~ 00-002~ NA NA StewD~ NA -#> 7 10143 cee49408-2e9~ 00-002~ NA NA NA NA -#> 8 10149 688f7a3b-4d6~ 00-002~ NA NA BrocT~ NA -#> 9 10220 39ee3bee-117~ 00-002~ NA NA SendA~ NA -#> 10 10250 4f799675-2b2~ 00-002~ NA NA SherM~ NA -#> # ... with 2,061 more rows, and 12 more variables: sleeper_id <chr>, -#> # espn_id <chr>, fleaflicker_id <chr>, name <chr>, merge_name <chr>, -#> # position <chr>, team <chr>, age <dbl>, draft_year <int>, draft_round <int>, -#> # draft_pick <int>, birthdate <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/dp_values.html b/docs/reference/dp_values.html deleted file mode 100644 index 9db1c247..00000000 --- a/docs/reference/dp_values.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - -Import latest DynastyProcess values — dp_values • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Fetches a copy of the latest DynastyProcess dynasty trade values sheet

    -
    - -
    dp_values(file = c("values.csv", "values-players.csv", "values-picks.csv"))
    - -

    Arguments

    - - - - - - -
    file

    one of c("values.csv","values-players.csv","values-picks.csv")

    - -

    Value

    - -

    a tibble of trade values

    -

    See also

    - - - -

    Examples

    -
    dp_values()
    #> # A tibble: 487 x 12 -#> player pos team age draft_year ecr_1qb ecr_2qb ecr_pos value_1qb -#> <chr> <chr> <chr> <dbl> <int> <dbl> <dbl> <dbl> <int> -#> 1 Chris~ RB CAR 24.1 2017 1.1 1.1 1.1 10232 -#> 2 Saquo~ RB NYG 23.5 2018 2 2.3 1.9 10018 -#> 3 Micha~ WR NOS 27.4 2016 3.2 3.6 1 9739 -#> 4 Ezeki~ RB DAL 25 2016 4.6 5.9 3.1 9424 -#> 5 Alvin~ RB NOS 25 2017 6 7.9 4.2 9119 -#> 6 Davan~ WR GBP 27.6 2014 8.1 10.4 3.5 8680 -#> 7 Tyree~ WR KCC 26.4 2016 8.2 10.6 3.3 8660 -#> 8 DeAnd~ WR ARI 28.1 2013 8.7 11.3 3.8 8559 -#> 9 Dalvi~ RB MIN 25 2017 9.1 12.1 6 8478 -#> 10 Chris~ WR TBB 24.4 2017 9.5 12.4 4.8 8399 -#> # ... with 477 more rows, and 3 more variables: value_2qb <int>, -#> # scrape_date <date>, fp_id <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_connect.html b/docs/reference/ff_connect.html deleted file mode 100644 index c635d8a7..00000000 --- a/docs/reference/ff_connect.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - -Connect to a League — ff_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and gets a login-cookie if available - it does so by passing arguments to the appropriate league-based handler.

    -
    - -
    ff_connect(platform = "mfl", league_id, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    platform

    one of MFL or Sleeper (Fleaflicker, ESPN, Yahoo in approximate priority order going forward)

    league_id

    league_id (currently assuming one league at a time)

    ...

    other parameters passed to the connect function for each specific platform.

    -

    rate_limit Defaults to TRUE. Pass FALSE to turn off.

    -

    rate_limit_number number of attempts to try in rate_limit_seconds.

    -

    APIKEY MFL-specific - grants access to perform something as a user in a specific league

    -

    user_name Collects user_name field for leagues that support it (MFL, Sleeper so far)

    -

    password Collects password and attempts to fetch an authorization token which functions a lot like an APIKEY

    -

    user_agent Identifies user scraping the data

    - -

    Value

    - -

    a connection object to be used with ff_* functions

    -

    See also

    - - - -

    Examples

    -
    ff_connect(platform = "mfl", season = 2019, league_id = 54040, rate_limit = FALSE)
    #> <MFL connection 2019_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2019 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_draft.html b/docs/reference/ff_draft.html deleted file mode 100644 index 118fecb6..00000000 --- a/docs/reference/ff_draft.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - -Get Draft Results — ff_draft • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function gets a table of the draft results for the current year. -Can handle MFL devy drafts or startup drafts by specifying the custom_players argument

    -
    - -
    ff_draft(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_draft(conn, custom_players = FALSE, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    not sure if there'll be other params yet!

    custom_players

    TRUE or FALSE - retrieve custom players from the MFL database? (Devy, placeholder picks etc)

    - -

    Value

    - -

    A tibble of draft results

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_draft(ssb_conn)
    #> # A tibble: 57 x 10 -#> timestamp round pick franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2020-05-15 19:43:56 01 01 0001 Team Pikachu 14803 -#> 2 2020-05-15 19:53:18 01 02 0012 Team Mewtwo 14802 -#> 3 2020-05-15 19:58:24 01 03 0010 Team Yoshi 14797 -#> 4 2020-05-15 21:19:59 01 04 0013 Team Ness 14800 -#> 5 2020-05-16 02:47:24 01 05 0010 Team Yoshi 14799 -#> 6 2020-05-16 02:48:15 01 06 0012 Team Mewtwo 14833 -#> 7 2020-05-16 04:03:59 01 07 0011 Team Diddy Ko~ 14832 -#> 8 2020-05-16 07:00:48 01 08 0007 Team Kirby 14839 -#> 9 2020-05-16 12:38:48 01 09 0006 Team King Ded~ 14836 -#> 10 2020-05-16 13:47:29 01 10 0006 Team King Ded~ 14834 -#> # ... with 47 more rows, and 4 more variables: player_name <chr>, pos <chr>, -#> # age <dbl>, team <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_draftpicks.html b/docs/reference/ff_draftpicks.html deleted file mode 100644 index 5f38660c..00000000 --- a/docs/reference/ff_draftpicks.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - -Get Draft Picks — ff_draftpicks • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Get current and future draft picks that have not yet been selected/converted into players

    -
    - -
    ff_draftpicks(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_draftpicks(conn, ...)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    other arguments (currently unused)

    - -

    Value

    - -

    a tibble detailing future draft picks

    - -

    Examples

    -
    dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_draftpicks(conn = dlf_conn)
    #> # A tibble: 80 x 5 -#> season franchise_id franchise_name round original_franchise_id -#> <dbl> <chr> <chr> <dbl> <chr> -#> 1 2021 0001 @dibari22 1 0001 -#> 2 2021 0001 @dibari22 2 0001 -#> 3 2021 0001 @dibari22 3 0001 -#> 4 2021 0001 @dibari22 4 0001 -#> 5 2021 0001 @dibari22 5 0001 -#> 6 2021 0002 @_PeteLaw 1 0002 -#> 7 2021 0002 @_PeteLaw 2 0002 -#> 8 2021 0002 @_PeteLaw 3 0002 -#> 9 2021 0002 @_PeteLaw 4 0002 -#> 10 2021 0002 @_PeteLaw 5 0002 -#> # ... with 70 more rows
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_franchises.html b/docs/reference/ff_franchises.html deleted file mode 100644 index 8a6570f5..00000000 --- a/docs/reference/ff_franchises.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - -Get League Franchises — ff_franchises • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Returns a tidy dataframe of franchises and any relevant information

    -
    - -
    ff_franchises(conn)
    -
    -# S3 method for mfl_conn
    -ff_franchises(conn)
    - -

    Arguments

    - - - - - - -
    conn

    a conn object created by ff_connect()

    - -

    Value

    - -

    A tibble of franchises, complete with IDs

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_franchises(ssb_conn)
    #> # A tibble: 14 x 7 -#> franchise_id franchise_name logo icon abbrev bbidAvailableBa~ -#> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 0001 Team Pikachu http~ http~ PIKA 200.00 -#> 2 0002 Team Simon Be~ http~ http~ SIMN 200.00 -#> 3 0003 Team Captain ~ http~ http~ CFCN 200.00 -#> 4 0004 Team Ice Clim~ http~ http~ ICE 158.00 -#> 5 0005 Team Dr. Mario http~ http~ DRM 200.00 -#> 6 0006 Team King Ded~ http~ http~ KDDD 200.00 -#> 7 0007 Team Kirby http~ http~ KRBY 196.00 -#> 8 0008 Team Fox http~ http~ FOX 200.00 -#> 9 0009 Team Link http~ http~ LINK 200.00 -#> 10 0010 Team Yoshi http~ http~ YSHI 173.00 -#> 11 0011 Team Diddy Ko~ http~ http~ DDY 200.00 -#> 12 0012 Team Mewtwo http~ http~ MEW2 200.00 -#> 13 0013 Team Ness http~ http~ NA 179.00 -#> 14 0014 Team Luigi http~ http~ LUIG 191.00 -#> # ... with 1 more variable: waiverSortOrder <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_league.html b/docs/reference/ff_league.html deleted file mode 100644 index 51df0e01..00000000 --- a/docs/reference/ff_league.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - -Get League Summary — ff_league • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble of common league settings, including details like "1QB" or "2QB/SF", best ball, team count etc

    -
    - -
    ff_league(conn)
    -
    -# S3 method for mfl_conn
    -ff_league(conn)
    - -

    Arguments

    - - - - - - -
    conn

    the connection object created by ff_connect()

    - -

    Value

    - -

    A one-row tibble of league settings.

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_league(ssb_conn)
    #> # A tibble: 1 x 13 -#> league_id league_name franchise_count qb_type idp scoring_flags best_ball -#> <chr> <chr> <dbl> <chr> <lgl> <chr> <lgl> -#> 1 54040 The Super ~ 14 1QB FALSE 0.5_ppr, TEP~ TRUE -#> # ... with 6 more variables: salary_cap <lgl>, player_copies <dbl>, -#> # years_active <chr>, qb_count <chr>, roster_size <dbl>, league_depth <dbl>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_playerscores.html b/docs/reference/ff_playerscores.html deleted file mode 100644 index cbaf5c8f..00000000 --- a/docs/reference/ff_playerscores.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - -Get Player Scoring History — ff_playerscores • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble of player scores based on league rules

    -
    - -
    ff_playerscores(conn, season, week, ...)
    -
    -# S3 method for mfl_conn
    -ff_playerscores(conn, season, week, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    season

    the season of interest - generally only the most recent 2-3 seasons are available

    week

    a numeric or one of YTD (year-to-date) or AVG (average to date)

    ...

    other arguments (currently unused)

    - -

    Value

    - -

    A tibble of historical player scoring

    - -

    Examples

    -
    dlf_conn <- mfl_connect(2020, league_id = 37920) -ff_playerscores(conn = dlf_conn, season = 2019, week = "YTD")
    #> # A tibble: 597 x 8 -#> season week player_id player_name pos team points isAvailable -#> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> -#> 1 2019 YTD 13593 Jackson, Lamar QB BAL 480.68 0 -#> 2 2019 YTD 13130 McCaffrey, Christian RB CAR 469.20 0 -#> 3 2019 YTD 12652 Thomas, Michael WR NOS 391.00 0 -#> 4 2019 YTD 11244 Kelce, Travis TE KCC 369.80 0 -#> 5 2019 YTD 12625 Elliott, Ezekiel RB DAL 355.70 0 -#> 6 2019 YTD 12620 Prescott, Dak QB DAL 351.78 0 -#> 7 2019 YTD 12626 Henry, Derrick RB TEN 351.60 0 -#> 8 2019 YTD 13113 Watson, Deshaun QB HOU 342.08 0 -#> 9 2019 YTD 10703 Wilson, Russell QB SEA 339.70 0 -#> 10 2019 YTD 13319 Jones, Aaron RB GBP 337.90 0 -#> # ... with 587 more rows
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_rosters.html b/docs/reference/ff_rosters.html deleted file mode 100644 index f77d3ee2..00000000 --- a/docs/reference/ff_rosters.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - -Get League Rosters — ff_rosters • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble of team rosters

    -
    - -
    ff_rosters(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_rosters(conn, custom_players = FALSE, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    arguments passed to other methods (currently none)

    custom_players

    TRUE or FALSE - include custom players? defaults to FALSE

    - -

    Value

    - -

    A tibble of rosters, joined to basic player information and basic franchise information

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_rosters(ssb_conn)
    #> # A tibble: 432 x 11 -#> franchise_id franchise_name player_id player_name pos team age -#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> -#> 1 0001 Team Pikachu 13129 Fournette,~ RB JAC 25.5 -#> 2 0001 Team Pikachu 13189 Engram, Ev~ TE NYG 25.9 -#> 3 0001 Team Pikachu 11680 Landry, Ja~ WR CLE 27.7 -#> 4 0001 Team Pikachu 13290 Cohen, Tar~ RB CHI 25 -#> 5 0001 Team Pikachu 13155 Ross, John WR CIN 24.7 -#> 6 0001 Team Pikachu 13158 Westbrook,~ WR JAC 26.7 -#> 7 0001 Team Pikachu 10273 Newton, Cam QB NEP 31.2 -#> 8 0001 Team Pikachu 14085 Pollard, T~ RB DAL 23.3 -#> 9 0001 Team Pikachu 13139 Williams, ~ RB GBP 25.3 -#> 10 0001 Team Pikachu 13649 Hamilton, ~ WR DEN 25.4 -#> # ... with 422 more rows, and 4 more variables: roster_status <chr>, -#> # drafted <chr>, draft_year <chr>, draft_round <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_schedule.html b/docs/reference/ff_schedule.html deleted file mode 100644 index f40f4ba6..00000000 --- a/docs/reference/ff_schedule.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - - -Get Schedule — ff_schedule • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble with one row for every team for every weekly matchup

    -
    - -
    ff_schedule(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_schedule(conn, ...)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    additional args which might be used eventually

    - -

    Value

    - -

    A tidy dataframe with one row per game per franchise per week

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_schedule(ssb_conn)
    #> # A tibble: 236 x 5 -#> week franchise_id spread result opponent_id -#> <dbl> <chr> <dbl> <chr> <chr> -#> 1 1 0001 0 T 0003 -#> 2 1 0002 0 T 0004 -#> 3 1 0003 0 T 0001 -#> 4 1 0004 0 T 0002 -#> 5 1 0005 0 T 0008 -#> 6 1 0006 0 T 0012 -#> 7 1 0007 0 T 0009 -#> 8 1 0008 0 T 0005 -#> 9 1 0009 0 T 0007 -#> 10 1 0010 0 T 0014 -#> # ... with 226 more rows
    - -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_scoring.html b/docs/reference/ff_scoring.html deleted file mode 100644 index e53b2d56..00000000 --- a/docs/reference/ff_scoring.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - - -Get League Scoring settings — ff_scoring • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a dataframe with detailed scoring settings, broken down by position, event, range, and points.

    -
    - -
    ff_scoring(conn)
    -
    -# S3 method for mfl_conn
    -ff_scoring(conn)
    - -

    Arguments

    - - - - - - -
    conn

    a conn object created by ff_connect()

    - -

    Value

    - -

    A tibble of league scoring rules for each position defined.

    -

    See also

    - - - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_scoring(ssb_conn)
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_standings.html b/docs/reference/ff_standings.html deleted file mode 100644 index 53d77ec7..00000000 --- a/docs/reference/ff_standings.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - -Get Standings — ff_standings • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble of season-long fantasy team stats

    -
    - -
    ff_standings(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_standings(conn, ...)
    - -

    Arguments

    - - - - - - - - - - -
    conn

    a conn object created by ff_connect()

    ...

    arguments passed to other methods (currently none)

    - -

    Value

    - -

    A tibble of standings

    - -

    Examples

    -
    ssb_conn <- ff_connect(platform = "mfl", league_id = 54040, season = 2020) -ff_standings(ssb_conn)
    #> # A tibble: 14 x 14 -#> franchise_id franchise_name h2h_wins h2h_losses h2h_ties h2h_winpct -#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> -#> 1 0001 Team Pikachu 0 0 0 NaN -#> 2 0002 Team Simon Be~ 0 0 0 NaN -#> 3 0003 Team Captain ~ 0 0 0 NaN -#> 4 0004 Team Ice Clim~ 0 0 0 NaN -#> 5 0005 Team Dr. Mario 0 0 0 NaN -#> 6 0006 Team King Ded~ 0 0 0 NaN -#> 7 0007 Team Kirby 0 0 0 NaN -#> 8 0008 Team Fox 0 0 0 NaN -#> 9 0009 Team Link 0 0 0 NaN -#> 10 0010 Team Yoshi 0 0 0 NaN -#> 11 0011 Team Diddy Ko~ 0 0 0 NaN -#> 12 0012 Team Mewtwo 0 0 0 NaN -#> 13 0013 Team Ness 0 0 0 NaN -#> 14 0014 Team Luigi 0 0 0 NaN -#> # ... with 8 more variables: allplay_wins <dbl>, allplay_losses <dbl>, -#> # allplay_ties <dbl>, allplay_winpct <dbl>, points_for <dbl>, -#> # points_against <dbl>, victory_points <dbl>, power_rank <dbl>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/ff_transactions.html b/docs/reference/ff_transactions.html deleted file mode 100644 index d538c16b..00000000 --- a/docs/reference/ff_transactions.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - -Get League Transactions — ff_transactions • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function returns a tibble of transactions

    -
    - -
    ff_transactions(conn, ...)
    -
    -# S3 method for mfl_conn
    -ff_transactions(conn, custom_players = FALSE, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    ...

    additional args

    custom_players

    TRUE or FALSE - fetch custom players

    - -

    Value

    - -

    A tidy dataframe of transaction data

    - -

    Examples

    -
    dlf_conn <- mfl_connect(2019, league_id = 37920) -ff_transactions(dlf_conn)
    #> # A tibble: 1,146 x 12 -#> timestamp type type_desc franchise_id franchise_name player_id -#> <dttm> <chr> <chr> <chr> <chr> <chr> -#> 1 2019-12-19 11:56:49 FREE~ added 0003 Electric Spid~ 13868 -#> 2 2019-12-19 11:56:49 FREE~ dropped 0003 Electric Spid~ 13387 -#> 3 2019-12-19 03:03:13 FREE~ added 0019 Advance Repti~ 12857 -#> 4 2019-12-19 03:03:13 FREE~ dropped 0019 Advance Repti~ 11186 -#> 5 2019-12-19 03:02:26 FREE~ added 0019 Advance Repti~ 13868 -#> 6 2019-12-19 03:02:26 FREE~ dropped 0019 Advance Repti~ 14305 -#> 7 2019-12-15 17:28:15 FREE~ added 0003 Electric Spid~ 12197 -#> 8 2019-12-15 17:27:28 FREE~ dropped 0003 Electric Spid~ 12623 -#> 9 2019-12-15 17:27:00 FREE~ added 0003 Electric Spid~ 13387 -#> 10 2019-12-15 17:26:27 IR deactiva~ 0003 Electric Spid~ 14138 -#> # ... with 1,136 more rows, and 6 more variables: player_name <chr>, pos <chr>, -#> # team <chr>, bbid_spent <dbl>, trade_partner <chr>, comments <chr>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/figures/ffscrapr.svg b/docs/reference/figures/ffscrapr.svg deleted file mode 100644 index 061e879b..00000000 --- a/docs/reference/figures/ffscrapr.svg +++ /dev/null @@ -1,158 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - -ffscrapr - - - \ No newline at end of file diff --git a/docs/reference/figures/logo.png b/docs/reference/figures/logo.png deleted file mode 100644 index 0080b654541469541a94035925741d88fcaeae19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178428 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

    jZmLHIr?QCe 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%0D3{Lc(klP?` z!{>u>0@{}hAWk66PL|+cshOz0=eL4nD%v|O~*k@Eu7(@KPyGBMQLwJqIqX$MoIK$s~21JhZ zku5oNm(^9{dT3Yk9E@Jk&N^{FKQXAK#Wvw!+%Cb!-HXGqcIdu~`^B%=|0uV^fSKtM~^Ju;o~*kZecH&@mNbma|2yn-GW0Q zgWp(`)~xVw;pb)7b=aJz?Y+vK-Zp8TUc4TTZ~d=HM7~>yyzoknzQ#w;6zC8)9>$3L zZj{LI|MSP!q*4d`zEgY-C(+Uj2iRw$m2v=|@qB{5Bktj>n;}RPZKayy%8YIDH7=l8 z3N$gH9Rxx}t3Ml;fN9ZXF1mkpv*qs}3k&xXZEFhqnef?*uj}`1y_Dcxd_vkDnaOk_W(iDzl}9=I;-czZ##Pd_D$F=mleZ zIQ>84|8B24`NdWc31o#J=NIr@>nEU3VoOT~p}bV`A- z_TZPDkGZ8lNLQC{Q4O{wiJGy@_vHt+>sH_sQ!rEfCL^CuEqk_dlBJ#FipxaW0-sCH z=i;zXY9sRN>4RAsw{5&ck*VIF?VUdaJv4s8$S>5{)wRIxd-Lh{zGJAZB9SLIaxH*w zi}9pBxeE4kf`uJ#%Z&$$PMU%vx}j}t;>-I#ZN5%Y(V9uyj){VWoE$uh2nf`zwa9S*iKT$og@J-|j1gZl zTkY1e;~hBL$Y$g3apd0+cqNqJ74X(`&OR040{=1*TE+*atsUe60BoZoQPVO^%h9;A zwH2dcl0_kh7zGxzc-}nCgE0c^y^P+O`R)eLAOojokk!UlQXJ~@^>Sx4RPshbdX|u} z?%oR(Z>+o&M+Jj9XP}23gEJPIw_NlC!}6N&8%e?*75iE4A9Pl7*(SLm4?k9apgR84 zBQ%tlq3Ytd$v(knyf}n7e07`GUTAjwIsYLfV)$kJ9VRSSPK?P1*Lu!l3hRED&wY&L zGq3UW?VB8rY~0VEJF)%3Ba%{h>cYC|@H=eWcAguBs9E+|cY{Q4Z@{hjGIB`(D?3ZcL30=< z0|Elj7RWUBMO>s-K;xs`Zc4jW@&I)EPmlNDl6z|=d&HHP=4(hW#)z{ebj;7w7FAnV zTDGAbYv@zTUURwf&tx=J@PPF%TTJhx_0fEEh+v*#dzcwm5|e5Fj|f zN|*&WyJB#h>s~fru~R`*l7H44AkJEXW7rPA0(P8%9l6Fnd#`gwRIW(joX5ukzwu?F zWBZDb7%tN8y&*#^VH^J+H1YWabW%R|)itBM!&7-7dTsA4UwtvlcYyab6m z;yk0Ak*ks(0bX`*pv+$s$|HVp_8;L4=0+$8K?@OqDlkyu%h=hmqfNK^Y_(fEJrIDi zNWghhJ4?sQNmJ5{{Q1o*7wj6jsW6g~laZ+_Ql|i*hUByy;EjT&sIcFLkWnQ~cr!)n z`cowS1Ou#2JoYAkAQd8HtqW?xa_DSr+)BW%wexYgjhhoJW@;+tOBhe^@Z`!$dO%&y zB_I%zk&$8JR7rSenW$;QU`N8-oQXhq_b!!vE2hA_|CutFP;BqH5nQ}z1W+0*pxx5* z_4M*W(+C@{w3}iwFjLe!kl8*AGhFB-qQuozX>2{M`Dbp zPcglByuNgZo@}bus<27r=j%aeFyVS_;}&;j;;?&xvxh2Rd|V58q!kwz!vpQM^?SgV z+yxcMOJo5I$eKI2hVH_?QlMQtoH+FAfk7n9(vWoQy4wTpP@RvSF?HC=$_e($6@hzC z>@+_VjwjhU(>LyL>204WPE<`NnO@y$_r><#8U zYD@xYg07dgwd(D-8eWgSEJ64>Y%Ny`AzDJADW$GH!q<|U%ecJnflok?sm*ddP62bG zqHSjEIP!ZBMW5SZyx#}6MFr|Ja8buTvbLz+|8px{eMP9#&E%vpGmO*1)>Z~Wr)YX` zHEFL2aj%JE-rD1O`7)o&ZYnf!2N^$aM)fvXEC(4K$8$0VNi5hz8W`il)@Nijk9(OB zS%k{vjl5rRgdcKp@`-Otyws6)UPbXcDW#t&UB~nXzcZ11NY|S96R!5CZ)5V$$&O*I zF?m-m+pd|xO75>iJK;^R&ANS8PW#2>QUtN7{? zyI9iyB{2@wcF~k%y<2yT?bU^!TdzLZmJeSg)7&chYGoxh+WqpgZfK;&hTE_95xupo zl7%J%)heC<{p%O3R~0Vmitu_^Iz%0ojbF#_s6DO!t@3kcQ*P4hL@a=I;#+!S#{o_r z^W?#M7Jk>hdvgYf zXWH{MK2xx_y~XrNM7LSH#jVoI{srC%o%RztHmcU^+j2ig=vLCdQ+}Fmxpnc;^c`*A zcQ+&Lrd|i<_E1(Pt{9I${YgYduaGFzX=b}J5gdA6w2^k`_hVjPy|LVoT0-YyO#AH* z@ij3lW#p}=R=>C3I%#l_9`SC62DjteGShz&t7t6g<%qJalY08LD1+I>;$U<+r%O6O z)GNM3_hPN*_Viym7EdoprizY!5c-fY+9ofQ9 z@%PC}7oJu|OQ*Eg*WXxp-8vDp_4}P)(JFiKuLqI?ia$;Vu!8Mg*IGB9dz5ZvE)_+N zKY-7;=wsZy^yTH5W1U2qxr%xrieoH&gUqTlwz14HO*qJ87pa?Piwo$IM@gxtEn1hf z4eHXy0<7hE+V-O?7|fm?E}ms}tB=;=Y(>iW>f{@H81^>IBI3r$ix@1*go zuLf*jH2J(Dn7kE3G|#<9dRk>fF?X5rZ+s-@_VJQXqaJ06%0bAKXM;wl)`Q}Q%^gc> ze%@5P;su0}<_9mn%U0sj1-|lhbZ6^4;=f{Vl-c>*)^r(jhKKED|CW;L7uC?`Z1)3% zTx!k57rV~-mkNL3Ig&MEX?niz8a((X7xQz^QTvGNdHyRW<*rQd-@GvE3)%aJF0hBW z5LGYDtBE8TRM%VXMIG+mF>G)(+%;M))G&Lumm#yrrYb6?Lpc4b!JV29o4 z53QK^!#jrypOOaqRSr*!$K`o#*5f^TS_{T71`Nh$el@oyc3}vvM^R!&a2fB$Jh#+a z-6D;V3wu*P$fT-kMj*7L~}^?bUfbTF?=EFmK~y6qaF zGhgK#Ldk!{!Aj6XvX+bQjCS4aAtz@M%7(kC$qg9x#MJDrjEy^GHRZx~{DyYt9#~5F zOP7-Y5EXxKe%2s50xn%Yb98>9LAO!ghO zp2rIZ{y+U=L#;O>1xS02=C+y)BwVFO*_HJRRT@kA#B4;R2-5Hlo^B|~oEfB1!xc6R z8QeW(B35G8)=$KDAYWUJz&PP}Qdf4Peid6DuN;bk4z<~L7z5gKGoBTbTy}10RWZy| zrrq<+&n=IoZ-omf$Y-~?X}m9a@hj+A=z*o%_-bCSY(QvLK&dgAdxGuO-U^#RdW7Y> zkY7oTqXCUl9;{jVlys`5eKRw}f7mWxe?*zj#iE7H>D~OU^hni`_L8qkhoUui zIDOj2JsOj9eDvuE0{lYmwX;*2+t0CiP^zZJHQrzw&zsdrPG_XK*rntm@xNREwqb(d zpK8ZiwRQ(G*Qf{AJ9rtgn|C=MT&s)tL##dj?i&$*Q?scp8)XB@9*%!dVYJA#EgzBF z6b=5F5U5w1W@*D}G3#*es!sKieAsvW>(#$*0ktP2>n6kOQl_4SRC-ly#Y z7BpYi&)9#fkhc*#k2Ql4Fp`t1zkqSMC;E8q*f_CcQ4MQ@si(n z-Eo;INkPL4h8u^N)YDU~s+ift?x!Jq?#d0aB9X5Z*Ls?+s6^k(*sdh@JbUAA z>GdUPE$5zV&JLoFSvWbihLua~^*IQ3E_5%FR}ilL!Z!Gk}Ct52S>yM6o>tz(xdn&j^hxGPL&;-T<*w=QM7aUJ3Cq2Go%z)m9yvee2Us5 zq>TRW*Ze=BP%(r>)fZo;o^O%5IW-c~f2oo#{>jbxjx$fbYRR=!A1i#K*>QfCfhYAQ zAFt_-9sfhFlv+JHuh-;%9(Z$YTP8m5c*Z#_7-e?CSYpR6*m&c@#)8^^HHu@Dj3=wN z&DZa2vr`?M=ZBtVVaYM<9$&KAO>rjtW;`xx;;^+LeX3}P+rR0pDKP}^Dnr|9L+Mce zb3{o~)qP%jSGZh>$?LvnT5}9ogXb<^uOV;6g`@t-jAF0jSQK5ZgPgPDPIKFDU-@Rb zLER7qb;IH4CL`|WE){Q~?dCB`7kA-8mC@vJVe|L)^Bxl3rYBB*rNs8O6@f?gwzgg5 z^DUCbq%J>>ie9*$$6Kltd62fgfWnIn)4mJ^MzXLDRWlY}+mX7)M5%a4o7n6; z&s8+WKjaAVG+H^0EM~PyPPO$2nKJC5Or8bzReq$$kGSx#Ez{;~)dh(w379+Dq(%)7M@dIs|cc&p-3ucXjKEFuroUC?K3! zrNuUuF{zoHOiFW+`u~Dp^m>O=h{f}@yyV@wORP_llTW7N>+9i#Nww>Gn?A`L9lE;k zoQ-HNmkpyTi}?$>Qlx~db1&!(g$`kT>P~`Bc!+K&e|Jlv(&gSdX*%H z^GXg&R5L~|k-2sY@s)aBY!zd-PCMyH#7)qi7lHT1(ZjQN2=B`#v8z9a{$c2RlR@)W zjf9&ed5XN2Zey!?{jwC_4t8BOpZ#cvnQ9xtt8NRX*tqyP_SLWU9(|XPVL@e99dGB> z#kwaUUo|voSa$V{%idzVmFju~Q7wLq*0#~_Gyb;LX~@6+Z^W!=4q zncOy;gK1K%XLnWlTkk_=RefWq3APLSRbnD>$Slu&^QMW?b)vSGI8WE{w3JNhaI^)0_q^>xs!Ce}f>xJVuj<(cER&^r)@)CE!nYMB zraN~Jjy1eHmD?e=^mVL9++GNc@XhoN(=WPLSt-MRPdQ1SenD`QW-dojKWOd#!3)ok zB&c>mzU#t8&y1AZCnaN${5YUzN%HwT=1inShv~J~aixlVa!W4iwI5UZMK&-`_g}8o z2pN@~Z7qj4xJxh+BD8oi@5VCw1cEcNqoPuEnHkoAv|cz(QKT2{CVC2IQ!yTy`%;hloX{#Q)yAU+lMNy4@%UAmF9qUEw-%X0OhxYgq&hri6 zZg4UE!D-eIR$i`TO6mp9_^oIKkFM5-oa{qhrBxw(0#=XC;Xe|J5h28nNY_rQO^$bU z3@T@AWhiG9CK}_<7*3NLTNb^k2#t0`v;4bIR zZDHFnBl-<@`?{R`XS)Rp+i8=RC69?IBwfpvNQo_Pim7n?LyXgwvwx!XTVA&ldt&q&<35gO zdQGbXbJFwxC(f61Wi3@Pc;py)*h>zXS3^%ac((D>$rtYp-rn77?^;PRuy<=yrC_zr z{{O|qbgN>1(IQq^?7EAeV~!(sBA)`juRFC^q!Hrq#7pCY;2AFuugoLS4wVmtl+Bj+ zF`<%|Tw(&1`xu5JiXXNpqxC>$CN`8|-VEvEZCot*2QENQ_P=3K<-qZWgw1Y7w`WH# z?^WnmTvbc@%_GRG>J|=&2Phv&)=E_P*9-D;jtIg5VW(_}YZG#jZAGsStIldNR&wV; z`$RRyz`2P$DuR)kfoYK&iT+(VXFYAib#Hw?_8yw|++sVnb{$>L?G1XrxKuxH+#g6p z%zLb_T$QnsB7D=%L6xgBMc6BfVoiR@V(-%IRbH6pgNpR?5*`i{jEv~ke5SURa5LuufA=UC8H+;i5a zEkVf4r?-e-bW|=xCi8S6)X`>GiQuUdjsn~;t~8lPqyrlpzG}LiE)%20SX*b_`IWbp z8?Y9WX0b7zKY{dzTgy$>%hK@BE?x6sZ^D{yCt-Ek#@T#~ z5iBoM-+svq|BnqEzGOxDA8lVe8oh_U+)>pbOIZK3Suk`jD~5h}W5KD}d8@hgU(8U6 zV5Aiyeoj|0SyY8X*OB>f@YX##d)M2Y`8uuI@C{8YA8lqH{+Sa~2$j0Z=VGlSn|b1Z zM>RAy?AeUnjF)H$@9BP8?Md1rsz1d%{(mp$Mjg!)_&nU*PPKJq7eG3S+VZ{t*&Ben&9 z-1jPuan3vaN7wQH@Q#NOb~Db`JSJ|bzGInF&`vhBa4E;dv6vJx-Ym}@OZ$v~^y8Y< z<}t+r!a+JNHJD5x9tT=y4pYsE@iJs7vA14W`WQYSvP^%~Ych9e7tRUmd;>Yr7Da>& zvXDytTfcVs?dm;t3Hm#aKP_frhFVIyIx*9mC~#Uo3yE_kYmHy{S%q=gnWjrlyM1@}%1MkD9AO z6=NUm-A`;IR6O(bfj57PGk2S2W}R)xSoZ9LtaL^uRyGP@?T;2>uS=H_O+7-n&jzr7c@fD zxk$&nmfbrHC5_1jc6NRTRE3nj->DPs!D@^5Xk7KeIE*@UcyUEyMo(eE+=v2u!J~0F z`RFFm7_W0N+g3BhZ+M{&L-TZ7^LkF|g8!advC{baCP(#J0CB+>38ck-!^#wwczq6bc_V}ln@A`h0#=sb?p_&+e)a~7+%W{@OW~ztb zq4*{K_~>I}?GyOD_nzG(9^-W>XWJT}_+53!ayKKOSalA7Fz5Ga4230?iE*P8~+HWG7EzH8F1A1YSIkFdL0a6Zv(EfPZrtWCgq zHPH{h<6=vxl+Ua|(cu5{JIeFdt!oJTZ{#bz&^H|CTi^H~ylUBRY*XQJS#mxFURDJu z=1Dz?kx?3U*<0?R-(tgT%Ukbvn%}eiyrvwcVl!u7&UvVZaTpJ;3^TA!NNJ&sBOrRW z$>91IlYHKi@wI2QGO{+x|DjLEDLaZwgFX8H9vxSt2bYfO;E2B7M=T~YR?(yjL)k|{ zKXOrX_QDsQ@ybx(Q?ZZR#HrhSol2&s-59R#46A2{vK+p>18KV z9<+{880?O(zwK8B%IwNhJRAu?NK`hpB7DgC^e3Y9_n%eaUZwut$f3sB zm#nA42QBeHjH|nwjnKF$x=V^~I*yuCf#ALhCEuPAaEUCsFq*&6&Q$}7N7`R}OR zP`MuC@o^-HY-MUawYIScm(Jd-d+~>Jh(PU0oY9cYnUkLbf97PfHRVj-?{vNonXsMP z=EXRSK6Jnxm@Xz5z8B`X!W1x}`mz!oo}G z1bjM&u$7;WDff#fG4%)gc=MfhF%s)+))ou=bFxQF*9@KdcEeGYZne%$_J-(=9-F~oQ}+eD%37? zPtX9i>7iHPR#}CA^^TyciODES^5{6}**Z*|JjKSk?#r%3a6_6tushG(8or2kOTToQ z!LPW4;$4-%P{2=7vy<39-K@A?iq}2De&4Tiot!bUa*eNLLazSMFd?< zv#nU{Y(=i(DB>$MqENTCHFt@Cwj&CEG5msj=KV%yUTD+5=61cH7NpAFILiOV^m=PV zkegfZby1YZ$C%!io@tyoOOm0LT&0F{;jQ2uKst`BLTX-c5XNx8$Bpd3IPT!#Ba|U#5^yxxBD-aJHt^OJ{Y7Gpagg{-+p-i6JGkBuw9beQirAU*C)iPLOe$m&d_} zBz_ZzA^$E+H1Lr&-kkj@;oi0IjW;>lRL)2`7;r~d_`7AaIF#Aog+Jn{)# z-BRGcQAHHzVqZ+~KdJTqB5`v4N0Zz+$Y86SD%KB2t)^?wrzF%sF?ju>aRz7T>QSlg zEgK1|(9?mC(eSvKwG^Xb1N?a+OR|KUt&0f+gVS-gq82w40Igx2GT{AX={UTY`LATp zEimD8%1YjlWV8;GVcehThf=fpBc=6I?qO1MGZqN7A()<$q0EBNSjjcM`bFC!blt_Y z(WCLf84DDb`fCCk+pkbpTs_!#%}FMpcrlz*rxogI819>tQdRda)ZY1$XO?9LUx0D{ z$MTpE_xi@wl_p&iY>c^>N&zv`A*xiu596V})(*3ECYHTVie4Pz%YP?bc9W9|)QnkG zV(s3Hn{S$Z`K{c8g&;=T?BFAL!rWJDMl0(jU6CoD|NSx@Zs%w!eF`Vhz2Nx{L$4m; z)iK6G5kh^QM-Gpk)~;&FouB_xrhU42`U8(L$5ifj)Rzn*)dpPx1ET+sCbp8jz-yfV zF+IGTSX-D;|0eZqaa8Dm#eePMe=~(I6k(#~a5t398e$H&J^^{-bR&ynMKbJ*-RI34U(a99>E8D_=e6GN`=L#kPJ6?NAKFjsGF1@Po?Gr=6eQ%dmJp<9 zja;~Wn`s*S2$b+hJq4}ng4oo{4+&SG>$iVN?1#acPI~{?0dOddq z*|xX{X0AR5-`pE(=zm-IR5u4viXNB#pj7&{Y7P01+)}Ez_oO`Ug@JNbC%#Em?B(h} z+F-toi;S+GWBiSJy)imaC6kWXn--0n9^>z{vPc7D(7N$bTZ z!gl?aN2^u&O!lx$R1_r{tc8$b21MId+OK=mYl2DL*Y?Q;(77Y_;s7RWfE$kKMAt{D8MyI6F zID;JHB(f>5t+DKnZMaAO=>Uj6&!<&pRjOepEEW2em$?||@qlF5a9)TlETX#!tm@m= z8!g|#nFIk4dQ7!GY9yN2KkJ>FtFTmYz9xyydYVG3}T&1 zwpJ4fG6a{rcM3zpgQuShQN0PaDsJM6f=-xk-9Ew!!|G35x7<=biJw%gzT{qT`5)Z> zz~4^a|7BeEj}-ys?*KFn)Fh*f%|-RuZV@9yhZY~0BHvtC+k5p<9&<&WgDtG@+F=Za zH?z3Tt;fz1tlJc|&SVbEF(s9nEVs;uakP3RSgy>)I)ApUWMmWEU1~DNv%L@^5xV zSgTsi|g79U2BS!6sqS|SltNt^BS3j{^FSe*Gs&pPX^}o zL*wJ8zj%Dj@-W!d-S7XEdMV#I4~AcdT&hz*#CEt5Z6v(HSO{@9bHf|T%0hyeklE@r zOSL=ZV?P&SY~mfNAZ^Ct%V0%#JaWclH!0DG%@ZhX#!|P!2WrJ+g9W#U#VqgkYKP)! zp`G4lJj%8cU>8e^2qNDLse%n*J$&tW7pd}|T8P>L(cbjk_nq`2mNgHI_)mly*F13` z8pZi&)S-F^3zqF$mE%g^5O(78OXQQ;_7uHG%1dASqjxBh7Qu^qVWBJ?Ic3JcN@xxC zr1lGv*WOw55Tt@oL&TPn*}D4#WGx~-I9GDh#6Q1z_a!5F*Ad;3@KJA)lk#0mABXQZ zoQ;{9)-@)wceE9`UMiCj8kpB9WF*4a2_u4zj4UI-&i1z#0zx6N#_lnCbPLezb1Vk! zvg6HbWHCP1)|2igc{Z)nqYk4*mvET_N6R{)TGL<}7QR(j$e`8Emck?#I zMY-u`tuPdnxuG^KAk()XV=|J@)vOgJ?XHCwFU?A4zmn%=jYM+Vv zAOSMGvhsakrl&(|T~QB@-`c}328-N5{XdaJT+_7QBM)cy9?pjW#0_a?>&M@vZ7X=9_eMu!cRg7Jbr^4}0)yYP zIcnRweIHu62cU-9y_7-X=R#9Lu8&>COX2eP3);muX^*{pgNv-eqWZZc-#lY*#1T_s zEERdRgYBPLfWS052JLsj=CzGI1d^4hsnQeBM!T$ctP;TI()TA)ZUNWqisx!Wk(uUc z1~kZB9|MZqy!NqlIAz0~^s`(VNl&}G;*7ZwaA$jc^C`{3K0X&7wteiuTQR`J#PAi! zFi~v`sHc*trInh@_JE%=}p2x0U6Ryhxm^{or;h8A(*nVVkcp5GhgsJq68*&j_n{9iTh^;pq+Vhuv+coJt>HXl zSVSZf03)GbA~1LX3oKA~!E1*!&iv_3Tl0R+PXo^Li(X&-@)8brgs!sx*e7P7H1YSIg7FLiB!M%`d7XWNtP+DFa#p zRqSx!G)g_^FCrp)Tn|N+^rrTk>L=v|GZMl(pP1o?` zv4I{wzrM!_{ErljSB{$?3@L#!B*Dx{DM;95sC7yr!v+4!|;i?xToW7=+G@b zRONsxk#IVF1UYJ2XdGoxO`Bn*-w6~t`xO_!`Tu1Cc*q;6#ITn`7P;5z=M6TKNsSS_7Op_pkx*-m10MO1|+akI(qQ%vSNMb!|N&{$KA-uv`N; z3k;=|lyIhyZ${IvUb;|Slns6Sng_4S(e8-8(znUNTCM&I*ONgYbMzSAxj3TTN=0oc zhARtiYr+0~<0c?3&~-jf59y(F@53YIy3T(U9yDUa2)!9@{aa1;rUVd8iy$wxmoUFf zn=Il~-sr!`ldySq*#82U7KuS%+Y$rV2Ck5`K{{q|yZ*}{@irKLSn~ql68OZK@X3ce z;%0*1!$Wsc5tNa>JbT?p9fWG;FZuInR9$QXx2VZp5l%8N&;*2z7j9uTvCad_c>%Z* zO*oL@0|%y|xU5X?OPM{H`;G_joGP?LYGd#K0tUHs)B07^m$m<}|1W`g`NLUs>q~e!egGTWN!o zGB0n*0NC>g>JZqV_eGS*qdL+eMT5fQYr39e`6~1cPge1dc;L`Ats|qpY-(w?=*S(Q zM>hQcWXuiqO)_xS18#3tstg7ioAzC~;JbgJd-S>{t3^b!#CSxe+5V@zS}(@h2%;}} zAEjb*M--JOB3A64D7xbqHLatfzH9-N$wBU-1*jfngl2Qk%`0&HXXW_UJLAeBX)e+A|eOcI6B(nWw-0*A9@_XDq!Y*(DQ%t&S( z{m0rlSAolvV7OM=jipX>t>+<&0I*Xq@4=hVDM4UVKGU9U&wz?F^W z8;`ikmEskzUn%9IC8%NNJN+gEYR`PnMONy=JL=82*u_g2E(5wYDvS3su6%avxA0G1u(!nhO5f4KU z8(yug>!GI)MA?8C57?rF2H<2JaL=^43h2gKgY>Ii^fE%2KknTK?f_3-Bt#R;(()Fl z7u{TgOcu4dF=hUT0?sy1KDb%NS3NeQK0|jkfpkI6=-rNLRwBv80?r|xnz(XyJHAbO zEb%zV%s0EIo}%zYMFm}gO9W9eH{z6vTkSJF^_)e=M|rAR(Dtdfcis9ecS00EXJ(j( z85aDv=Kt&IJHeD*D?SV@w|`qo*eJo(0BZU-v|Jdm`L!)9I*2f}xUG`{A5@ym!?Tr> zkwy)~XFp^uS8!3yqTjY#VEadydLvET12H*4?a!M(vRFMZ#o&Mo^Vd5-mb2NzvWZcw zRCK&M>eZHilYdbkJH=Jr4p?z*LemL*KYlGFJwr7kVp!9 z9|O4YO%6&n;Kmwld0*p^XxPSsW|X9?+HZCKScVf=_*9*D7L2v8ZE7e5KgwgQ;IDd5 z9An%%3&Q8WLGBVFCGx}8e7?;LPX>=y2ZJ8vkto1$)_XsInXjo+A6K1ACPCV*-6dAp z8iXxORPdjxpPE7j4hVG!&A6kMw$*lvg$08IqQmlmYrMFrF+Dj8|Cv}!z=xhH`O!}r z&CcVB7HFiC?#8E|p3y(}zf>aQG#(%yDFB#n}>d33N=EBrcC~kB2O08z5}WX6#du;neQp_y)qN|a`G1@2`_TQSxTqUy91>vJa60If*s>D zRSbw`m?DNuHmRjd8(jkisb4I zry6MF&g^aA#*mnyCA=swV7ag?7jZXWhzpRqyo&=g>t8GDQl(*eo9}w4s;_ZWt~rp^ zD%y%OgT5ud>TcU)A)~bK6Vg_K5RJ`?MKf~<5+L~t2uGxU_Uf1QC9N^rg9vnrAH@## z6#56EAk$kGPkCkhiX?Nljk^?hMb_|EV2I$}{yR*12VsqV@g7F^1J4s#Ci2?_`Dwck zNWv)~zd&mVv{?c2d+Q0?^UBy&J?I9kmK`J{YM7+8w}fSVF9m5##no7 z4x|swg5Fi_H^OTB!991~4?doRaFNH##FiLfRAZ~Vz&VL~{kaeUU!LA9j~#2UG3zV5 zL4C72`HVy%2H5Fd2=wSqu&2~A55pqXX6xxp#jp-^8`Qa}YUElnkoPh`)jx1=$*;TP zK%hI~*Q{NAb%+7sCKUj2lIt^4NuDewgR)5^nEgNM6_rgvo2Og+(xqE&6qHd%w2v*q zy1e2is5%hH%pL7npEDnqa@_vTV!^tfl=K!A^xkk2{NBo7#SppY8PwTT;BVjBDn+Bt z6nd$ctS`cLGu<1o=1gY4Okx<^=iE`}1p+P^4$Xgca+jhyGQQow>S!lL_@_HWwZkKo z-*gWs0V>GeQnwBFW~CB{2Kk|LY_|gh=|v0MiEK-Y_z~a_X*$3s5@0tIeCSc;3-VgV z7H9JZ7H4H?ETn-?L5v2r_U~^3J`<3;SCSrP*zz~g=eaKF>s8f$b401N1f@2$0=BTB zdZbj*AAKT{lm-0Q4jjn3VL7wPI<>=a%_zgkr2S3?L|lTe)p;_@%I^(3g}wW3(}II* zHk*@xM(&_BT-bqD_u`E4_3_)ApF#j|55D}SBJ%SkhFHc5?vge?ooNxJd?kwm2#nzI z95+}J8y-crkLhZQ%^d}BL{=tlA;*az9Ge>(Cxc1<37kfJcn6(lbCS@=ziZcj7SJaD zq=pDwNO;X%|ER!k#LwV}03-MWiM?>%Vmp|}C76{Q%-@sB@3;qid_BRqa1{}7*c$+^n_z^R`RLAman%lG zwOpxk7|mKF&t*LXuz9d}S#LVEU%33Vd%>VjTK{KKKMWN2mFG!6Gr5-F>pP43dOVYg z7Ni(^a2;;ZI(yPOzsK16I_XNcH2*Zqv<&>g=OPDvctQ%a$p@=$?plBeT>9me8_HMGh6xo?wTNSO$HD*OTG?tW@W7ZvmWqB zz|5x@YU|uCWqYll~N*=?odPk+^IVRr{EdMgpB939<$9^$+ zpIcN~$TVCbH{y=NXg`~yk47&0?>PX_9Q%0V=(^v*zKBVvf$#Ee*=!D+ys=XK<+=X? zydxbcjCU4HwR&#I2*Px)JnJ87wkOyjj@Jarfm&l9(irfI^bfO|5W*khffQQs8u^+q z0iQ5|#~a}40KFg%8dx@~RbC*m=BrA^mVB}NzXmIH(1 z940h53sgvg_ennsd6G8wsJXhh8__ntK^{)+O&E_l;D)*#&j)_r-{$5rcZTgEsEB_N z9N1QCiOsHs4@RKSOOdptPkd%pdjORhHQmVO&UZ1ARs_EaM>3mZj7H9~@XwaL^sE`4 z^uZ|5Aw5wu_A~Zb*@p&jZUy5JG9f0GYbBV={?of?jaI$N8;I=Jwrq=OhW;Z2C*bj%wAH!-|q`C5;!m;RI@=7$z(SEQ z9@@56;RiH;shm-Vq?YCPw`2uEt@?Lo75M4dczDb}h|JZ*P)ed^_da*WQ+#(@_Y+xq zazXdGcG6(CJLhi=@=%{7f?%&wL#z~un%kqYP)s%e5CQt&FVlY#L04U8LrM;;0*(8a zxVCCj84>pWw-rpDbk?M{gv&2zXWSD#@S3*r_9Lt=|PfwzmCZOw=+}MP}C)X*BRu`ez%MTo8-b0T+D2@t;2YZ8JjvtCTfxQxLuS z0#?lv&`Fu+m_UBC1GeD$ntNVBJ+Qp?(4Wzu1D|ui^19iZ-cr5Vk=4M@n%;nv2aL9(yz^m1h#W5^ z_ zr_G*CP5^-EMfXnd2Y29MjXxiN(9^$kuXnlQMHYdoyi z6fi|`5yz@@-qL)>RDi7W7Lzz*PwBK4s*112k7)+@ou zlaW-UBXeoj(+SXuBQwweNwP{-QI)!>*~ru#Sb5;op1#RDs6SjHWEE@0;U9Z?_A3}? z<~~hIN36ley4`^(W*EG2K}4OD=X?VYBU@+Dx4Cjc*x76|b$+;ris`#fW z3+vDXJTX15<<*+_)+P9z#m@E6yW{LnSQ{UcfL|1tWrRGKWA=LkxOvOOg&S zg@uiQ=8qLdox=SS@?nNL|A%e(DCUFQ39cy_EkLPlWfC!8AIX3Irips)`E z_JThFDb62&zb2qq3J5C{`VBnK)37JS?i(Bopz$gQUT>z#9`XS9PGwn*n!%UyRG912V4*Wc&J3I9?5U)(0a zJPk~Y6)oJB%VT34a2J-K_WAq2yRhzpWW3_wZz6&TvofzniP9fe)`7F|rF!g6;)cP> z4hK-*VLkzYpEjSbF>EXTfgAGTSu*@nWckSJtwdMv3ax4Q9u}}@PoGrFx&&F1yC1ln z$dZ%)5dW8fRtvwi#-tDexA94Yd<=k*%NTx{7py2HHxLLz0f=U;*&xSkwJ!W+imKovfXCxBwc_Q>e&uz!*_f^w~zQo z&CtZ;Za%=GA11RoSZL&0G_6q!x88hGxpL9)&V|kzF{W8%YGCcLtUs+mn#~T{1s9xR z0%j%(-N3k*cES9jwiMbs|M@Gxtq?uG_XwTqs5}mK6gaMuD*PW9Y1QSJOJeYDIu2ez z5d&Hbg!omIKFYpA_M#@gGA>=vu*~n=1FkV_ghIx^H}|B>> zJd0n*l{hE8gc3tnzD_1PyqcH_l5lkbGuG1i4O7~9{w^6#GV+Q*gz;Moo;?f%|M~t; z!>l9wBOMs#3LzMpm{g3EGaK=B+G7>RL4R+n8yIHNKl*={0}KPCNx0g8=T3gDxuLG^ z);baRdN&A^*?k4H2%hny5+VPqu?-Iv^e5$ApUypx0oDSxS~L@pJVoVTcm$3zg? z>s@lLk7Zzx+L*pp4}b@5D6yNz_K`zu04Q|;54lT`82ET6iQ8oGrXzMO0vt`C`ou-t zS`$V-9OvE^H~9iS^4Kk%%^H@?i29d2%_$Pjt6P#WwliL9%tvUj*fMzbw~>2_WW$fc z|KZM-ypKDMH2ME@w1+<6*sN-S!#7_>P^uVAGcm$*G4*os;1@m)^bQlJzn+A?MDK;` zZQd}IVv8}@Har#_6bhbP3}heRqu}fLhAr_-ZjY?#F8Zm$2y9Wza!B13TVck6pO7y+ z4BQg_3rj%^DcsnGYidSW`+nT%hR@2CV^iJsg?TE6GfE@y8PmOYohR-%3rqU?JegBUUQjAivq7hHOxS;g$z>Z(8C5;xJWg0D6flrF#80II;P{`@h=m`Q#>C5NDW!C#Pn(fQl?jTse88U(hJFI@d~ zFe7&=OV+NLKnL^bf}M0ADM0n++>#Fj2bc=>$eBzOV{h|qmDRz6YJ&>E!~|#bJHsrX z-+gEO!m<_2kM~BP@P?q}x`>|TE!{+dN-!h7g$VEENW!cq!ZSsK1h((rBlnx~GPPMx zkr}?c-lkphwPrERLIy)@T<{Q^f$lR zNWvsZuw}7LYR%XAKj6?PjY#F!YCzjyJ}!aVWFLjn*FEjbm2C;rnZ+~@86NxUG3e}? zTZLx{;chpt);hIK0t-8rj;T<`9S|0Wyvcj`VR{>U1MV-D0j}`XE%{(~oV!iMb``ZY z2uzYd*h`~s$^?IRtGjdU<|)0Py@d*$a>jQgwRS(nab~;j-)mR9v`aP{`j)*zl9~sT z96cygBydGHNe^kn_(5Z+fDWaYIsCC&9sxSSCwPp$8`iI{<Y3mus-6%%V}Y)p(AD$V*3pTi(h84iZ7+;Q{{9)i0&y6Mhcn3e5i~E!PFuduP~P+4@FGt z6)IBy&NnXQmiXY9!lMJNk*O!JZ}_iCOCYNLhQr_V=zm-=LPr2|TB4)5D z`Lpm}ax3;aGJ715pC9aKnYF>hi7ZVrC^%>Yi3y;R<6l^`e>9uB)lqFCR_GU2^#uj) zX(W}-WRJ^a#9gw|VtnJpBoT#qqvBMXvMV+=GEj!($cse{j`4{#$8Yoq`BBZ#4r#c- ze*#wLSDn#oCt$jB#o0&ZI1zs2j%&GY577NyJ%!01bdLu{wR6Q@+axL~3bPBhg>T|k z;-sQ7p?CvfNg@pc9eBv>I(bsS%}5~glKJ-KzzT{(#t8$*Iqc=PtUQdf1XGZ$BC0cA zJSz-qlDwe7%zEKSs$$EwuOY{^G?)fd^d=`gAl6)`#}`wJigSLG2=jjF#}iq=(t@sU zgGWZ*Lu|EEmarphxM6BR>lXGRNbdTiqd#)k7%&Wbz4JnGF#>>!h;M;ezoUREdDQ4Q z-)TXxVK)&^Y;@ZaI?mScVIwxf>4<;VJ>cPg{qH%Zr>RZAGa=pkFu*gH&SsCxX2e}K z@h*$2J?IHO$)+KkT2Xdwh@^ZL)ITt@)uGji2;z1eT>RObJyi1h8npG-F*Ox?;*d@8 zT?yWhri$GC;q(-%1_Sx}0JV&LFCVe8#o$^-|MSGKi+?$DZW{B*uwTgxEm+>zh^xDnzFsH1HwEz9D4LRlSg zG$m}uBDjsQ7;W2MtyhB}^i0>ReeyDN0^LEN*b?dx0`}FNcZf4^%YYkuZ-_yKL1Y|B zvtToSUShLuW*@p6(^xa;G|7Z_r`i4L?47%)61bic?x@*)S-CzH49`Z25;V|n-zjCV z>KEkLp`hYWz+nk|@A~ZPodJSksxd4|i#bU$LjQSI0Z?MJ}( zu}*HL!FBuj?X!Yp?zk6P*@qmC_i9eU1LI}m1)wi6o4aUGN>ij0Vf1{J8u`+PF1p8Q z&CAPlL!+3dlGZdo_6$D659%k@(;G;J+GiHNUPK+QU3gyOW}LxSAueS?YOylUTA#B$ z;q-o7844$!R&$0P`5Km#IFu!=b@4nVvQo7v&r8{}7H|pXd6~D{*kw@Gtr1m3Db6FO zNNd^E#p~4`&RZiJw|u`UduFFPPw;qQ`drnojiA{{dtT%)^82nJhb0Ci0j3GAxIzOR zijQ()kHjgQM5Kw!sVM!+%Z){fb&E3AH~leBF^zveuX$oU>!0WS^2Xl9c_q&2)%a30 zoi{;ll+r8urR=186<=(e&Y9vhA@%a<3iF(5wH%!u%D2mmDX{$oH=!z8#^7{nPF++Ld z)EvxI%sGo@cl@Lih}t`MpUXezIP`H4_FS`!tTnNQpzz!chDVU={WP_zn8WBJl=~{= zde)1v;f61=xq9-eyMIh%Q^eOiHW8w2hga?{bhxPSqbfeW;?9ZUsN;z|K?Y5>k_Xln z2(>q>gAiOF`>&L2e5vd{NZMb!l~l#qq^<@>c({Tzj1!#*%X9Yt<)?)EY|# zYuWXqvvzQJpbEmXXUNdal6R-`WXdK7t(7+76lZkb?jjejt?r?W!MDh^Kx3(RLa(S( zBP^LxQ8#x;{q!sGuL3n$8^v;p?(UU&g1MMp9`ENJeD+$a3<8Z1)Zmq44dKN1kE4gO zFUX78J1vHW+lo$#r8CvOA54dwHyRHy2lpa|H*91#{yQ9!0Hd z*Y_D!_3OvMcU{gNY)|dNDCeTKs=W+FcSQs4YWtSK%bKkTl{{U`DLE=8bXmyt%D0*} z2*TT{trOo{8_PfZ-m#=1$|SJ=L#xW%iJG*xhN3?-4&42pJl7u=DVY?F=;XC328Z0{ z)Xm*G9N;}ZNbl{*dxZjD%4QCgxa4yCI?p;uxUTK!=ZsgN!XEu_~_Q4`?NOVG$pkggNhJ{OaM*OtUwbK9Bw2UsIAj z`@PW*gZp~gavaM6TKD2VN7gVJusd2hGcdwDtIa9)MFI9XNoAlJ~5;*#a)?BJaiaG0oD zmra86&nT(WI6HEJ;%kOuKMajz?JKSo3~6UIOZ$fqfcSlgJ>4^?d8r-7Pw|>io3Mf? zbZC|O1RV`}q<5R$ws}HDQ;9y{1Sx3m+BjaYPRMdG&&sOjnUGC_#xMW){{Ld!8CsFx z!lz`;fbp?}^dRHdKxTRl{h#Fv@Oh#XK9I+S)O)fb9cIZzW1YoTRtbt(^%jv!6byn1 zYZ5U|G4}-P2gn3+{zkaGuBYF3PEX`#rF2Y0t!@E~+t{C4@s)t+Efx4t}0$X zdi3Jezd#e*beWvV)%j5ARlI!{8{%)sqVid!M3vK|`dc>kNRS})i2)jf^CKPcXixNE z|MuLehk4|6z#5(9$|b23rv}oPF^u%_*oe>Sy9@x%#lfsp*abkz#jIU#>2dWm3WVyF^96!Ldwy}CPfX2% zTW$qzd1YydQcrHHz(VDnou^;EzP6{cxrC!;F?3RE;*ryBwW0Pb@S}f<4;l=Nf_`aM zk)YHNaUwxDst59TP%Q=n#i@mT$IgTbO)4U|he`KyDtbRwM}EGs<>kjuh8THWykJf$ z!-$}QmPJ7?{=1X_my7dEvdly8j)$p{Mhi8FzV#MC*;)WBbE`HOs32F4l~vYty}>Rc zJ%w}LdWVX5Y=riY$)o0}{j5GJp^=$|;GDd2oEi=9i(4_ zhLX>QtAvjVdT_W&i>nJ!PP{glZCaEsdY>2+k5jpFKWxTR&4XjmW{Gv#!k?cOX( znsZs(TUZkhIudqZ%XYYLi3ZiCY~&C^u673VZG6MxH23MS#&Ls<94gpSHHpo#$gnV+ zAYD1y@&DjrmvJ0lFIQDo^rC-@H>0(M&nEGP_qpxlMi(1@Dg<-F`zw&(v`3Z7Qg0B~ z9n0qutki>pJs;OZThdDwX-pOopD=0Y7f`=dLE#I0^tls)T@-Y&7}v+6#P6d>UT*LS8)UKx5Kb33AH<12T2jQ?L@-=4%<;H64q0GF3|>quL%KP)InXdm95sIyB#Fpq=9l$?F0 zr3kB{Zurnb=SGiGYubdIR9~I3@nb1B>9fse-~G?T7jHmMD!K{7JZ?T-0l=xql;J4*xpXcX3$FJcc_qa z=as&3T_EFcIE??^u)x-v>$0|^qv_*{Xyisfwf zqi3R($d|%lCEdELq$gXFJjb)Ps;EBweEby)ygwo7tiPkMX?>KWOtX- zlv3fU!Dmj1ZZ=+62vA|_Mh-FbL}}F6WdEV)u@@k0$^|PO#R0x#Sr)DBQj#O~m#_X_ z5Xi`O=dgpE1aXz)FDBHF<8RyEQDod)^ zvOle?k0Ntmh1WdY3;}B<%e6=H@rmwma8z-?@;SE8N`N(mO67Lp_it|!KHRjYV*@xg z@HWjWG%UaCdik5@aW!i6F&v@4lJvi^c_Y~^adqe&CQR4$!^P}HQOiMqo@TDCaXgcv ziBUEI$k;cxyIYuE)6p`*SRafLkB!^@A%56Av7gmIWoP9Uz((u+!;0HR_~H;c|T3Wbw&PjoHEOS=g>Cknb{vfhs=GYi%NWcNRQOdf>c>~f(! zlISG74DSiHP~CHGM@=nO@wEabp7bwycw6UBJ4V&kDtaps{BICr%>4f1A?D^bS6F0II~ zHH(QQN%-9TOiCds2y*WIR;7a8_~EX`QV}c{6$yDNwBzgf-ELHCHg?8^iR z&9yoR-*$Rni3&lu!YYvKQ-eJf)5v{ikEDD2Kp?LrT1$81p|kCZSxf!qrI@)_OexlWRixZ=vkbi2T8n;Ngd~)>4C*TFe=&sYkc;X8yOJqRT>hA}_q(X3ze}bEqTtKNEWd@}UyBAR z*;o+fM=5;{+X?xHQGaK2y)Q)Ifn?eocx>$U4{5{p8FRcoMxl|qcGR3nQlhCLGF6Gu`V0V7>_?i_`nVV^Q+uxpEg?YR z{H&^c5Okv}XQIPV>J%|3JAj!BrjrMQF$&Kn+tNMutm$&i3yH9ovqFz)FT9^7Fjm4% zo_PA+6MUiImB+$ovqzaNwu`8EPc5mz{eqrt$dW-gS;Bitwl5}h9eW&X{Dwy9X1kN( z8MG*}h#DudkqEF@e_j_z{Tr!Y~Y@;*~Rr{9&Qq!@>(^2ojBcZQ>@` zDM!81=~b&IKRF3%%(vpyf#m3-H>`ArAl*Q++vZKGOl+&$*B2}UlN7))+=|{Vzek5M zIa*}?m55=vD)czBSYbK8Pc!)~r*-rTaoC|D4z<(iw{e^%x8`Tq5AK^_ks?A*GB)l) zP+{`F{Ml;XUF2X-<6jRlCi_!Q3bJnLH{A1-YxR{I&9qYZ6;C1Y{kpH9c%$?#deuUy|4?$_;o2Zil~w zsmWlAnRX>0iwWHewBj0EBh6`w>6i%87mbPcm^rB`vmsO9<~;D}qJSU?3X+_A5On1= zQ^kU9Txm#<6vm}|E75w(qXaMZCgsD0fL<*ac-EP%pd0bYb9iDYCfR*_Z2pAX#(8*V zI({8y#yjpC7fb!ebggBk=On+CZQM-AHT_I|H&hkIzD%p`0s}ck#o;>RHTRPShyCVv z-R~Hx1T?;0fgTwR+ma(dI75gi48s)$hOJ0JHBWj}!EwuWe1p-uSE!WPo6>$GKAH|+E zx>6LgrHow9$ZS1XbiR22QBJr$T}cnC^Ug|SNT?k6JDyxIOrd(B?F~6J^k=H;yWQ2@ z@r?q&VyPoBT!SF%1Q+X0v@#2txt(%wwVElMsIry@IzFK zTepje({O6rr80?mOJ$|NCgDdb&jUTX$)?&GFJtgr#3VUjCor~xmg9OYLc=PAdY-~B z3oy^5prsU~bOq*5M(}=928gD>?Mfg`3zJGq;mnBEw^lwU4MXY_EjM3nn!;R}zXIi2 zu&PQx(9PmsuGLOKV!MuZF7eUY?m(#&&<}=jJv=HYB;b6Tnt98=;k$iCKd+Ap9G?}6 zx6VYu;N-=+a$Vm}jc#%2hBLMJXTjf+4zYG+f$((*SgqM6% z)o&gL3kn$SZmfz_?g)Y0py*`}K8X-k`KH#m8a50~hK7}~VAUHA7465eLCbrY3G0&G z6WJk&-L|hyipF#<6&MZOGp?iJwfX8G;OzB-jMFpBhx6_||K#omE`nU;6M&cR{vVIU zK&c0=RGlujhVCCR7kg6)%a}bzR%#ceUn|IGB(Q=(H0W&=3E2`h@S{&wRw@&~Vu=5> zS86K{41N?D2lVvR=|2C*YD0>9n>|Z&uUuY<_WzF)fJQuG!r;H-GxJYl#g&tjjDPAR zC+l=2=Z1J=!X^lpFEw1Ky@tN%{g_vhJJr%D#(-Rj_f!W{5{Eyk?#jbzqDyK8wk*0# z*c}{(QeMkP7VAY4((*u1NNAZ1_T+&l(<>U&%kxbc_eo36nJ+B-y!7b*QU1`#^&GH= zl*9K52ycg^9`=LNwXZ(XB?(T~G_k{pCLQTVKnAMIz68g*BTO_r70c{jr+2^;Ma{0Y z#wb z^}LaLZDO6-oZ7ZaS%3)uDTfDpn&FP5Uv{21TsQ&T zLI8XY*C^n;JH$DEWdR^U>hz-*%EfHGsVhbb>6{#tN+Ngv;Z+Fo_*VnVMMm9ZaOSCz z`~~&_gvp9a1F>VQO2-ZyC&7&cSJpZjAmmu{tOwrP?e?iXToMTC0YXk8jM>sc=NUGY zZ_L>`-R)j$3QxHUWI2ktw=A^~%4KOeKB0#Fv(loxk(w*Vru4iSPR`V4Y%zhL);?Oe zWoMXe>5;_dZtUIuyr;anOQD--6r`ctDeyZDkbqvwPR00`4KO8nK_4fPvvT8(e$XwC zvTr29cJ7PSN)--ZKykyr49?cK31fLl&FhkqirgowO)&cUsK^ZWQ7;vmr`yOeuHtvP z+{!u#2|kBiG*n3CkRu4-m+|!1YTJUfT1Yws5ju$qK7G~4cW3FEXaNWrXE_#jL;TXK z`(Kg_P8f?2V7qYT!})>6;49Xc7vei-(kcI+G>0fr81BOeTBpEsEGuK<4SdZC@HI;1 z>52tDRpSA)w@AsiTH`VrfJ$TannRR9k~7BjacOUt<+2a)%!BPQ_&khA4iyC0&Rm*Rz3}@q8*(O0 z!(vJL*$PpE&GwGAC`sf$_o-qbav5Vz-}E|H`u4bt~@p~SiAIxOY=mcKZ6ok zvmJP0u+8-d!w2w|>@~kz$=zy2?NCvVX$%fJY$j&nP2?}ZY~WXlfO%@NW<+Ri)aX^0 zoc$x+$;Gap@#5flB==NG zt?iJ5EZD)`;?dEn*F9}8maJD+SAL(!uD>^#{i91Cw9%C^A_)egJLulpzwPMbf65}t zCab*KGl;>*OAPoM`tg0D6&GOioBpwT*rHoIGC>_TOg{1>_b8WG$}tBtZ2$a3fE_ei z0EA{1z6yg0dyGtrCHMbm=nwwwgp@$03Z1XS;+ZeVwJceI`xPX9WGpurR-R65?d6NzlsQGB>HfRMw@$P{Kn&q9MCAa-fD-~P2OrH6 zJ|J7^(82T7%yn}Uw)+_<&8rH)Iug&{y{!bNogw~n>))Z@30F7K#5wwJz4tVR|4G2h= zfmJOUz$#s4WW`1e`?@^mx*7?9iqSo5lhsW9`w``J(ix3Ss|qHCBZCryARXgNPx__K zR&p~3A@0C`9~0Z@o+a>fy3bkFV!%2^w$w|&iKXnXDRPkB1Y(cE?$k*~#bxxRtWl7f zk(__vXaO+SIlA(9my+}o3R+2jf#~_GZ&3EoBl9j_s%2*qB_Kk-&<#7e2>1v_h>%4rYbSpXWoQ(1P4ASg?y?8fON!m z*GC<6*Oui)IcZ?cGE!c0>_Y&Mi$`#+2`H-SyDD(NTESprd^j^*WB_*oU6;Pkql0ZN ztYWd4k6TH`4>Sf>fwx-M zc50%F4*bhUdB?cm3K^~c+bh&8e_bNu(uZR+GI*6U?!hw4Rjl{-6c`?Q&Mq zcDbGOnu`-J@w{>h;Fam=@qR~}f$#SH^M#;ta7>b#CbH)QX7@5}6xT?eD@_iJk9{8o zg;`(;5FVZ-@Txcod$6%kaui0t#}B}={Xne+dC|V4snOGT8hid){KEMhPivQ zelV_#%8Z_s^(xF=s@>q~7_O2^6Wgh2_r2*DA-v^zBrR#98a z)U#Z^SY{7sz_HSbVj}aSVDt2n5E(0}H!@MSeGV#pY@D_>i#VXVtHVwaU|;oC>#J03 zVv@q(rah=_j8*?V+f@bLP-D#^GaHo)E6`GyQ!;Ea^kKhTJEyy$C9yCY7v5WS;mS3z zkX}Xw;cC?Ve)OtAb8j+c+L@*MgKAc?y9F!B!5DI{dB93#CN@Ufuqa_{H+fX_;suzJ zsZ`}N*_>~T#e{`&E{(NX8hE);JKcfzv9#OrU}9uUK%u%7W@<7CiczNu{irZ;Fd4cC zGJS!X()AX-;fq8ca0s;LUUD0NNXxIaSea<>gVLmUa80OAN3lTA`Wk+dGBX{ce+Kx_ z9ZGAp4Di2JZ2awsWP|pwLB~R}V>u&+Wqfq_g@BC9Sdk;`c!T**KO?EXHR~#?zRxT# zlSPta`?P(+Ew~h4P*t4)je$IYb$#i_vJX?b{T(BTVI9TGf4#9dHmjlx9bAxyVU}V4 z*VdH>LYepRXOCX{zCwFcyIG@y)Rx#yZ$%PnHAqDlHA7U$B4>^m@3xLMu}tnGEm6ee zN@ffyQgY=8qnTV|W-v44zMA*@d(;-YfBD1j`906`{e6$m_w)VC%y|W#8Y{1_2)P9o ze|n+?qE_8x5vs3tWxqQ5g8Hm?t{MDGFuwVs)9e4%YcVsf15=;4fT=IvJ0uG!%+UsQ zK&}>oULPc8=}MyrZV!ajWj?W()hxKQf&Ij%=YHu2jC$HO!e;b3wd}#gGklW_jIj)oyqm9o61rau0(TfEn1o2u3#X^gR43@Vy+WyI4+;$rZ%_$s$vDo z;dXZ_@*{J(*rKW3HJ=2r`4uAl+;i&tZ=7D$xgq2gzg=*x&k8#oWT znjp?SKhj<;+7jp7D_|6Z#mfFtb{?7}3;rjn0)Bk{)aA%6G0h6_BB^x)4ve;rLVsjV zp2NVMw->LlU#$-%is%QnZnyO9ZaNr)zk~4-awt3l%Y4y@Vpnt@{Z>}yHi6jW-AnAs zi{Q_3Wfe$89d?KiR@%K&!jC8{TZ#fhJ<4k*3eqf!D8hiZdoHo$tu17YSq%q%-*?;Q z?w50%pghvum`yjL&E~?-1F__yW7Zw5%GxpX7@>4*P1~g|u!8YTgs^IT0jOmG!s-oV zvUB1M|796OtON&4`GB(1 zt({w0x)X(CM-ZcpD2>cC_^k#~iPhuIbktX2(ZdKwe4DXg8sIp+HVAH?<2cO8xpi5z z3BcklS=BouML)Z|<-B5qZzd?r?t`g07VvGG_Yyepz1EA!e~P=t=&hV9Vxfg*UtWUN z8l8#in2Bq-+SX8)L)E_T;=;>Rj5epjq(n0pg!pz-<2fo zW6~IfARkshPy@y_fcQ_+vXSX(@)%6%v&Z{=P#Z;#+Y0sSK;wbs#~GvB9*2hq0X2%* z86e#NFnyWD28767L55P&Mvi6R(sN{R?50k5_mhIopr%IG^soB`*Zt1TT$oTM&ZRQt zTeZKUgO`9d_5egy`8SItP7@b3+-JxhGK^<4#q2naVAL>EaK!v(ROt5w6+0yqCGC}Tsq|~rj1g)?7+IDMPw&#Bg2I7S z(J$IJvz|DnCoVi?YRf0YMi|kJ3d2TLI+~Ak;7KQTM;N-mvG1n2v`=1*WhG~e5?kCG zqpV&y--nX1o3F<`kG_qgP~At^Ki(0JGDc-(`@YxiO)2uBIJeijq)~ zE=6@(49qaR~CO(H1Z`oyhR>EZPR3j@ig!U?w!#KhB21j!09+3^O7>o7sOVyt^ zYH&_rfI0Iz^1r`{bl2EKGA=dMsA^Y*E@eN|1$VHT?!s-BUJUN!Hj?HamnLUetv6v6 zvxu()EgyOTOo_Na*fI3g!ZQCwIKIli9tS%{yVa&r^^5krAASR}wlRadVr3c5?)=i~ zr@Lv<1;&kb{A7Em*rWvaGk{G|LJFHCqQDqzWSL9%wU|-vq{$Ht^(Tx!Nvk8)t;OsE=3+}K1F7G*1T(8a; z`oLR_q zp*JFDsuJ_wdy*3ik;4}nKg|>cRw>uf{+Lw^a=KDp@5YN!B@m|lQ3r%oT*Yl>Vf~($ zt4#TbR+_JpA@cY}1vO|UU>LugUKId^-&X0GQ5friXbN{~J2^af8(cq|snvPF8H({1 zN1tbjgwwvvR)d+Jg9&H^h6Rj2LNSR^&wW(k&t?MEqpT{H|88;u4@tX&_+ILQmxGK> z4Q~oFMpl~r)0JeZJC_ylP=5ZD&dl3>;D%bidu*iCav4g~FFg>?1CPMwVM= zC+!dw4(&G{DY2&bls$T&alEZ#Y~tfFCYCOTFZsf{b}+feultyx=8x`1r^yb~BZ>p; z9h0>U8)2VVf4tbN{&rsGEqW(M?zsnZN4%!4R+`^M^uNn7gY4q7Bf&{cm67LyMD15V z2|?C&W-Pm`d*0-&C(9w$yr|6GIIuaZ|L^*mc2q6AP9F z+$qP;`^Cp2-FsJbDnAeltT%hmO~0D={(|_nj%*MUI>1--ZRX6jeLAsT;*TQ-C& zDP;!tmHJ1e<$I1*?GSVnyFH%?k|HEO(tuSdT>QyX9Ph?$m7Gz_{-eN)AsJ5P4E$O8 z;vqvHrDrU=0)HS!t~kxTt8}D3sQ@zJ*Y diff --git a/docs/reference/forget.html b/docs/reference/forget.html deleted file mode 100644 index e978c766..00000000 --- a/docs/reference/forget.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - -Clear memoised cache — forget • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - - - - -
    - -
    -
    - - -
    -

    See memoise::forget for details.

    -
    - - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/index.html b/docs/reference/index.html deleted file mode 100644 index 3a3fca9c..00000000 --- a/docs/reference/index.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - - -Function reference • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    ffscrapr reference

    -

    -
    -

    FF

    -

    The main interface - these functions are designed to wrap the platform-specific methods to return generic input.

    -
    -

    ff_connect()

    -

    Connect to a League

    -

    ff_draft()

    -

    Get Draft Results

    -

    ff_draftpicks()

    -

    Get Draft Picks

    -

    ff_franchises()

    -

    Get League Franchises

    -

    ff_league()

    -

    Get League Summary

    -

    ff_playerscores()

    -

    Get Player Scoring History

    -

    ff_rosters()

    -

    Get League Rosters

    -

    ff_schedule()

    -

    Get Schedule

    -

    ff_scoring()

    -

    Get League Scoring settings

    -

    ff_standings()

    -

    Get Standings

    -

    ff_transactions()

    -

    Get League Transactions

    -

    MFL

    -

    Additional functions designed/optimized for the MFL platform.

    -
    -

    mfl_connect()

    -

    Connect to MFL League

    -

    mfl_getendpoint()

    -

    GET any MFL endpoint

    -

    mfl_players()

    -

    MFL players library

    -

    Sleeper

    -

    Additional functions designed/optimized for the Sleeper platform.

    -
    -

    sleeper_connect()

    -

    Connect to Sleeper League

    -

    DynastyProcess

    -

    Functions to interface with DynastyProcess data

    -
    -

    dp_playerids()

    -

    Import latest DynastyProcess player IDs

    -

    dp_values()

    -

    Import latest DynastyProcess values

    -

    Misc

    -

    Additional helper functions

    -
    -

    forget

    -

    Clear memoised cache

    -
    - - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/mfl_connect.html b/docs/reference/mfl_connect.html deleted file mode 100644 index a43c2820..00000000 --- a/docs/reference/mfl_connect.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - -Connect to MFL League — mfl_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and gets a login-cookie if available

    -
    - -
    mfl_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  APIKEY = NULL,
    -  user_name = NULL,
    -  password = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = 4,
    -  rate_limit_seconds = 5
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on MFL - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    league_id Numeric ID parameter for each league, typically found in the URL

    APIKEY

    APIKEY - optional - allows access to private leagues. Key is unique for each league and accessible from Developer's API page (currently assuming one league at a time)

    user_name

    MFL user_name - optional - when supplied in conjunction with a password, will attempt to retrieve authentication token

    password

    MFL password - optional - when supplied in conjunction with user_name, will attempt to retrieve authentication token

    user_agent

    A string representing the user agent to be used to identify calls - may find improved rate_limits if verified token

    rate_limit

    TRUE by default, pass FALSE to turn off rate limiting

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is 60 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    - -

    Value

    - -

    a connection object to be used with ff_* functions

    -

    See also

    - - - -

    Examples

    -
    mfl_connect(season = 2020, league_id = 54040)
    #> <MFL connection 2020_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2020 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    mfl_connect(season = 2019, league_id = 54040, rate_limit = FALSE)
    #> <MFL connection 2019_54040> -#> List of 5 -#> $ platform : chr "MFL" -#> $ season : num 2019 -#> $ league_id : chr "54040" -#> $ APIKEY : NULL -#> $ auth_cookie: NULL -#> - attr(*, "class")= chr "mfl_conn"
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/mfl_getendpoint.html b/docs/reference/mfl_getendpoint.html deleted file mode 100644 index 59ed435e..00000000 --- a/docs/reference/mfl_getendpoint.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - -GET any MFL endpoint — mfl_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Create a GET request to any MFL export endpoint.

    -
    - -
    mfl_getendpoint(conn, endpoint, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    the list object created by mfl_connect()

    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    - -

    Value

    - -

    A list object containing the query, response, and parsed content.

    -

    Details

    - -

    This function will read the connection object and automatically pass in the rate-limiting, league ID (L), authentication cookie, and/or API key (APIKEY) if configured in the connection object.

    -

    The endpoint names and HTTP parameters (i.e. argument names) are CASE SENSITIVE and should be passed in exactly as displayed on the MFL API reference page.

    -

    Check out the vignette for more details and example usage.

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/mfl_players.html b/docs/reference/mfl_players.html deleted file mode 100644 index 4591757c..00000000 --- a/docs/reference/mfl_players.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - -MFL players library — mfl_players • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    A cached table of MFL players. Will store in memory for each session! -(via memoise in zzz.R)

    -
    - -
    mfl_players(conn = NULL)
    - -

    Arguments

    - - - - - - -
    conn

    optionally, pass in a conn object generated by ff_connect to receive league-specific custom players

    - -

    Value

    - -

    a dataframe containing all ~2000+ players in the MFL database

    - -

    Examples

    -
    player_list <- mfl_players() -dplyr::sample_n(player_list, 5)
    #> # A tibble: 5 x 25 -#> player_id player_name pos age team status draft_year draft_team -#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> -#> 1 12781 Burris, Ju~ S 27 CAR NA 2016 NYJ -#> 2 13280 Williams, ~ WR 25.8 IND NA 2017 ARI -#> 3 14324 Raymond, D~ TE 25.7 PIT NA 2019 FA -#> 4 9816 Berry, Eric S 31.6 FA NA 2010 KCC -#> 5 14079 Sanders, M~ RB 23.3 PHI NA 2019 PHI -#> # ... with 17 more variables: draft_round <chr>, draft_pick <chr>, -#> # stats_global_id <chr>, stats_id <chr>, cbs_id <chr>, fleaflicker_id <chr>, -#> # sportsdata_id <chr>, rotoworld_id <chr>, rotowire_id <chr>, nfl_id <chr>, -#> # espn_id <chr>, twitter_username <chr>, college <chr>, height <chr>, -#> # weight <chr>, jersey <chr>, birthdate <date>
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/mfl_playerscores.html b/docs/reference/mfl_playerscores.html deleted file mode 100644 index a4df585e..00000000 --- a/docs/reference/mfl_playerscores.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - -MFL PlayerScores — ff_playerscores.mfl_conn • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Get weekly or full-year/YTD/avg points scored

    -
    - -
    # S3 method for mfl_conn
    -ff_playerscores(conn, season, week, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - -
    conn

    the list object created by ff_connect()

    season

    the season of interest - generally only the most recent 2-3 seasons are available

    week

    a numeric or one of YTD (year-to-date) or AVG (average to date)

    ...

    other arguments (currently unused)

    - -

    Value

    - -

    a tibble detailing historical player scores

    - -

    Examples

    -
    dlf_conn <- mfl_connect(2020,league_id = 37920) -mfl_playerscores(conn = dlf_conn, season = 2020, week = "YTD")
    #> Error in mfl_playerscores(conn = dlf_conn, season = 2020, week = "YTD"): could not find function "mfl_playerscores"
    -
    -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/pipe.html b/docs/reference/pipe.html deleted file mode 100644 index 79066822..00000000 --- a/docs/reference/pipe.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - -Pipe operator — %>% • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    See magrittr::%>% for details.

    -
    - -
    lhs %>% rhs
    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/sleeper_connect.html b/docs/reference/sleeper_connect.html deleted file mode 100644 index 31f7ffe4..00000000 --- a/docs/reference/sleeper_connect.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - -Connect to Sleeper League — sleeper_connect • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and a user ID if available.

    -
    - -
    sleeper_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  user_name = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = 100,
    -  rate_limit_seconds = 60
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on Sleeper - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID (currently assuming one league at a time)

    user_name

    Sleeper user_name - optional - attempts to get user's user ID

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is 100 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    - -

    Value

    - -

    a list that stores MFL connection objects

    - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/reference/sleeper_getendpoint.html b/docs/reference/sleeper_getendpoint.html deleted file mode 100644 index ac56b277..00000000 --- a/docs/reference/sleeper_getendpoint.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - -GET Sleeper endpoint -## NOT YET WORKING ## — sleeper_getendpoint • ffscrapr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - -
    -
    - - -
    -

    Create a GET request to any MFL export endpoint

    -
    - -
    sleeper_getendpoint(conn, endpoint, ...)
    - -

    Arguments

    - - - - - - - - - - - - - - -
    conn

    the list object created by mfl_connect()

    endpoint

    a string defining which endpoint to return from the API

    ...

    Arguments which will be passed as "argumentname = argument" in an HTTP query parameter

    - -

    Value

    - -

    the league endpoint for MFL

    -

    See also

    - - - -
    - -
    - - -
    - - -
    -

    Site built with pkgdown 1.5.1.

    -
    - -
    -
    - - - - - - - - diff --git a/docs/sitemap.xml b/docs/sitemap.xml deleted file mode 100644 index d9ee5299..00000000 --- a/docs/sitemap.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - ffscrapr.dynastyprocess.com/index.html - - - ffscrapr.dynastyprocess.com/reference/dp_playerids.html - - - ffscrapr.dynastyprocess.com/reference/dp_values.html - - - ffscrapr.dynastyprocess.com/reference/ff_connect.html - - - ffscrapr.dynastyprocess.com/reference/ff_draft.html - - - ffscrapr.dynastyprocess.com/reference/ff_draftpicks.html - - - ffscrapr.dynastyprocess.com/reference/ff_franchises.html - - - ffscrapr.dynastyprocess.com/reference/ff_league.html - - - ffscrapr.dynastyprocess.com/reference/ff_playerscores.html - - - ffscrapr.dynastyprocess.com/reference/ff_rosters.html - - - ffscrapr.dynastyprocess.com/reference/ff_schedule.html - - - ffscrapr.dynastyprocess.com/reference/ff_scoring.html - - - ffscrapr.dynastyprocess.com/reference/ff_standings.html - - - ffscrapr.dynastyprocess.com/reference/ff_transactions.html - - - ffscrapr.dynastyprocess.com/reference/forget.html - - - ffscrapr.dynastyprocess.com/reference/mfl_connect.html - - - ffscrapr.dynastyprocess.com/reference/mfl_getendpoint.html - - - ffscrapr.dynastyprocess.com/reference/mfl_players.html - - - ffscrapr.dynastyprocess.com/reference/pipe.html - - - ffscrapr.dynastyprocess.com/reference/sleeper_connect.html - - - ffscrapr.dynastyprocess.com/articles/mfl_basics.html - - - ffscrapr.dynastyprocess.com/articles/mfl_getendpoint.html - - diff --git a/pkgdown/_pkgdown.yml b/pkgdown/_pkgdown.yml index 8f0f5a18..effb2c3a 100644 --- a/pkgdown/_pkgdown.yml +++ b/pkgdown/_pkgdown.yml @@ -72,6 +72,7 @@ navbar: - text: DynastyProcess GitHub href: https://github.com/dynastyprocess + articles: - title: Getting Started navbar: Getting Started @@ -92,16 +93,15 @@ articles: navbar: "Cache" contents: - starts_with("ffscrapr_caching") -- title: Other - navbar: "Other" - contents: - - "ffscrapr_scoringhistory" + url: ffscrapr.dynastyprocess.com authors: Tan Ho: href: https://twitter.com/_TanHo + Joe Sydlowski: + href: https://twitter.com/JoeSydlowskiFF Tony ElHabr: href: https://twitter.com/TonyElHabr @@ -113,8 +113,8 @@ template: index_name: dynastyprocess opengraph: image: - src: man/figures/ffscrapr.svg - alt: "ffscrapr - an R client for fantasy football platforms" + src: man/figures/logo.svg + alt: "ffscrapr - an R package for Fantasy Football APIs" twitter: creator: "@_TanHo" site: "@DynastyProcess" From d76d885531928182665bacee092ac38f1d512967 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 08:40:10 -0400 Subject: [PATCH 24/31] remove docs subfolder and add to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index ee09efe5..1bfa32cf 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,5 @@ vignettes/*.pdf # R Environment Variables .Renviron inst/doc + +docs/ From 1232acc0c7a1210fd26ed0ea777e50ad79a25f71 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:28:45 -0400 Subject: [PATCH 25/31] update nflfastr loc --- NEWS.md | 15 +++++++++------ R/sleeper_schedule.R | 7 +++++-- dev/rebuild_test_cache.R | 27 +++++++++++++++++++++++++++ man/dot-sleeper_matchup.Rd | 4 ++-- 4 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 dev/rebuild_test_cache.R diff --git a/NEWS.md b/NEWS.md index 23248881..d5b8bd72 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,13 +1,16 @@ # ffscrapr (development version) +The main goal of v1.4.3 is to patch some minor bugs. + ## Minor changes -- `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) (v1.4.2.01) -- Added helper script in dev/ for switching between test cache versions. (v1.4.2.02) -- `ff_schedule()` for Sleeper now should extend into playoff weeks. (Fixes #289) (v1.4.2.03) -- `ff_draft()` for Sleeper now has an auction_amount column if it is an auction draft. (Fixes #291) (v1.4.2.04) -- `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. (v1.4.2.05) -- `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. (v1.4.2.06) +- `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) +- Added helper script in dev/ for switching between test cache versions. +- `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. +- Rebuilt test cache --- diff --git a/R/sleeper_schedule.R b/R/sleeper_schedule.R index a064fca7..39c0b06b 100644 --- a/R/sleeper_schedule.R +++ b/R/sleeper_schedule.R @@ -31,8 +31,11 @@ ff_schedule.sleeper_conn <- function(conn, ...) { return(matchups) } -#' individual sleeper matchup +#' Individual sleeper matchup +#' +#' #' @keywords internal +#' .sleeper_matchup <- function(week, conn, last_scored_week) { endpoint <- glue::glue("league/{conn$league_id}/matchups/{week}") @@ -57,7 +60,7 @@ ff_schedule.sleeper_conn <- function(conn, ...) { "opponent_id" = "franchise_id", "opponent_score" = "franchise_score", "matchup_id"))) %>% - dplyr::filter(!is.na(matchup_id)), + dplyr::filter(!is.na(.data$matchup_id)), by = "matchup_id" ) %>% dplyr::filter(.data$franchise_id != .data$opponent_id) %>% diff --git a/dev/rebuild_test_cache.R b/dev/rebuild_test_cache.R new file mode 100644 index 00000000..06dfc6a9 --- /dev/null +++ b/dev/rebuild_test_cache.R @@ -0,0 +1,27 @@ +# Rebuild test cache + +library(httptest) + +rebuild_test_cache <- function(cache_dir){ + + withr::with_envvar(c(MOCK_BYPASS = "true", CACHE_DIR = cache_dir),{ + + withr::with_dir( + cache_dir, + unlink(c("espn","flea","mfl","sleeper"), recursive = TRUE, force = TRUE) + ) + + httptest::start_capturing(path = cache_dir) + + on.exit(stop_capturing()) + + options(ffscrapr.cache = "none") + + testthat::test_local() + + }) +} + +cache_dir <- "/home/tan/dynastyprocess/ffscrapr-tests" +rebuild_test_cache(cache_dir) + diff --git a/man/dot-sleeper_matchup.Rd b/man/dot-sleeper_matchup.Rd index 80383329..4ab26fb8 100644 --- a/man/dot-sleeper_matchup.Rd +++ b/man/dot-sleeper_matchup.Rd @@ -2,11 +2,11 @@ % Please edit documentation in R/sleeper_schedule.R \name{.sleeper_matchup} \alias{.sleeper_matchup} -\title{individual sleeper matchup} +\title{Individual sleeper matchup} \usage{ .sleeper_matchup(week, conn, last_scored_week) } \description{ -individual sleeper matchup +Individual sleeper matchup } \keyword{internal} From 5e86dbc373e0a6bd46ba031347a5e2f6c8293633 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:29:15 -0400 Subject: [PATCH 26/31] bump desc news --- DESCRIPTION | 4 ++-- NEWS.md | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ef673707..d8d5acff 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.06 +Version: 1.4.2.07 Authors@R: c(person(given = "Tan", family = "Ho", @@ -26,7 +26,7 @@ URL: https://ffscrapr.dynastyprocess.com, https://docs.sleeper.app, https://www.fleaflicker.com/api-docs/index.html, https://www.espn.com/fantasy/, - https://www.nflfastr.com/reference/load_player_stats.html + https://nflfastr.com/reference/load_player_stats.html BugReports: https://github.com/dynastyprocess/ffscrapr/issues Depends: R (>= 3.0.0) diff --git a/NEWS.md b/NEWS.md index d5b8bd72..7c696772 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# ffscrapr (development version) +# ffscrapr 1.4.3 The main goal of v1.4.3 is to patch some minor bugs. @@ -6,11 +6,12 @@ The 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) - Added helper script in dev/ for switching between test cache versions. +- Added helper script in dev/ for rebuilding test cache. - `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. -- Rebuilt test cache +- Rebuilt test cache in ffscrapr-tests. --- From 36bc824f6b03541caf721276f14580a621d272a5 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:29:32 -0400 Subject: [PATCH 27/31] rerun cleaning --- R/1_import_dp.R | 2 +- data-raw/mismatches.csv | 1 + data/dp_name_mapping.rda | Bin 1459 -> 1482 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/R/1_import_dp.R b/R/1_import_dp.R index 78a19227..56c4b957 100644 --- a/R/1_import_dp.R +++ b/R/1_import_dp.R @@ -97,7 +97,7 @@ dp_playerids <- function() { #' #' @export -dp_cleannames <- function(player_name, lowercase = FALSE, convert_lastfirst = FALSE, use_name_database = TRUE) { +dp_cleannames <- function(player_name, lowercase = FALSE, convert_lastfirst = TRUE, use_name_database = TRUE) { checkmate::assert_character(player_name) checkmate::assert_flag(lowercase) checkmate::assert_flag(convert_lastfirst) diff --git a/data-raw/mismatches.csv b/data-raw/mismatches.csv index de16f995..42708b21 100644 --- a/data-raw/mismatches.csv +++ b/data-raw/mismatches.csv @@ -34,6 +34,7 @@ Elerson Smith,Elerson G. Smith Ezekiel Elliott,Zeke Elliott Ezekiel Turner,Zeke Turner Folorunso Fatukasi,Foley Fatukasi +Foyesade Oluokun, Foye Oluokun Gary Jennings,Gary Jennings Jr HaHa Clinton-Dix,Hasean Clinton-Dix HaHa Clinton-Dix,HaSean Clinton-Dix diff --git a/data/dp_name_mapping.rda b/data/dp_name_mapping.rda index b9a3cb39565eb6c440910f89a6b8a835b0a7d018..4f609df9ff33da4545e4a6723d9a34af6fdf4927 100644 GIT binary patch literal 1482 zcmV;*1vUCYT4*^jL0KkKSxi5H!h=fB=J2(xX6V&<2A*8X5oqXaE2?rba_12x!7!jWlS)4Kie4 z03ejn0SS;zG@d0rG|fRYX*Bc(kYFdKQ_+c`G5~@5R1iD|5A^9r2s!`=_m9VY`_}m# zGGF#Igq*X^98dax?|CoOR!YuJsJeSz=z=w6Y#jEIA~LxiexwhE1er*cDH4mVQ$Jbdaj#k%unit#g zg4+v__&>F=83b{RU1!MIwT}t8*l>n+1aoX$@$OY*`SDjAErxOvnRw~Q!>J=WaTP4A zsH!AcVE8QVS~E%SM|D`OYEqR?V1cO)Qf^)JhH56Gxw$d11xXZuNE-jg;rn3N=Ix@h zl5;7_S0-+xpkj{ZsV55`T=1eH9PD3=u9+~>o6lCcur;(2MUyosC4tOIHI}wadnLa zLTR^-cn&eN_qa&@3YgrGOpL_M{t(YSa1}gJ+(9K{T|GhSD?r_jYYU*JJA;=czB=D*csS3Qf4D(P6pC=?l+E66d>{? zD8df#=yo<(o`UCxDlu^9x`&`gGpOq6OxEU`?QtSShRt_sjX8_Tc8GBkWN;i2@gf0x zG%SSdE^5JPnb&ZzRCGnY9Y3@X~d@mqNf4m3-a@~5T|>KkF=aW)(WD0%zD=7(xA zIhumy%59Ovk=|-H1k-dpC?gTf%|Pwm7@ucR+>wdfQ?wy{mxjGMx{k`ozJ36h@>WW4a)O zY*~&&D56jjLXkv}#6&n-$g?COqh+P1_4%{iK%pwzIc6vslaha^m)c@lRx#Ki3|u!w4wpoCOLW@Er9P)jSM?wMrf!iE|u8|B&N zOXcr~?K2>G7cG(O5$P7QEI6BsaXN7G4S}ZenKZ6DI3Y3{sP&r&AS5=-LQL~_l*vfY kU83@eWgcZ9eR9`om=%+kVj6>KVR8Q#az!{$kWYcUKmC=V*8l(j literal 1459 zcmV;k1x)%vT4*^jL0KkKSsu^3B>)5Se}Mi!{y;zj5CA{_|M0*6|L_0-UahCd>H9{-oQ ze5i6layH{4DJtxuFWZ-xuF)kDRC^(GS-sF$fdvjB;A}zN`PvMaOS-Um+nIig82=_TEWJ+VKzwo-j~E2*Wy( z5<~8jAixutcTdo5a#WIuce}3R<~2j8YO2iL+z`8IPz%WAm()$17{S%|-V8pti!~ zJ|A7qJ^=a#neJsUNu`q$nm8*-pvMw>ig6^?X6BnhP}z)&!rS?9K}@9S<6)OOl`CS< z&W_mOtca9YRZBIkVj{@03{n|LbuPL!0pU&5p}2u!q%b56f1kVk;MnNxsaeT6l;tav zH&ReBM{_wR2{;otE1E59uC9*m^(6y&l$K@*95oC&&FUCSV-7b$85&_-IIbd(JJ&Qo z9SkrySez7nN=j1Bk9~YlIB8qiz-))X+`>UaQV$nua5RX7<_yx$%4=A$8@sp!yN&ac z3F2Q*IL3-`$--?@Xyknj^C5`%)Pu-}ggDF&V>6%k=cdC2qH2MC4}q}LUa>Oaw~INU z0&uZ1a7xF+pe7t#p46jU*hg6R(*%-A>6o@nsgj~5LF}lwRwgZM!&KNoE<3v5Cp12C0gmsWfSl3TbdWy(UE5s1$XDB0xbb@9`O6#AP;GhvBpvc^C zFZUH5$Jp^REx#e&h`BSj&V5b+rGtGYVm6fZ8%g81-Z?~2gUFPl2s;C~@-|qV<491-9|0`}@Gg${AW$@7pya|hn2 z@}V=2OpewSZD4q4 zFD)b&#-c6_L`pJkyt2fjn#zZ?ib&%yb6Ldp9mjc)yu0GNI@_vV&fZ}$DYF`&cu~WBbjv3;6fo4NZJ2)XS8*%G3kU&UpZXqUlyUJvwY8Ozuf;kH0FuLoma5qaFdJ87QuzU~r NyOJrwgn;&a*(g_9jXwYY From d89bbc913945ee39effa88ac85639e336362c2ab Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:40:33 -0400 Subject: [PATCH 28/31] hardcode test cache --- dev/switch_test_cache.R | 2 +- tests/testthat/setup.R | 6 +++--- tests/testthat/test-ff_scoringhistory.R | 4 ++-- vignettes/espn_basics.Rmd | 6 +++--- vignettes/espn_getendpoint.Rmd | 6 +++--- vignettes/fleaflicker_basics.Rmd | 6 +++--- vignettes/fleaflicker_getendpoint.Rmd | 6 +++--- vignettes/mfl_basics.Rmd | 6 +++--- vignettes/mfl_getendpoint.Rmd | 6 +++--- vignettes/sleeper_basics.Rmd | 6 +++--- vignettes/sleeper_getendpoint.Rmd | 6 +++--- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/dev/switch_test_cache.R b/dev/switch_test_cache.R index defc9267..cf2b2201 100644 --- a/dev/switch_test_cache.R +++ b/dev/switch_test_cache.R @@ -35,4 +35,4 @@ use_ffscrapr_tests_version <- function(version){ invisible() } -# use_ffscrapr_tests_version('1.4.2') +# use_ffscrapr_tests_version('1.4.3') diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index 6c31d7ec..be3155cc 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -15,13 +15,13 @@ skip <- FALSE if (download_mock) { tryCatch( expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip", "f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip", "f.zip") unzip("f.zip", exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main") + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3") withr::defer( - unlink(c("ffscrapr-tests-main", "f.zip"), recursive = TRUE, force = TRUE), + unlink(c("ffscrapr-tests-1.4.3", "f.zip"), recursive = TRUE, force = TRUE), testthat::teardown_env() ) }, diff --git a/tests/testthat/test-ff_scoringhistory.R b/tests/testthat/test-ff_scoringhistory.R index 2aae334c..cd2f8e1d 100644 --- a/tests/testthat/test-ff_scoringhistory.R +++ b/tests/testthat/test-ff_scoringhistory.R @@ -4,9 +4,9 @@ with_mock_api({ if (!identical(Sys.getenv("MOCK_BYPASS"), "true")) { testthat::local_mock( - nflfastr_weekly = function() readRDS("ffscrapr-tests-main/gh_nflfastr/player_stats.rds"), + nflfastr_weekly = function() readRDS("ffscrapr-tests-1.4.3/gh_nflfastr/player_stats.rds"), nflfastr_rosters = function(seasons) { - purrr::map_df(seasons, ~ readRDS(glue::glue("ffscrapr-tests-main/gh_nflfastr/roster_{.x}.rds"))) + purrr::map_df(seasons, ~ readRDS(glue::glue("ffscrapr-tests-1.4.3/gh_nflfastr/roster_{.x}.rds"))) } ) } diff --git a/vignettes/espn_basics.Rmd b/vignettes/espn_basics.Rmd index b9ac2b8e..b79fc255 100644 --- a/vignettes/espn_basics.Rmd +++ b/vignettes/espn_basics.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -160,6 +160,6 @@ In this vignette, I've used only a few functions: ff_connect, ff_league, ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/espn_getendpoint.Rmd b/vignettes/espn_getendpoint.Rmd index e6e2683d..3fa4a42b 100644 --- a/vignettes/espn_getendpoint.Rmd +++ b/vignettes/espn_getendpoint.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -155,5 +155,5 @@ Many of the API endpoints are being researched in other languages and you might ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/fleaflicker_basics.Rmd b/vignettes/fleaflicker_basics.Rmd index 6ce096c8..3561e246 100644 --- a/vignettes/fleaflicker_basics.Rmd +++ b/vignettes/fleaflicker_basics.Rmd @@ -23,10 +23,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -162,6 +162,6 @@ In this vignette, I've used only a few functions: ff_connect, ff_league, ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/fleaflicker_getendpoint.Rmd b/vignettes/fleaflicker_getendpoint.Rmd index dcaad922..4d26c48f 100644 --- a/vignettes/fleaflicker_getendpoint.Rmd +++ b/vignettes/fleaflicker_getendpoint.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -123,6 +123,6 @@ From here, you can keep unravelling - including the "viewingActualPoints" and "v ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/mfl_basics.Rmd b/vignettes/mfl_basics.Rmd index 0b8a93b7..b90e531d 100644 --- a/vignettes/mfl_basics.Rmd +++ b/vignettes/mfl_basics.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -157,6 +157,6 @@ Now that you've gotten this far, why not check out some of the other possibiliti ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/mfl_getendpoint.Rmd b/vignettes/mfl_getendpoint.Rmd index bf107eb0..458a3db7 100644 --- a/vignettes/mfl_getendpoint.Rmd +++ b/vignettes/mfl_getendpoint.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -105,5 +105,5 @@ head(fog_tradebait) ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/sleeper_basics.Rmd b/vignettes/sleeper_basics.Rmd index 5fcbdafe..2ef4c09f 100644 --- a/vignettes/sleeper_basics.Rmd +++ b/vignettes/sleeper_basics.Rmd @@ -23,10 +23,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -167,6 +167,6 @@ In this vignette, I've used ~three functions: ff_connect, ff_league, and ff_rost ```{r include = FALSE} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` diff --git a/vignettes/sleeper_getendpoint.Rmd b/vignettes/sleeper_getendpoint.Rmd index ec8b0c67..f69b6643 100644 --- a/vignettes/sleeper_getendpoint.Rmd +++ b/vignettes/sleeper_getendpoint.Rmd @@ -22,10 +22,10 @@ eval <- TRUE tryCatch(expr = { - download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/main.zip","f.zip") + download.file("https://github.com/dynastyprocess/ffscrapr-tests/archive/1.4.3.zip","f.zip") unzip('f.zip', exdir = ".") - httptest::.mockPaths(new = "ffscrapr-tests-main")}, + httptest::.mockPaths(new = "ffscrapr-tests-1.4.3")}, warning = function(e) eval <<- FALSE, error = function(e) eval <<- FALSE) @@ -95,6 +95,6 @@ There - this means something to us now! As of this writing (2020-11-10), Kalen B ```{r include = FALSE, eval = eval} httptest::stop_mocking() -unlink(c("ffscrapr-tests-main","f.zip"), recursive = TRUE, force = TRUE) +unlink(c("ffscrapr-tests-1.4.3","f.zip"), recursive = TRUE, force = TRUE) ``` From e6088a8dc5797c47277aa0c9b43539b2e13c045d Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:41:11 -0400 Subject: [PATCH 29/31] redocument --- NEWS.md | 2 +- README.Rmd | 4 ++-- README.md | 22 +++++++++++----------- cran-comments.md | 6 +++--- man/dp_cleannames.Rd | 2 +- man/ff_scoringhistory.Rd | 2 +- man/ffscrapr-package.Rd | 2 +- man/nflfastr_rosters.Rd | 2 +- man/nflfastr_weekly.Rd | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/NEWS.md b/NEWS.md index 7c696772..cffd91d2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -174,7 +174,7 @@ Here is a list of new functions available at the top level (ie for all platforms 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](https://www.nflfastr.com). +- `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](https://nflfastr.com/). - `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 "/". - Added generic and method for `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. - Added two vignettes, showing "Getting Started" as well as one for custom API calls diff --git a/README.Rmd b/README.Rmd index a241fd02..bb74977e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -53,13 +53,13 @@ Helps access various Fantasy Football APIs (currently MFL, Sleeper, Fleaflicker, ### Installation -Version 1.4.2 is now on CRAN :tada: and can be installed with: +Version 1.4.3 is now on CRAN :tada: and can be installed with: ```{r eval = FALSE} install.packages("ffscrapr") # or from GitHub release with the remotes package via: # install.packages("remotes") -remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.2") +remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.3") ``` Install the development version from GitHub with: diff --git a/README.md b/README.md index c9e92726..a1066d6a 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,13 @@ other data sources. ### Installation -Version 1.4.2 is now on CRAN :tada: and can be installed with: +Version 1.4.3 is now on CRAN :tada: and can be installed with: ``` r install.packages("ffscrapr") # or from GitHub release with the remotes package via: # install.packages("remotes") -remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.2") +remotes::install_github("dynastyprocess/ffscrapr", ref = "v1.4.3") ``` Install the development version from GitHub with: @@ -94,15 +94,15 @@ ff_rosters(ssb) # Get transactions ff_transactions(ssb) -#> # A tibble: 152 x 12 -#> timestamp type type_desc franchise_id franchise_name -#> -#> 1 2020-07-09 17:25:20 FREE_AGENT dropped 0004 Team Ice Climbers -#> 2 2020-07-09 17:25:20 FREE_AGENT dropped 0004 Team Ice Climbers -#> 3 2020-06-16 01:56:49 TAXI promoted 0014 Team Luigi -#> 4 2020-06-16 01:56:49 TAXI demoted 0014 Team Luigi -#> 5 2020-06-12 23:51:44 FREE_AGENT dropped 0010 Team Yoshi -#> # ... with 147 more rows, and 7 more variables: player_id , +#> # A tibble: 1,145 x 12 +#> timestamp type type_desc franchise_id franchise_name +#> +#> 1 2021-02-12 14:32:39 TRADE traded_away 0008 Team Bowser +#> 2 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser +#> 3 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser +#> 4 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser +#> 5 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser +#> # ... with 1,140 more rows, and 7 more variables: player_id , #> # player_name , pos , team , bbid_spent , #> # trade_partner , comments ``` diff --git a/cran-comments.md b/cran-comments.md index c6e80d1c..12ac7086 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -3,9 +3,9 @@ This release patches some bugs. ## Test environments -* local (Windows) R installation, R 4.0.5 -* ubuntu 20.04 (on GitHub Actions), R 4.0.5 -* MacOS (on GitHub Actions), R 4.0.5 +* local (Windows) R installation, R 4.1.0 +* ubuntu 20.04 (on GitHub Actions), R 4.1.0 +* MacOS (on GitHub Actions), R 4.1.0 * win-builder (devel) ## R CMD check results diff --git a/man/dp_cleannames.Rd b/man/dp_cleannames.Rd index 69935fa3..bc660895 100644 --- a/man/dp_cleannames.Rd +++ b/man/dp_cleannames.Rd @@ -7,7 +7,7 @@ dp_cleannames( player_name, lowercase = FALSE, - convert_lastfirst = FALSE, + convert_lastfirst = TRUE, use_name_database = TRUE ) } diff --git a/man/ff_scoringhistory.Rd b/man/ff_scoringhistory.Rd index a7f31bc7..3e87d7a5 100644 --- a/man/ff_scoringhistory.Rd +++ b/man/ff_scoringhistory.Rd @@ -68,5 +68,5 @@ ff_scoringhistory(conn, season = 2020) } \seealso{ -\url{https://www.nflfastr.com/reference/load_player_stats.html} +\url{https://nflfastr.com/reference/load_player_stats.html} } diff --git a/man/ffscrapr-package.Rd b/man/ffscrapr-package.Rd index ba840230..ad33d68e 100644 --- a/man/ffscrapr-package.Rd +++ b/man/ffscrapr-package.Rd @@ -20,7 +20,7 @@ Useful links: \item \url{https://docs.sleeper.app} \item \url{https://www.fleaflicker.com/api-docs/index.html} \item \url{https://www.espn.com/fantasy/} - \item \url{https://www.nflfastr.com/reference/load_player_stats.html} + \item \url{https://nflfastr.com/reference/load_player_stats.html} \item Report bugs at \url{https://github.com/dynastyprocess/ffscrapr/issues} } diff --git a/man/nflfastr_rosters.Rd b/man/nflfastr_rosters.Rd index 0fedde7a..b396ada5 100644 --- a/man/nflfastr_rosters.Rd +++ b/man/nflfastr_rosters.Rd @@ -27,5 +27,5 @@ nflfastr_rosters(seasons = 2019:2020) } \seealso{ -\url{https://www.nflfastr.com/reference/fast_scraper_roster.html} +\url{https://nflfastr.com/reference/fast_scraper_roster.html} } diff --git a/man/nflfastr_weekly.Rd b/man/nflfastr_weekly.Rd index abe3cfbf..fb4d4eec 100644 --- a/man/nflfastr_weekly.Rd +++ b/man/nflfastr_weekly.Rd @@ -30,5 +30,5 @@ nflfastr_weekly() } \seealso{ -\url{https://www.nflfastr.com/reference/load_player_stats.html} +\url{https://nflfastr.com/reference/load_player_stats.html} } From b710b31e384df252d1f6e879eb9e821693267a44 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:47:16 -0400 Subject: [PATCH 30/31] bump version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index d8d5acff..b3dd106d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: ffscrapr Title: API Client for Fantasy Football League Platforms -Version: 1.4.2.07 +Version: 1.4.3 Authors@R: c(person(given = "Tan", family = "Ho", From c128a79b1f1cdcca0881eb882504a64c481ee6c7 Mon Sep 17 00:00:00 2001 From: Tan-DeskPC Date: Sat, 12 Jun 2021 10:58:21 -0400 Subject: [PATCH 31/31] ci skip - add favicons --- pkgdown/favicon/apple-touch-icon-120x120.png | Bin 7100 -> 6969 bytes pkgdown/favicon/apple-touch-icon-152x152.png | Bin 9362 -> 9044 bytes pkgdown/favicon/apple-touch-icon-180x180.png | Bin 11245 -> 10803 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 3038 -> 2974 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 3833 -> 3785 bytes pkgdown/favicon/apple-touch-icon.png | Bin 11245 -> 10803 bytes pkgdown/favicon/favicon-16x16.png | Bin 939 -> 1018 bytes pkgdown/favicon/favicon-32x32.png | Bin 1540 -> 1700 bytes pkgdown/favicon/favicon.ico | Bin 15086 -> 15086 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png index 563cfb455a6b4b77f1a709ab811d08b3f779ac87..f74d9470ddf99289789e79419f04dd538b48e363 100644 GIT binary patch delta 6753 zcmZu$XFObAv=ueFNVL%+LjKX)C=;WHs8K^0We7q<@9pX&YV?-TqK)3k=nPRp)Tm=Z z5G4$v3vcp%@8kP=?>+mhUCz4utlcivCYj_9P|?T;_>q?^5D>5|sH-R%`Y!zb=->+b z?pKoMkzw&|`4?}0P^$~}fxhHpHwN3`#%H#>&l1=Z#TiQJ1H^QUVCuXYGgrCg8eePF zjp!3U*4bGbp}mI_#G7{wD@|4(yuWw)^Z~iv!`6^X3VIbH>Obxo;__o1@swq(Z=}8v z8~`s0RBkZ^WiV}Cb{;J?+~#e~){iFu)!sVWSD-)Bw4$}Da(3a^(X2%Fn^-C|eTriU z$)&vF!cki#oUTQ8KM(055+Zaj1VMjL$>o?v>9!crUPf2)(?Q`q2Z z1&a_$mEsE*PA{SxiYq}^LRVg;Hyqzd0|p33iLVLHxUCddSW~;xV#caJsq2JiOfvE} z(5N~T?GwopSolb6BKNk}AWn&z;Y0%iAuGh!Y$jyCdRXsv6DiwRPGbK?sH21w6oAnW zPG9EQQ=2mlbQwo5rAgg>SX8(Ctwea>#-^Knt$p<^Cl!`URs{*)IMP=VJ$0=;h)+XR zNwYh4#i!uqbf=x#xdpf=`U85O?A0x@kS@{_LO*6p)kN0t9R2vJ3!=1HL!Ob%&}BR za2L6!((kC>*%HzrOy3Cs(!e`0WQh|YmAuj{Q}bz5ZqP~w<-KP=b7V%`=Ml|wsdeQ( zugYh0$-IjWj}#s6163fR_8;H82@C)r2y zbH-KvuAiTg+|4ke=c+=q&q1`D8#$`~&hhOy`=(Quz+ zUgHOlJ!XqWmyM;c5lx5KW0ssu{t@_ii>@lCJyqRinS6zUG~y|(MefRJAuOM#@JMI! zr|0N><4D;ju(puL@Taps);&WRUXnF<1_y^kL)~mC7k>FvsD8!D`5qWyyYg|?6H@ZK z7%A|{3@h6o9AI6=yl5;$=fSfB-IZyPJ!uc=MaaWb@mn#ob;suD`kmMs-ZcNmDa@hG zyjw2SwoE2Gi@cJR{o02R{*wq@QS+)eAvm89X+w?+e{;+rTv7T^R^DS1*nXxrjs2af zenj9~_hS9DhiSvyyOGIcah)!W=g8v`bnb}CXaHdZh)P@S8m5-7C}l0}^wYQAnVrKY zTdahZ9KQ|h{=II*$i*PSgXJuWIB>;Kl!rfDld+4S9rsS%s;yZ?bs`18#?%wKrH zK$GWDf7*$B4;=h))?)aw{z>RtXB&55U4@4%pV2(`P5$IcDs^Iz`N0X>vaJ(7dDC&Gy5&hAfWVdD6d|oAsnp#h^QcpI(XMEcN>A zMwAm!k;uEnQ3vKZ>kw_gxM2Fmvw=2s_R9c3Iir^@xzfBiP=K1A`+QFOOvcab|O>mT7zv9|9+HKaJ}*_{)uY%`hjs%oCf zgMr4|gEo@Fr8BReSNRywh<6upe!*HyhOCK(1G%7*uYIv80|{C^FXm5QI)(^h4M(xo zhMSsiN#rt`HI8#e9G{UAEm6FY6(hOO9TO{m{^cnYxbpMMc=hCimT?-Ilby1iveM*W4a28;hpXz9;k|ECva}k?lD_)N z8I~l2u%Y*red#(mX)mKQ`D06>A4V(m8CWaS1-w+jIR4;hy-^6FzN4@yIN7yvF9~6)!c10^Wv#&Rq#L z37SV*av<~-gjpK|QwkT%g?K6&d>s4HI#gVys!&W(%J4F}ber=>xOAp!|gMYuLMACWZDC&#P3zk<0=S*z3P!0;a7Yn^G>X z#!>rRD(lw+m;AYbFA1F^BoYR+@pT|85>0yj*JJugar8* z$rK(vNp$aDpm^_(rsl{rqQ?HshBb*lNl-pQYmR2h#R~@k2MmQDZtK(3jQ>bvKsdJr zb}p|9@7bMSgv(ac)4=!DFE!bNee6>AM`K)TG5LKt#8PvNKMD1W>!EKC7M9t%j>@`M z+bd4I>7W~%9e^dx8^;bUa&oo9;%36A)GLUs*p&OZqgiNIYmTkv<}aq4PUMTHlw7Ue ze|fh&$yjFr`H}M@rnx4cl_WWv{9bj!s;GaoVbY8BFMC8w({!^<=s_W5={$0@B}CSD zY2oU86l9R(igksRif+1#7EZB6w)thCxZ)+vlUyHe7Lh($B^CBu7!`UJTv63s9AlA7 zET4@;_Egbwx^H5j2#dBb<4)Xun`d!kdd2q(YG4L`a`Zb)Y95|tl%2O(24vb>^az3| zhnFbtd~|3Y8NAc9sa7gTTYJ{KoJ*EmExDfO zRH;bbAsJ%3aA1* z`&J(r^uZEdSN?YQb#j!IKxdBLF6SF^H_y<_Fmq)iGyndw-SQPR)yKcoB`OFuGM0H9+={Yr=Qn>=nIOOTux$&S_)a zd_OSkg#q`*GmN81?DEI)7N$&VR3%P7iWlyub7H#2Z(=SrmmKMrkshO3@mP9Gn~#-} zS>HSy98X4Tdj7rZf+nwXW*`G40D^^b1(Y}wb0+5d1Vb6bTbV{{7^vKWt52WrMqhLs z^HMjD1R2=)%~~JWL_4Iva>D>Z)z=)kZkF50TI7`OG#M#eG=tQpy$k)Uo{vI5ar>1E zj! zJHry{LufrYu3MwE50@dk8c|;o36X-O+xZ$+QR|17Rep#uNXWKYI*>vtq2_t*=9rlt z6D3LEgm98NJ5bjm};{D@C!0S<)@s!jPPlWPCl2gJU*x80lZt!pSnC-g7n zhFEHe%G{9}Sb~*Ve>e{AQ0z^s9GPQQKvlmlV|_kjBWU?-EuDJT*O~p@XGprBMgQ-a zif8?6{cCQ)S5r5GTjJUbE<^M&&xV{dy<+tfe$ET!;L~p0$2j7?m;b&@e=>wd8)v5+ zbGrRCJ1g>K6Tr4qOdgD(v-X)(@!=7(7(5x@f3=uBGkWRM@NQe-%jM5i@pX>;wLE zfZs~IZUIDM1T}o;DEj-ef@2a@juWOe)X!rRD@{`k?1%+z8*Y5fQWkreSnY71*x0oC zaH1`7zVU|)2Gh~9`rVfD%!p5A>4U(y%;*6l(ckq{xhMG1p`I7T@ZWbA%whaTIhR!_7SsTw`0RNqDB z2V|(BS9o!1zqM%R**4R&+3#zgoon*aCdDiAHo6P?oR;gep7^ZvyXC&ONXb)5;GvR> zV;TMWWV$Umx?~`+H0u0$l}w3gJ##R7fzl;lqwEU(TLkRg zy|Bs>eQi|1M0rI9ol-*L7Qa!K92fEL-wry63#)J3kWZ=qENJoeMIDdp=RKnekO00| zaVpi4V5l5&V_4acQZl?;W`s?%9Bu{J> zG=O*S^=DZ{L%nd@F3aSZu@VE?ky}Q{pU)r4IW*j5&vHFD7IGdiT_;r>66|g*@qD_P;yaF0*Zn8@V z=`qrKoX@E}xDDB#>5GO7KlMCR`V*J@A9u@+s3tAj&xWHeNNeF!jov!uANDW4&CaS0 z&U)p_cv5NS5me3P{P;yXRujc%=jx%dsbt7`hJX!ar3}9O{Fah(V|<51Zulla({o-4 z{=0KO#=oycZ?iV0f!9E3V+P^Yde5Pl@!Kfnsat0>)0$dg6e zH#@`8hXWRECfdwQpPoRZk9!+youSWqBhBR0eD?AM*@ z9l3*nsE3t%>8!Cg~o0omB}cZ{;mg2^crbJ2Ba7ZE-zM9;a-;o!>r+$VZ`aq^^Ic zF@IJx_K`|hD|9F{F@e52Bzr70jM{z1WMUlr21Q5|hvw|I`apIL$hXt-IqPh>y!+g| zXy-7dmt!!SvqVlE$B@JIWoQkawHFCUg6xxx!%Goom{To{4&?(N1dG@8!$yMx(ix7d5MINb8?~uFy*#IP-MLpZiJvo%zz8L$I_-j_w zLmX#_ykgVts{O@HEBoYJii8YE>PuX{85pxpc&EH%Z1;5wV3O)HeEg<{um-Oh?h%Dk z3>HhQlFp<$5^IO>ZxXE#cP0$aJas6mufg+^_wdi6GCdgSje1h7Dbm_u3~rA?XFKP( zZpmIUpFJ|XDv(e!{*xO%I3e!d!4*p;lyxlD*506G(~jP7TC&GJS~6B5NBMGZRZ$HPBs z3bcfW^VVOEQo7wlJ^m#zmDRY>AFFXgy!_ha zS(6B@i4#5fW3~aK6|Uar6z+`N22R-QV|?q9K}YwPx)F=I%Sfijq0p(%SgT$u%Z{NA zy#Yk9+}qn&w8Q$rs#|KE%dO@6FPDSe;tqNCM+sZ-@rVM(wd%vB z@^wm{Hz>A$a+^u;oE9Yxij6M&CcFKkHPsPs_5Wm2HQJM0c3FTo2D)-kYhOTdK0g>c zLg*`M2pMlKcwf3-h?z-X7Ji`*wymupIDy3?n=OlpPe%RcJd8=|N>{|}{e0aFZhYOO zkc%Ek6su?rBrkQ81^h`ENazo!HVY34FF$f75CmNKx@itDFBZTN^u;^m^I&JJ_H|y)A zfzX+)g*Q!#GwnT{hOy}(CQ5iO81YISVzUt9QmRB`J&u@&rFpV24=BDE zzfI1sXVcfI!LqxxkJ9a(6Pm_0ciqwvi^A7MHXZ5Z;bDV1?a7ruP^~?=Ot)TY-3{rh zq2BGQGbtwC%${!*H?V&*5Bu(I{LF(Tk_jMg472jOjI8U7eDB!HvRmAkGmdd6o0lzHj*xK3CbQz$*(;;6;@F!y z9MQ3T&-?TH_xJa`uKRl4_jO;_<8G2`l}`->C`qYko%#~YuU%ue(!Q_$*njp3~gOQ>=|N38d|{sLsfz=~ap`sn>RYvud99C$T^IuLSj^P zsMaEF_`ffoYJIJt$KDglRuWG>6je#<``B5^sLwXr#kMc9&-&Hu>nMOGfs>AE>i^?A z)NN^oWH{da9iHSHMi>`qT z^?#JK&u5jIzdx9n+^*%>wUx^M?y@Ah=^H}!!4(YoVadms*&)h5l%P%MA65pNZ|%Q1;nneGg}S@pgm{nTQo2IZBn3A{Tq~9N74svo?H>iC`MM;;W4O z*}yD}qpA7cZDtcH2vT-nT}ymo>?l>8LAv5`7#B3M)H6?dZnI>XZ^di=3mIxYWbrD} zP#~LrHWz-Ouu3urCl1)v2xgWQ*6EuxR>KZUa~Zzc(BZ{hk)3lrq|r)laRs4M#Cz)8 z#~oU8L#2{|jSg|1)k+mGx=afEM3)3vqrJy&>fQiteMtd_`Y1Fj%nW-cuEU|;G z^(&79WGyi^A+fSJcx7RWiST=+XP)vLH2f-204y%j`bY)bkvp!i8h^`jHp1tt7Ehjff)c4Hb6y~Rfg@7rQ)NSCNoJ6*(2y&MMm$BsI26@MMaNI z)6ce?IlT1_zk^Ib8&dvsy(KTl4T5ep)l={XnfCO3Gq)L2hDdU++CDoEv--P0;h8&?`{^lHrm0J&;k{-}^y~N71{yx5R5?gR zRwsH61SpAiby=tMhnNVoQ1N~>9?v>5PbK;q1_w7ny9g5HcDzr=(bt;jWdnZJS)dMP zQoY}09#Lp3PZxHY-ksmBC9bbAv9@&oxVl2f$%}`K#)>#=hao%Up}EKi;E(u?w8+4h z{gtWeEw-~t86NsPT*@2SEgJ|MA`bZ|QeW@bND|(_*lXD|6%XFrVMjen`=Sy*f#T_TlMTc8H+!WLr!=zpJ;L ztJIwrpTySdRo11H1nNxj`xp58$6^+D?7Z@Meha-+JbWP7a~U;a4^Gin7SomDk~MDJ zfmN@R8^n$TET17Ja~v1(Vx04l@Toazl!ENUBzD2bm55g`Jay0w>F7fdflk zNxgVX?Z&cA`q@4`cVbuzsZ-_+P9|rYWwGWHb|{dGAq(t?wZ_ zF3COj$7J&;771>E9veik!!U#&;Ux>P^RxocfwnbT4!46BOC=q>+9RfBTq*yZ4jZx( zbmacQKRyiNyFsyd(zJ(UXxBY{n`{yJch4xlbU!cgeNNoFZ$sKs1k6X>rf=W0MbD+8)|^i22^!5qfVN$_Vy`2_lmW)Ud4?rLU~qi>=%|N zTJT_D9tTVRy!%5#`o8S1K*DM)6Sey`g0ck+pZkJJmgb{+m)R5gtmjLu!HFh?-Gpkf z*b!wh*4xln*H^e8Om`#c?PZA+Q5&7%cb`^=mzK;TZ2O{0v(QJcgQ%F4E0r9n6!ju$ zbyKCttFILTQ5h_scXGl~K0r4Mp+7m_6OR^+vY3xIqa~>2SCh<(m&Yo`g-oK|EbVXY z<}&o7x^0uWl)`Nv+-qVaJjYv9~Z%FZbskxNLkPNAfyBud~!P z(#Hrz&48McYF6!}+bVJQk_NBLKYhP`2|qGc<#*i#qW8q&uY5W6FP-fvbZt zVe4t)!%6CTxA!1%R8Q7PIW+V0o3FZmEVvAt=n&)x;aX+Q+*0$@w}?N!O>UG=?O0-i z$#NJo$JR>k(@nXKXJ<}2TA==*Wn?!nHhIo|Cwl2mEs}t3ho1@uMA|oL6q3 zNq*Q%{YQao*x#RYR-|)p$6b#cMiy$qZI>ntyu%3+6TpoZ{8SibSz;qk~?FRYl{&SP6t8f>u47CO+M&{>bz`H9dZ7;Z)J~^J@8t#)ESI9 zatqklwt85M@xn7!@7iTMffuDd$BaBD?HeHW2XgeMF=zF_dw=4+5UKD);`*u~xoiCNc6x&xfx=H^#Z~=0c^ci$PFp zZml*rqPH#0UKaX3=$VLWFvr&^u1w71^LzKQ-D!+y$g8=fAG%}Shm{S?CJy;{qb(!(DJOs%#A8%iF1CqWcNstdJq6fu>7bW z^o*M086C&DQBd;J^3&6Hsy3+H2WCH!$eQ_KhRpb!@ybOT!`W|RI@Xob)I32qJL@om zsClu5#Sha($~jXIV3EG0Uqt*Fs}PX={Zg^5xn9yU`@6%F*gbNK!SmL&!2-y9;$pL;~AV2ngnAGL$>pSusOUp!4Hlx1 z6^*+TFR8K|+@aZp2VLGCTBIoc!EPNHPODq1YWv+4tmk{n{q;`W@uMl*!$^gVglT`?!KV-mup9ypit<==UaOMW|0F+5&SF zp+_B;V=%AhE}&MN2M(CuS-}ntx8nOk#j+TMvakcwulW=gYQ7kK{n7eLFA{bQW~u%V z*2S2&_tLrXx>EBq7GgM!iAC1)`suBUL6}|YEKml))vh%2b;SgZ&&x1 zH~K0e_Pi-7FS(yCDuX!k1v?wk9saDFCHIS3*U;fzwwAMOB>MYt1Rz(D?vEXEb**7}UZ0l{~I2UoGMRua8ed^Xzy#IuR7YJen% z0eO%Q!!qVT&XNCzIbLgxqOz!)FQuGpx;8vZH8E`9(?i)foNVh%Ug1I&LO~0`Hu19e^xIr1KQUe^zZOK^Em+HWF1&WnK3}QwGxyq7tZe2i2~a$$xDPbx zlTUYns(c+SZ12ZX(;N!*p!I0}?#pW?GNAQ|en#a5s@oi#btos+}24ZHcd zsb(@($hw_@n@(#cII`+fB1wz2oBZn%(*_Uc_$ zsYF>uQ(e!s%v1FgOJHaHF`v8gtJIH?D*BPmaU~^AF2A&o| znLx}1iQ)F0P_$E+7yMgh-i(1|kdh%{G2YR_KW}s#9HV}(n^`RuSOCI3RM z(Q~m{2P8aRCJ9dsFIoO;gi0_%!IFWIH0u;ca7vTKAfF)v-tTY_jmL*3^?L5!yI*8I z@K5!{gC={9z_p5artPA1gn47kBf*}vL6mcr)Oxsrsg5#R4; zGn?L}QGqO zhvgkCM@;9a06M?w4_DUE*pp@g-;!@ljG#0s?%-=GMHMD%kH@3miT%)q%OXx&3Nzl=gdSY0=@UZ^3Iu z(Rm}5*5_nsvLc(>6wz6j|Hf3GYNo-FY5QfiqrPrgrEdCU;2ySZIIrytf0wRXB7Vx0 zKX2$B$FmX>5PjO}v^D>&Pa9*!E}g-FQsC_DjPy3f<;aU0&KHLuNr3lxYO}H0D1FL= zxzKC`e;~B?FDI==k|FA?yU|tGYE;cU^Z<*>ijjOS@2my}9UKUJJkL~?Sf1K$CnJIQ@3_uXWGrr$L2gdm23*v0!FW-wXD1QvlEPgq4Hg0q z=~zU{W(m<+sCT?-)z;}<8kJbtG6L%bhW-CLUJDF{pSIHU-#RGI5jjh;5Tq>nCi0u5P{QSTQJ1f zgapTAq_U3s zvfKPpwJQSGNn0u+A%EpHv`d#>zE3AQSbUtaKX}M3-VzbF>KLo($R!>G3TgdaneN>R zAliw@^)9T4vj3HwMAg17G}#}3uXE$u z=WRZlbusK+8Fp%R-htq)1s9!}%*oDQEV-%u$42bK3Y`TK+ik+bU#WnB^5O4R+#s0- zrem7@drR;o8b?Ha{mzAdJq&IR2d@9Vc1h|_^_s|`;CiPOK-OU#PQf6Y z>^I3JyFcqdxV}&SyR@34M>LiEO(KE@kYlo!2@85}R+q+3dM-3oX;pYu*TE@Pk=%2* z{J~?-uthRhw1Z=Raed9n!#6+a=B}Z(1aM9u9$ca!HmE(UhcgvvU!zh2gy;u8l)7Zd zPMjmJ{m|oeH&y7s8KEs#aF-tXX}ss+1v4*B42@a5B&GM;7s(|8m%h%yW1;Lsn+z`b zn@l<(qqHUQQ|??yaU$F*Wwn;z!4ZO2+NDQdpQ%XUyk{1a`M_6@V@a$9EVNz`Xs?j#+=cF;zma#3Ls<~HS5A%p&c=%i zmI|$q?yo1B%QHJO9iA@nTr+6h(!D)Kl%0j1pu08RmUg=b2>Bs^8!k-8{2lbqH0=An z;(#TxE1TQSTL0m0T3vYff(m;3TM-(=K~4SE5KAmZrnM-MtZ8^6ckWqoIA>aN zG^}`^!OK-X{8xg#?o@~ew@0#AK!I#L?YZ#iT1j?HqIdK9uW8H z^rjJrG3?VpT7)5{eQMU3}UnsCWOr OmQMkAP1F#(=l=mqU_>ea diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png index c5135d52001267958d4e8dfad8d44b74f7cf84a7..2109b8ee9ea35565a61743c62216084c246fb1b0 100644 GIT binary patch delta 8867 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 q0dJ7HMUb;Ykc*R^mO4o1oEdSV-YAL&- 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 ZTTVy=g8*GaFKr87dN&W(v@1sQ{{f2jf0h6M diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png index 8d474be2d6f59a488a0b7166697690b4324b01d5..f5050998c2184f0bbfb2c6aa7ca8a06bd3a3e421 100644 GIT binary patch delta 10617 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 LY0>xq&X4~CxbwGK delta 11109 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 OIxsMH-p|XES`Kd)UBo~D diff --git a/pkgdown/favicon/apple-touch-icon.png b/pkgdown/favicon/apple-touch-icon.png index 08d9eb572c5569aacedee03b711319041315447a..f5050998c2184f0bbfb2c6aa7ca8a06bd3a3e421 100644 GIT binary patch delta 10617 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 LY0>xq&X4~CxbwGK delta 11109 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 delta 702 zcmeyxzM6ePLcL>vPlzi61H%VS)$i;oe^{0Nuqgd!RlXvizFJZXNd9L~yv?V!QCzE9 zS?@oC4&$iBg^zF$P6PhKZP$1qIW;Jl!Exr$zeir#4H8eCa(Kj)6HZaOp(*rsvR}ExY zj=Db39o7bh9`0_At}e@^w2laCY!cVZRM)pPG^$ZIoNwabZ($XyWw2CAYlWm%eU6&G zp^=fjqvN6}lh>A2IvX0h=^Odz83yPYdgvLt>lt>}*WI~sd1_m$gMpEip^=r5k&UrQ zSz-Rdd9%FT-3^S4EX>UQ|Nnoan{y8^7}ZLG{DOfr0|T4q5icgg*>4$DI-hl^ik9B~ z_b=(^&x}7{@blllXMCoS>N_yG5@VCTlTEiyBylfWp?m%E(yTz`)ADpp&Oy%H$|!8BCcU MfhRO3cQfY$0B+^&9smFU diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png index 0e621d459809b22cd9b23f6e449f98118d0090e5..92c907b4c7397110d0b84c0e440d8f865dc29bbd 100644 GIT binary patch delta 1515 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 diff --git a/pkgdown/favicon/favicon.ico b/pkgdown/favicon/favicon.ico index ec6ec640fe9a2360caa61f2342741a3e435d62f2..269055931a8dbee4748a94e4ed980fb21f3a32a4 100644 GIT binary patch literal 15086 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 literal 15086 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 VU&ekB_q`vpsv}|@)@2*E{XYxary>9V
  • -
    - - - - -
    - -
    -
    - - -
    -

    This function creates a connection object which stores parameters and a user ID if available.

    -
    - -
    fleaflicker_connect(
    -  season = NULL,
    -  league_id = NULL,
    -  user_email = NULL,
    -  user_agent = NULL,
    -  rate_limit = TRUE,
    -  rate_limit_number = NULL,
    -  rate_limit_seconds = NULL,
    -  ...
    -)
    - -

    Arguments

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    season

    Season to access on Fleaflicker - if missing, will guess based on system date (current year if March or later, otherwise previous year)

    league_id

    League ID

    user_email

    Optional - attempts to get user's user ID by email

    user_agent

    User agent to self-identify (optional)

    rate_limit

    TRUE by default - turn off rate limiting with FALSE

    rate_limit_number

    number of calls per rate_limit_seconds, suggested is under 1000 calls per 60 seconds

    rate_limit_seconds

    number of seconds as denominator for rate_limit

    ...

    other arguments (for other methods, for R compat)

    - -

    Value

    - -

    a list that stores Fleaflicker connection objects

    - -
    - -
    - - - -