-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstandings.R
152 lines (122 loc) · 5.76 KB
/
standings.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# install.packages("rvest")
# install.packages("XML")
source("~/Documents/Projects/fantasy-hockey/helpers.R")
#* @get /initialize
initialize <- function(period=10){
library("rvest")
library("XML")
TEAMS<-c("Devin", "Matt", "Evan", "Dave", "Brett", "Jory", "Gary", "Carl", "Kyle", "Ryan", "Tanner")
period<-as.numeric(period)
days <- data.frame(matrix(nrow=period+1,ncol=1))
pointsTotal <- data.frame(matrix(nrow=period+1, ncol=0))
pointsSkater <- data.frame(matrix(nrow=period+1, ncol=0))
pointsGoalie <- data.frame(matrix(nrow=period+1, ncol=0))
for(team in 1:length(TEAMS)){
pointsTotal <- cbind(pointsTotal,NA)
pointsSkater<- cbind(pointsSkater,NA)
pointsGoalie<- cbind(pointsGoalie,NA)
}
colnames(days)<-c("day")
colnames(pointsTotal)<-paste(TEAMS,"t",sep="-")
colnames(pointsSkater)<-paste(TEAMS,"s",sep="-")
colnames(pointsGoalie)<-paste(TEAMS,"g",sep="-")
days <- 0:period
pointsTotal[1,] <- c(0)
pointsSkater[1,] <- c(0)
pointsGoalie[1,] <- c(0)
for(scoringPeriod in 1:period){
for(teamId in 1:length(TEAMS)){
url <- paste("http://games.espn.com/fhl/clubhouse?leagueId=34619&teamId=",teamId,"&seasonId=2018&scoringPeriodId=", scoringPeriod, sep="")
day <- read_html(url)
skaters <- html_nodes(day, xpath = '//*[@id="playertable_0"]')
skaters<-as(skaters, "character")
skaters<-readHTMLTable(skaters)
skaters<-as.data.frame(skaters)
skaters <- data.frame(lapply(skaters, as.character), stringsAsFactors=FALSE)
colnames(skaters)<-skaters[1,]
skaters<-skaters[-1,]
skaters<-Filter(function(x) !(all(x=="")), skaters)
goalies <- html_nodes(day, xpath = '//*[@id="playertable_1"]')
goalies<-as(goalies, "character")
goalies<-readHTMLTable(goalies)
goalies<-as.data.frame(goalies)
goalies <- data.frame(lapply(goalies, as.character), stringsAsFactors=FALSE)
colnames(goalies)<-goalies[1,]
goalies<-goalies[-1,]
goalies<-Filter(function(x) !(all(x=="")), goalies)
skatersTotals<-skaters[skaters$SLOT == "",]
colnames(skatersTotals)<-colnames(skatersTotals)[-(1:2)]
skatersTotals<-skatersTotals[,-(c(1:2,(ncol(skatersTotals)-3):ncol(skatersTotals)))]
colnames(skatersTotals)[1:2]<-""
# skatersTotals[1,]$PTS
pointsSkater[scoringPeriod+1,teamId]<-as.numeric(skatersTotals[1,]$PTS)+as.numeric(pointsSkater[scoringPeriod,teamId])
goaliesTotals<-goalies[goalies$SLOT == "",]
colnames(goaliesTotals)<-colnames(goaliesTotals)[-(1:2)]
goaliesTotals<-goaliesTotals[,-(c(1:2,(ncol(goaliesTotals)-3):ncol(goaliesTotals)))]
colnames(goaliesTotals)[1:2]<-""
# goaliesTotals[1,]$PTS
pointsGoalie[scoringPeriod+1,teamId]<-as.numeric(goaliesTotals[1,]$PTS)+as.numeric(pointsGoalie[scoringPeriod,teamId])
pointsTotal[scoringPeriod+1,teamId]<-pointsSkater[scoringPeriod+1,teamId]+pointsGoalie[scoringPeriod+1,teamId]
}
}
data <- cbind(days, pointsTotal, pointsSkater, pointsGoalie)
fSave(data)
fBackup(period)
paste("initialized to scoring period ", period)
}
#* @get /update
update <- function(newPeriod=10){
library("rvest")
library("XML")
TEAMS<-c("Devin", "Matt", "Evan", "Dave", "Brett", "Jory", "Gary", "Carl", "Kyle", "Ryan", "Tanner")
newPeriod<-as.numeric(newPeriod)
data <- fLoad()
days <- data[,1]
pointsTotal <- data[,2:12]
pointsSkater <- data[,13:23]
pointsGoalie <- data[,24:34]
currentPeriod <- nrow(pointsTotal)-1
for(scoringPeriod in (currentPeriod+1):newPeriod){
days <- c(days,scoringPeriod)
pointsTotal <- rbind(pointsTotal,NA)
pointsSkater <- rbind(pointsSkater,NA)
pointsGoalie <- rbind(pointsGoalie,NA)
for(teamId in 1:length(TEAMS)){
url <- paste("http://games.espn.com/fhl/clubhouse?leagueId=34619&teamId=",teamId,"&seasonId=2018&scoringPeriodId=", scoringPeriod, sep="")
day <- read_html(url)
skaters <- html_nodes(day, xpath = '//*[@id="playertable_0"]')
skaters<-as(skaters, "character")
skaters<-readHTMLTable(skaters)
skaters<-as.data.frame(skaters)
skaters <- data.frame(lapply(skaters, as.character), stringsAsFactors=FALSE)
colnames(skaters)<-skaters[1,]
skaters<-skaters[-1,]
skaters<-Filter(function(x) !(all(x=="")), skaters)
goalies <- html_nodes(day, xpath = '//*[@id="playertable_1"]')
goalies<-as(goalies, "character")
goalies<-readHTMLTable(goalies)
goalies<-as.data.frame(goalies)
goalies <- data.frame(lapply(goalies, as.character), stringsAsFactors=FALSE)
colnames(goalies)<-goalies[1,]
goalies<-goalies[-1,]
goalies<-Filter(function(x) !(all(x=="")), goalies)
skatersTotals<-skaters[skaters$SLOT == "",]
colnames(skatersTotals)<-colnames(skatersTotals)[-(1:2)]
skatersTotals<-skatersTotals[,-(c(1:2,(ncol(skatersTotals)-3):ncol(skatersTotals)))]
colnames(skatersTotals)[1:2]<-""
# skatersTotals[1,]$PTS
pointsSkater[scoringPeriod+1,teamId]<-as.numeric(skatersTotals[1,]$PTS)+as.numeric(pointsSkater[scoringPeriod,teamId])
goaliesTotals<-goalies[goalies$SLOT == "",]
colnames(goaliesTotals)<-colnames(goaliesTotals)[-(1:2)]
goaliesTotals<-goaliesTotals[,-(c(1:2,(ncol(goaliesTotals)-3):ncol(goaliesTotals)))]
colnames(goaliesTotals)[1:2]<-""
# goaliesTotals[1,]$PTS
pointsGoalie[scoringPeriod+1,teamId]<-as.numeric(goaliesTotals[1,]$PTS)+as.numeric(pointsGoalie[scoringPeriod,teamId])
pointsTotal[scoringPeriod+1,teamId]<-pointsSkater[scoringPeriod+1,teamId]+pointsGoalie[scoringPeriod+1,teamId]
}
}
data <- cbind(days, pointsTotal, pointsSkater, pointsGoalie)
fSave(data)
fBackup(newPeriod)
paste("updated to scoring period ", newPeriod)
}