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

add features: better transactions table, memoise more, conn arg for players endpoint #34

Merged
merged 27 commits into from
Jul 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
fa865a2
add progress on auction and trade
tanho63 Jul 5, 2020
7b4fe3c
add work on transactions
tanho63 Jul 9, 2020
9acef3e
patch scoring bug
tanho63 Jul 17, 2020
4c96ef5
Merge branch 'dev' of https://github.com/DynastyProcess/ffscrapr into…
tanho63 Jul 17, 2020
ba7499e
add playerscores feature
tanho63 Jul 26, 2020
3894da5
add updated docs
tanho63 Jul 26, 2020
281f941
cleanup, bump ver, switch actions workflow
tanho63 Jul 26, 2020
c042ddf
convert master to main
tanho63 Jul 26, 2020
0459564
keep patching
tanho63 Jul 26, 2020
c2d3f0f
Merge branch 'dev' into feature/transactions
tanho63 Jul 26, 2020
6db33ea
add ir, taxi, fcfs fa
tanho63 Jul 26, 2020
3e5cfa0
add latest version of transactions
tanho63 Jul 27, 2020
9e69930
Merge branch 'feature/transactions' into dev
tanho63 Jul 27, 2020
ee21432
cleanup for check
tanho63 Jul 27, 2020
5a3de2c
Increment version number
tanho63 Jul 27, 2020
b896ebc
resolve conflicts
tanho63 Jul 27, 2020
84b0c83
Merge branch 'main' into dev
tanho63 Jul 27, 2020
40fa8df
reorg tests
tanho63 Jul 27, 2020
3e6b747
change trades to long
tanho63 Jul 27, 2020
ff51ef8
patch everything() bug
tanho63 Jul 27, 2020
b3007c0
reorg column names, check tests
tanho63 Jul 27, 2020
627cced
Merge branch 'feature/tradetrans' into dev
tanho63 Jul 27, 2020
2056f3e
add things to memoise
tanho63 Jul 27, 2020
3241b06
Merge branch 'feature/memoise2' into dev
tanho63 Jul 27, 2020
0b06847
add conn arg to players to pull in leaguespecific custom and correct …
tanho63 Jul 27, 2020
a306fe2
Merge branch 'feature/playersdetails' into dev
tanho63 Jul 27, 2020
f88a6f4
add missing entries to man
tanho63 Jul 27, 2020
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
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