Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update readme #35

Merged
merged 2 commits into from
Jul 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,12 @@

S3method(ff_draft,default)
S3method(ff_draft,mfl_conn)
S3method(ff_franchises,default)
S3method(ff_franchises,mfl_conn)
S3method(ff_league,default)
S3method(ff_league,mfl_conn)
S3method(ff_playerscores,default)
S3method(ff_playerscores,mfl_conn)
S3method(ff_rosters,default)
S3method(ff_rosters,mfl_conn)
S3method(ff_scoring,default)
S3method(ff_scoring,mfl_conn)
S3method(ff_transactions,default)
S3method(ff_transactions,mfl_conn)
S3method(print,mfl_api)
Expand All @@ -23,10 +19,14 @@ export(dp_values)
export(ff_connect)
export(ff_draft)
export(ff_franchises)
export(ff_franchises.default)
export(ff_franchises.mfl_conn)
export(ff_league)
export(ff_playerscores)
export(ff_rosters)
export(ff_scoring)
export(ff_scoring.default)
export(ff_scoring.mfl_conn)
export(ff_transactions)
export(mfl_connect)
export(mfl_getendpoint)
Expand Down
3 changes: 3 additions & 0 deletions R/generics.R
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ ff_scoring <- function(conn){
}

#' @export
#' @rdname ff_scoring
ff_scoring.default <- function(conn){
stop(glue::glue("No method of ff_scoring found for platform: {conn$platform}."))
}
Expand All @@ -103,6 +104,7 @@ ff_rosters <- function(conn){
}

#' @export
#'
ff_rosters.default <- function(conn){
stop(glue::glue("No method of ff_rosters found for platform: {conn$platform}."))
}
Expand All @@ -123,6 +125,7 @@ ff_franchises <- function(conn){
UseMethod("ff_franchises")
}

#' @rdname ff_franchises
#' @export
ff_franchises.default <- function(conn){
stop(glue::glue("No method of ff_franchises found for platform: {conn$platform}."))
Expand Down
4 changes: 2 additions & 2 deletions R/mfl_draft.R
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ff_draft.mfl_conn <- function(conn,...){
dplyr::select('franchise_id','franchise_name'),
by = c('franchise_id')) %>%
dplyr::left_join(
mfl_players() %>%
mfl_players(conn) %>%
dplyr::select('player_id','player_name','pos','age','team'),
by = c('player_id')) %>%
dplyr::transmute(
Expand All @@ -58,7 +58,7 @@ ff_draft.mfl_conn <- function(conn,...){
dplyr::select('franchise_id','division','division_name','franchise_name'),
by = c("franchise_id")) %>%
dplyr::left_join(
mfl_players() %>%
mfl_players(conn) %>%
dplyr::select('player_id','player_name','pos','age','team'),
by = c('player_id')) %>%
dplyr::transmute(
Expand Down
13 changes: 10 additions & 3 deletions R/mfl_rosters.R
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ ff_rosters.mfl_conn <- function(conn){
"roster_status" = .data$status) %>%
dplyr::select("franchise_id","player_id",dplyr::everything())

players_endpoint <- mfl_players() %>%
players_endpoint <- mfl_players(conn) %>%
dplyr::select("player_id","player_name","pos","team","age","draft_year","draft_round")

franchises_endpoint <- ff_franchises(conn) %>%
Expand All @@ -48,15 +48,22 @@ ff_rosters.mfl_conn <- function(conn){
#' A cached table of MFL players. Will store in memory for each session!
#' (via memoise in zzz.R)
#'
#' @param conn optionally, pass in a conn object generated by ff_connect to receive league-specific players
#'
#' @examples
#' player_list <- mfl_players()
#' dplyr::sample_n(player_list,5)
#'
#' @return a dataframe containing all ~2000+ players in the MFL database
#' @export

mfl_players <- function() {
mfl_connect(.fn_choose_season()) %>%
mfl_players <- function(conn = NULL) {

if(!is.null(conn) && class(conn)!="mfl_conn"){stop("conn must be generated by 'mfl_connect()' and have type 'mfl_conn'")}

if(is.null(conn)){conn <- mfl_connect(.fn_choose_season())}

conn %>%
mfl_getendpoint("players",DETAILS = 1) %>%
purrr::pluck("content", "players", "player") %>%
tibble::tibble() %>%
Expand Down
44 changes: 31 additions & 13 deletions R/mfl_transactions.R
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ ff_transactions.mfl_conn <- function(conn,...){
tidyr::unnest_wider(1) %>%
dplyr::mutate_at('timestamp',~as.numeric(.x) %>% lubridate::as_datetime())

if(nrow(df_transactions)==0){return(NULL)}

if(!"comments" %in% names(df_transactions)) df_transactions$comments <- NA_character_

transaction_functions <- list(
Expand All @@ -38,8 +40,17 @@ ff_transactions.mfl_conn <- function(conn,...){
purrr::map_dfr(transaction_functions,rlang::exec,df_transactions) %>%
dplyr::arrange(dplyr::desc(.data$timestamp)) %>%
dplyr::left_join(
dplyr::select(mfl_players(),"player_id","player_name","pos","team"),
by = "player_id")
dplyr::select(mfl_players(conn),"player_id","player_name","pos","team"),
by = "player_id") %>%
dplyr::left_join(
dplyr::select(ff_franchises(conn),"franchise_id","franchise_name"),
by = c("franchise"="franchise_id")
) %>%
dplyr::select(dplyr::any_of(c("timestamp","type","type_desc",
"franchise_id"="franchise","franchise_name",
"player_id","player_name","pos","team",
"bbid_spent","trade_partner","comments")),
dplyr::everything())

}

Expand Down Expand Up @@ -82,22 +93,29 @@ ff_transactions.mfl_conn <- function(conn,...){
dplyr::mutate_at(c('franchise1_gave_up','franchise2_gave_up'),~stringr::str_replace(.x,",$","")) %>%
dplyr::mutate_at(c('franchise1_gave_up','franchise2_gave_up'),~stringr::str_split(.x,","))

parsed_trades %>%
df <- parsed_trades %>%
dplyr::select(
.data$timestamp,
.data$type,
'franchise'=.data$franchise2,
'franchise2'=.data$franchise,
'franchise1_gave_up'=.data$franchise2_gave_up,
'franchise2_gave_up'=.data$franchise1_gave_up,
.data$comments) %>%
'franchise' = .data$franchise2,
'franchise2' = .data$franchise,
'franchise1_gave_up' = .data$franchise2_gave_up,
'franchise2_gave_up' = .data$franchise1_gave_up,
.data$comments
) %>%
dplyr::bind_rows(parsed_trades) %>%
dplyr::rename('trade_partner' = .data$franchise2,
'traded_for' = .data$franchise2_gave_up,
'traded_away' = .data$franchise1_gave_up) %>%
dplyr::arrange(dplyr::desc(.data$timestamp))

dplyr::rename(
'trade_partner' = .data$franchise2,
'traded_for' = .data$franchise2_gave_up,
'traded_away' = .data$franchise1_gave_up
) %>%
dplyr::arrange(dplyr::desc(.data$timestamp)) %>%
tidyr::pivot_longer(c('traded_away', 'traded_for'),
names_to = "type_desc",
values_to = "player_id") %>%
tidyr::unnest("player_id")

return(df)
}

## FREE AGENTS ##
Expand Down
7 changes: 7 additions & 0 deletions R/zzz.R
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
# Timeout lengths still up for discussion
mfl_players <<- memoise::memoise(mfl_players,~ memoise::timeout(86400))
mfl_allrules <<- memoise::memoise(mfl_allrules,~ memoise::timeout(86400))
dp_values <<- memoise::memoise(dp_values, ~ memoise::timeout(86400))
dp_playerids <<- memoise::memoise(dp_playerids, ~ memoise::timeout(86400))

ff_franchises <<- memoise::memoise(ff_franchises,~ memoise::timeout(86400))

ff_scoring <<- memoise::memoise(ff_scoring, ~ memoise::timeout(3600))


env <- rlang::env(
user_agent = glue::glue(
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<!-- badges: start -->
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental)
[![Codecov test coverage](https://codecov.io/gh/DynastyProcess/ffscrapr/branch/master/graph/badge.svg)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=master)
[![Codecov test coverage](https://codecov.io/gh/DynastyProcess/ffscrapr/branch/main/graph/badge.svg)](https://codecov.io/gh/DynastyProcess/ffscrapr?branch=main)
[![R build status](https://github.com/DynastyProcess/ffscrapr/workflows/R-CMD-check/badge.svg)](https://github.com/DynastyProcess/ffscrapr/actions)
<!-- badges: end -->

Expand Down
5 changes: 4 additions & 1 deletion man/ff_franchises.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion man/ff_scoring.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion man/mfl_players.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 24 additions & 0 deletions tests/testthat/api.myfantasyleague.com/2019/export-5b11ff.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
structure(list(url = "https://www61.myfantasyleague.com/2019/export?TYPE=league&L=54040&JSON=1",
status_code = 200L, headers = structure(list(date = "Mon, 27 Jul 2020 11:34:09 GMT",
server = "Apache/2.4.18 (Unix) mod_apreq2-20090110/2.8.0 mod_perl/2.0.9 Perl/v5.10.1",
vary = "Accept-Encoding", `content-encoding` = "gzip",
`content-length` = "1180", `content-type` = "application/json; charset=utf-8"), class = c("insensitive",
"list")), all_headers = list(list(status = 302L, version = "HTTP/1.1",
headers = structure(list(date = "Mon, 27 Jul 2020 11:34:09 GMT",
server = "Apache/2.4.18 (Unix) mod_apreq2-20090110/2.8.0 mod_perl/2.0.9 Perl/v5.10.1",
location = "https://www61.myfantasyleague.com/2019/export?TYPE=league&L=54040&JSON=1",
`content-length` = "0", targethost = "www70"), class = c("insensitive",
"list"))), list(status = 200L, version = "HTTP/1.1",
headers = structure(list(date = "Mon, 27 Jul 2020 11:34:09 GMT",
server = "Apache/2.4.18 (Unix) mod_apreq2-20090110/2.8.0 mod_perl/2.0.9 Perl/v5.10.1",
vary = "Accept-Encoding", `content-encoding` = "gzip",
`content-length` = "1180", `content-type` = "application/json; charset=utf-8"), class = c("insensitive",
"list")))), cookies = structure(list(domain = logical(0),
flag = logical(0), path = logical(0), secure = logical(0),
expiration = structure(numeric(0), class = c("POSIXct",
"POSIXt")), name = logical(0), value = logical(0)), row.names = integer(0), class = "data.frame"),
content = charToRaw("{\"version\":\"1.0\",\"league\":{\"currentWaiverType\":\"BBID_FCFS\",\"playerLimitUnit\":\"LEAGUE\",\"taxiSquad\":\"3\",\"endWeek\":\"17\",\"maxWaiverRounds\":\"8\",\"draft_kind\":\"email\",\"lockout\":\"No\",\"nflPoolStartWeek\":\"1\",\"franchises\":{\"count\":\"14\",\"franchise\":[{\"logo\":\"https://i.imgur.com/purgTuY.png\",\"icon\":\"https://i.imgur.com/purgTuY.png\",\"abbrev\":\"PIKA\",\"bbidAvailableBalance\":\"32.00\",\"name\":\"Team Pikachu\",\"id\":\"0001\",\"waiverSortOrder\":\"2\"},{\"logo\":\"https://i.imgur.com/spJaesT.png\",\"icon\":\"https://i.imgur.com/spJaesT.png\",\"abbrev\":\"SIMN\",\"bbidAvailableBalance\":\"70.00\",\"name\":\"Team Simon Belmont\",\"id\":\"0002\",\"waiverSortOrder\":\"4\"},{\"logo\":\"https://i.imgur.com/UW6ES3y.png\",\"icon\":\"https://i.imgur.com/UW6ES3y.png\",\"abbrev\":\"CFCN\",\"bbidAvailableBalance\":\"5.00\",\"name\":\"Team Captain Falcon\",\"id\":\"0003\",\"waiverSortOrder\":\"13\"},{\"logo\":\"https://i.imgur.com/Z51OK27.png\",\"icon\":\"https://i.imgur.com/Z51OK27.png\",\"abbrev\":\"ICE\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Ice Climbers\",\"id\":\"0004\",\"waiverSortOrder\":\"14\"},{\"logo\":\"https://i.imgur.com/wENaJKg.png\",\"icon\":\"https://i.imgur.com/wENaJKg.png\",\"abbrev\":\"DRM\",\"bbidAvailableBalance\":\"117.00\",\"name\":\"Team Dr. Mario\",\"id\":\"0005\",\"waiverSortOrder\":\"1\"},{\"logo\":\"https://i.imgur.com/5LnPtDi.png\",\"icon\":\"https://i.imgur.com/5LnPtDi.png\",\"abbrev\":\"KDDD\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team King Dedede\",\"id\":\"0006\",\"waiverSortOrder\":\"7\"},{\"logo\":\"https://i.imgur.com/eift9jP.png\",\"icon\":\"https://i.imgur.com/eift9jP.png\",\"abbrev\":\"KRBY\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Kirby\",\"id\":\"0007\",\"waiverSortOrder\":\"6\"},{\"logo\":\"https://i.imgur.com/AMtyw0W.png\",\"icon\":\"https://i.imgur.com/AMtyw0W.png\",\"abbrev\":\"FOX\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Fox\",\"id\":\"0008\",\"waiverSortOrder\":\"12\"},{\"logo\":\"https://i.imgur.com/0zprlfO.png\",\"icon\":\"https://i.imgur.com/0zprlfO.png\",\"abbrev\":\"LINK\",\"bbidAvailableBalance\":\"14.00\",\"name\":\"Team Link\",\"id\":\"0009\",\"waiverSortOrder\":\"11\"},{\"logo\":\"https://i.imgur.com/RvsGTLu.png\",\"icon\":\"https://i.imgur.com/RvsGTLu.png\",\"abbrev\":\"YSHI\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Yoshi\",\"id\":\"0010\",\"waiverSortOrder\":\"3\"},{\"logo\":\"https://i.imgur.com/zDt3q5J.png\",\"icon\":\"https://i.imgur.com/zDt3q5J.png\",\"abbrev\":\"DDY\",\"bbidAvailableBalance\":\"18.00\",\"name\":\"Team Diddy Kong\",\"id\":\"0011\",\"waiverSortOrder\":\"5\"},{\"logo\":\"https://i.imgur.com/GHB1pVY.png\",\"icon\":\"https://i.imgur.com/GHB1pVY.png\",\"abbrev\":\"MEW2\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Mewtwo\",\"id\":\"0012\",\"waiverSortOrder\":\"8\"},{\"logo\":\"https://i.imgur.com/lp2XsQE.png\",\"icon\":\"https://i.imgur.com/lp2XsQE.png\",\"bbidAvailableBalance\":\"195.00\",\"name\":\"Team Ness\",\"id\":\"0013\",\"waiverSortOrder\":\"10\"},{\"logo\":\"https://i.imgur.com/AQJ99hs.png\",\"icon\":\"https://i.imgur.com/AQJ99hs.png\",\"abbrev\":\"LUIG\",\"bbidAvailableBalance\":\"0.00\",\"name\":\"Team Luigi\",\"id\":\"0014\",\"waiverSortOrder\":\"9\"}]},\"standingsSort\":\"PCT,PTS,\",\"draftPlayerPool\":\"Rookie\",\"id\":\"54040\",\"nflPoolType\":\"Confidence\",\"history\":{\"league\":[{\"url\":\"https://www61.myfantasyleague.com/2019/home/54040\",\"year\":\"2019\"},{\"url\":\"https://www61.myfantasyleague.com/2018/home/54040\",\"year\":\"2018\"},{\"url\":\"https://www61.myfantasyleague.com/2020/home/54040\",\"year\":\"2020\"}]},\"rosterSize\":\"25\",\"name\":\"The Super Smash Bros Dynasty League\",\"bbidSeasonLimit\":\"200\",\"draftTimer\":\"ON\",\"bbidIncrement\":\"1\",\"mobileAlerts\":\"\",\"draftLimitHours\":\"12:00\",\"starters\":{\"count\":\"9\",\"position\":[{\"name\":\"QB\",\"limit\":\"1\"},{\"name\":\"RB\",\"limit\":\"1-6\"},{\"name\":\"WR\",\"limit\":\"1-6\"},{\"name\":\"TE\",\"limit\":\"1-6\"}],\"idp_starters\":\"\"},\"nflPoolEndWeek\":\"17\",\"bestLineup\":\"No\",\"precision\":\"2\",\"lastRegularSeasonWeek\":\"16\",\"survivorPool\":\"Yes\",\"bbidTiebreaker\":\"TURN\",\"usesContractYear\":\"0\",\"injuredReserve\":\"3\",\"bbidConditional\":\"No\",\"startWeek\":\"1\",\"survivorPoolStartWeek\":\"1\",\"survivorPoolEndWeek\":\"17\",\"rostersPerPlayer\":\"1\",\"h2h\":\"YES\",\"usesSalaries\":\"0\",\"baseURL\":\"https://www61.myfantasyleague.com\",\"loadRosters\":\"email_draft\"},\"encoding\":\"utf-8\"}"),
date = structure(1595849649, class = c("POSIXct", "POSIXt"
), tzone = "GMT"), times = c(redirect = 0.240845, namelookup = 0.000443,
connect = 0.030743, pretransfer = 0.10044, starttransfer = 0.418247,
total = 0.418823)), class = "response")
14 changes: 7 additions & 7 deletions tests/testthat/api.myfantasyleague.com/2019/export-9df682.R

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions tests/testthat/api.myfantasyleague.com/2019/export-f5d34a.R

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions tests/testthat/api.myfantasyleague.com/2020/export-265296.R

Large diffs are not rendered by default.

34 changes: 19 additions & 15 deletions tests/testthat/api.myfantasyleague.com/2020/export-51a867.R

Large diffs are not rendered by default.

34 changes: 19 additions & 15 deletions tests/testthat/api.myfantasyleague.com/2020/export-53ace0.R

Large diffs are not rendered by default.

Loading