#' GamedayGrabber
#'
#' This function grabs games!
#'
#'
#' @export
GamedayGrabber <- function(){
require(tidyr)
require(magrittr)
current_date <- as.character(Sys.Date())
dri <- RSelenium::rsDriver(browser = c("chrome"), chromever = "77.0.3865.40", verbose = F)
remote <- dri[["client"]]
remote$open()
LineReversalsFunc <- function(sport,startD,endD,d_unit){
start_url2 <- "https://zcodesystem.com/linereversals.php"
remote$navigate(start_url2)
if (sport == "NFL"){
sn <- 3
} else if (sport == "NCAAF"){
sn <- 6
} else if (sport == "NHL"){
sn <- 2
} else if (sport == "MLB"){
sn <- 1
} else if (sport == "NBA"){
sn <- 4
}
print(sn)
sport_paste <- paste("/html/body/div[1]/div[2]/div[1]/div/div[6]/div/span[",sn,"]",sep = "")
sport_button <- remote$findElement(using = 'xpath', value = sport_paste)
sport_button$clickElement()
Sys.sleep(2)
DateSeq <- function(startD,endD,d_unit,format="%d %b %Y"){
dates <- seq(as.Date(startD,format=format),as.Date(endD, format=format), by=d_unit)
format(dates,format)
}
date_list <- DateSeq(startD,endD,d_unit)
print(date_list)
date_data <- list()
print(date_data)
print("Above is date being scraped")
date_in <- remote$findElement(using = 'class', value = 'hasDatepicker')
date_in$clearElement()
date_in$sendKeysToElement(list(date_list[1]))
date_in$sendKeysToElement(list("\uE007"))
Sys.sleep(3)
print(date_list[1])
response_page <- xml2::read_html(unlist(remote$getPageSource()), encoding = "UTF-8")
response_tables <- response_page %>% rvest::html_nodes('table') %>% rvest::html_table(fill = TRUE)
table2 <- response_tables[[2]]
print(length(table2[,1]))
print("above is length table2")
if(length(table2[,1]) <= 2){ print("This day doesn't have games")}
else {
table3 <- table2[-1:-2,]
table4 <- data.frame(table3, stringsAsFactors = FALSE)
Sys.sleep(1)
test_s <- data.frame(table4$X2, stringsAsFactors = FALSE)
test_split <- test_s[[1]] %>% strsplit(split = "[:%(),]")
## Row Remover
bad_rows <- c()
remove_badrows <- function(input_data,subset){
for(t in 1:length(subset)){
if(length(subset[[t]]) == 1){
bad_rows[t] <- t
}
}
if(length(bad_rows>0)){
bad_frame <- data.frame(bad_rows)
row_index <- ggplot2::remove_missing(bad_frame,na.rm = TRUE)
output <- input_data[-row_index,]} else {input_data}
}
clean_data <- remove_badrows(table4,test_split)
## Split Data columns
Dates <- data.frame(clean_data$X1, stringsAsFactors = F)
TM1 <- data.frame(clean_data$X2, stringsAsFactors = F)
TM1ML <- data.frame(clean_data$X3, stringsAsFactors = F)
TM1O <- data.frame(clean_data$X14, stringsAsFactors = F)
TM1U <- data.frame(clean_data$X15, stringsAsFactors = F)
TM1SP <- data.frame(clean_data$X6, stringsAsFactors = F)
TM2 <- data.frame(clean_data$X8, stringsAsFactors = F)
TM2ML <- data.frame(clean_data$X9, stringsAsFactors = F)
TM2O <- data.frame(clean_data$X14, stringsAsFactors = F)
TM2U <- data.frame(clean_data$X15, stringsAsFactors = F)
TM2SP <- data.frame(clean_data$X12, stringsAsFactors = F)
Score <- data.frame(clean_data$X18, stringsAsFactors = F)
## Split TM1, TM2
TM1split <- TM1[[1]] %>% strsplit(split = "[:%(),]")
TM2split <- TM2[[1]] %>% strsplit(split = "[:%(),]")
## Split each row function
Splitter <- function(dataIN){
row_mat <- list()
test <- list()
dummy <- matrix(nrow = length(dataIN), ncol = length(dataIN[[1]]))
for (h in 1:length(dataIN)){
test <- dataIN[[h]]
dummy[h,] <- matrix(test, nrow = 1, ncol = length(dataIN[[1]]), byrow = TRUE)
}
output_Splitter <- data.frame(dummy, stringsAsFactors = FALSE)
}
## Apply splitter to Teams1 Teams2
Team1_final <- Splitter(TM1split)
Team2_final <- Splitter(TM2split)
Sys.sleep(2)
## Cbind all columns to TM1 TM2
TM1rows <- cbind(Dates,Team1_final,TM1ML,TM1SP,TM1O,TM1U)
TM2rows <- cbind(Dates,Team2_final,TM2ML,TM2SP,TM2O,TM2U)
## Delete unecessary columns
delete_bad_columns <- function(INPUTdata){
output <- INPUTdata[,c(-4,-6,-8,-9,-11,-14,-17,-19,-22,-26,-29)]
}
TM1_final <- delete_bad_columns(TM1rows)
TM2_final <- delete_bad_columns(TM2rows)
## Rbind TM1 TM2 to stacked columns
final_data1 <- list(TM1_final,TM2_final)
final_data <- data.table::rbindlist(final_data1)
date_data[[1]] <- final_data
}
final_out <- data.table::rbindlist(date_data,fill = TRUE)
colnames(final_out) <- c("Date","Team","ML","SP","OV","UN","MLT","MLTR","SPT","SPTR","OVT","UNT","OUTR","PBR","SPTD","SPTDR","MLTD","MLTDR","OUTD","OUTDR","MLodd","Spreadd","OverL","UnderL")
return(final_out)
}
h <- as.character(Sys.Date())
h52 <- stringr::str_split(h,pattern = "-",simplify = TRUE)
hdd <- paste(h52[1],h52[2],h52[3],sep = "-")
hdd <- as.Date(hdd)
s <- c(format="%d %b %Y")
current_date <- format(hdd,s)
LineRev <- LineReversalsFunc(sport = "NBA",current_date,current_date,"days")
half <- length(LineRev$Date)/2
end <- length(LineRev$Date)
Today <- transform(LineRev, H1A0="")
Today[1:half,]$H1A0 <- "0"
Today[half+1:end,]$H1A0 <- "1"
final_trim <- function(data){
SP <- data$Spreadd
OV <- data$OverL
UN <- data$UnderL
SPodd <- stringr::str_sub(SP,1,5)
SPline <- stringr::str_sub(SP,6)
OV <- stringr::str_split(OV, pattern = "\\(", simplify = TRUE)
OV[,1] <- stringr::str_remove_all(OV[,1], pattern = "Over ")
OV[,2] <- stringr::str_remove_all(OV[,2], pattern = "\\)")
colnames(OV) <- c("Total22","OverOdd")
UN <- stringr::str_split(UN, pattern = "\\(", simplify = TRUE)
UN[,1] <- stringr::str_remove_all(UN[,1], pattern = "Under ")
UN[,2] <- stringr::str_remove_all(UN[,2], pattern = "\\)")
colnames(UN) <- c("Total2","UnderOdd")
new_data <- cbind(data,SPodd,SPline,OV,UN)
new_data$Team <- stringr::str_remove_all(new_data$Team, pattern = "ML public")
new_data$Team <- stringr::str_remove_all(new_data$Team, pattern = "ML tickets")
new_data$PBR <- stringr::str_remove_all(new_data$PBR,pattern = "Spread tickets difference")
return(new_data)
}
dataLR <- final_trim(Today)
write.csv(dataLR,"cur_date.csv")
bb <- read.csv("cur_date.csv")
t <- bb
if(is.numeric(t$MLTR)==FALSE){
bad <- c(which(t$MLTR=="Spread public"))
t <- t[-c(bad),]
}
write.csv(t,"ass.csv")
t <- read.csv("ass.csv")
turday <- transform(t, D0F1=ifelse(t$SPline>0,0,1))
turday$H1A0 <- as.factor(turday$H1A0)
turday$D0F1 <- as.factor(turday$D0F1)
remote$close()
dri$server$stop()
return(turday)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.